comparison src/org/tmatesoft/hg/core/HgUpdateConfigCommand.java @ 483:e31e85cf4d4c

Handle include and unset directives in config files
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Tue, 07 Aug 2012 19:14:53 +0200
parents 31a89587eb04
children b3c16d1aede0
comparison
equal deleted inserted replaced
482:6c67debed07e 483:e31e85cf4d4c
41 private final File configFile; 41 private final File configFile;
42 42
43 private Map<String,List<String>> toRemove; 43 private Map<String,List<String>> toRemove;
44 private Map<String,Map<String,String>> toSet; 44 private Map<String,Map<String,String>> toSet;
45 45
46 private HgUpdateConfigCommand(File configurationFile) { 46 private final SessionContext sessionCtx;
47
48 private HgUpdateConfigCommand(SessionContext sessionContext, File configurationFile) {
49 sessionCtx = sessionContext;
47 configFile = configurationFile; 50 configFile = configurationFile;
48 } 51 }
49 52
50 public static HgUpdateConfigCommand forRepository(HgRepository hgRepo) { 53 public static HgUpdateConfigCommand forRepository(HgRepository hgRepo) {
51 // XXX HgRepository to implement SessionContextProvider (with getContext())? 54 // XXX HgRepository to implement SessionContextProvider (with getContext())?
52 return new HgUpdateConfigCommand(new File(HgInternals.getRepositoryDir(hgRepo), "hgrc")); 55 return new HgUpdateConfigCommand(HgInternals.getContext(hgRepo), new File(HgInternals.getRepositoryDir(hgRepo), "hgrc"));
53 } 56 }
54 57
55 public static HgUpdateConfigCommand forUser(SessionContext ctx) { 58 public static HgUpdateConfigCommand forUser(SessionContext ctx) {
56 return new HgUpdateConfigCommand(Internals.getUserConfigurationFileToWrite(ctx)); 59 return new HgUpdateConfigCommand(ctx, Internals.getUserConfigurationFileToWrite(ctx));
57 } 60 }
58 61
59 public static HgUpdateConfigCommand forInstallation(SessionContext ctx) { 62 public static HgUpdateConfigCommand forInstallation(SessionContext ctx) {
60 return new HgUpdateConfigCommand(Internals.getInstallationConfigurationFileToWrite(ctx)); 63 return new HgUpdateConfigCommand(ctx, Internals.getInstallationConfigurationFileToWrite(ctx));
61 } 64 }
62 65
63 /** 66 /**
64 * Remove a property altogether 67 * Remove a property altogether
65 * @return <code>this</code> for convenience 68 * @return <code>this</code> for convenience
116 * 119 *
117 * @throws HgException subclass thereof to indicate specific issue with the command arguments or repository state 120 * @throws HgException subclass thereof to indicate specific issue with the command arguments or repository state
118 */ 121 */
119 public void execute() throws HgException { 122 public void execute() throws HgException {
120 try { 123 try {
121 ConfigFile cfg = new ConfigFile(); 124 ConfigFile cfg = new ConfigFile(sessionCtx);
122 cfg.addLocation(configFile); 125 cfg.addLocation(configFile);
123 if (toRemove != null) { 126 if (toRemove != null) {
124 for (Map.Entry<String,List<String>> s : toRemove.entrySet()) { 127 for (Map.Entry<String,List<String>> s : toRemove.entrySet()) {
125 for (String e : s.getValue()) { 128 for (String e : s.getValue()) {
126 cfg.putString(s.getKey(), e, null); 129 cfg.putString(s.getKey(), e, null);