Add 'lime config NAME VALUE' or 'lime config remove NAME' command support (resolve #1044)

This commit is contained in:
Joshua Granick
2017-09-19 16:47:49 -07:00
parent 3d37cd1c55
commit 2e0ebf1035

View File

@@ -854,7 +854,7 @@ class CommandLineTools {
LogHelper.println (File.getContent (Sys.getEnv ("LIME_CONFIG")));
} else {
} else if (words.length == 1) {
if (config.defines.exists (words[0])) {
@@ -866,6 +866,143 @@ class CommandLineTools {
}
} else {
// TODO: Cleanup
var path = Sys.getEnv ("LIME_CONFIG");
var name = words.shift ();
var value = words.join (" ");
try {
if (!FileSystem.exists (value) && FileSystem.exists (PathHelper.expand (value))) {
value = PathHelper.expand (value);
}
} catch (e:Dynamic) {}
if (FileSystem.exists (path)) {
var doRemove = (name == "remove");
if (doRemove) {
name = value;
}
var configText = File.getContent (path);
var lines = configText.split ("\n");
var findSet = "<set name=\"" + name + "\"";
var findSetenv = "<setenv name=\"" + name + "\"";
var findDefine = "<define name=\"" + name + "\"";
var line, i = 0, index = 0, found = false;
while (i < lines.length) {
line = lines[i];
if ((index = line.indexOf (findSet)) > -1) {
found = true;
if (doRemove) {
lines.splice (i, 1);
continue;
}
lines[i] = line.substr (0, index) + "<set name=\"" + name + "\" value=\"" + value + "\" />";
}
if ((index = line.indexOf (findSetenv)) > -1) {
found = true;
if (doRemove) {
lines.splice (i, 1);
continue;
}
lines[i] = line.substr (0, index) + "<setenv name=\"" + name + "\" value=\"" + value + "\" />";
}
if ((index = line.indexOf (findDefine)) > -1) {
found = true;
if (doRemove) {
lines.splice (i, 1);
continue;
}
lines[i] = line.substr (0, index) + "<define name=\"" + name + "\" value=\"" + value + "\" />";
}
i++;
}
if (!found && !doRemove && lines.length > 2) {
var insertPoint = lines.length - 3;
if (StringTools.trim (lines[lines.length - 1]) == "") {
insertPoint--;
}
if (StringTools.trim (lines[insertPoint + 1]) != "") {
lines.insert (insertPoint + 1, "\t");
}
lines.insert (insertPoint + 1, "\t<define name=\"" + name + "\" value=\"" + value + "\" />");
}
var content = lines.join ("\n");
File.saveContent (path, content);
if (doRemove) {
if (found) {
LogHelper.info ("Removed define \"" + name + "\"");
} else {
LogHelper.info ("There is no define \"" + name + "\"");
}
} else {
LogHelper.info ("Set \"" + name + "\" to \"" + value + "\"");
}
} else {
LogHelper.error ("Cannot find \"" + path + "\"");
}
}
}