mirror of
https://github.com/ClassiCube/MCGalaxy.git
synced 2025-09-09 15:23:28 -04:00
Warnings shouldn't prevent custom command from compiling
This commit is contained in:
parent
69fffc9cce
commit
a96d45a30a
@ -75,10 +75,7 @@ namespace MCGalaxy.Gui.Popups {
|
||||
|
||||
CompilerParameters args = new CompilerParameters();
|
||||
args.GenerateInMemory = true;
|
||||
var result = engine.CompileSource(File.ReadAllText(fileName), args);
|
||||
if (result == null) {
|
||||
Popup.Error("Error compiling files. Check logs for more details."); return;
|
||||
}
|
||||
CompilerResults result = engine.CompileSource(fileName, args);
|
||||
|
||||
if (result.Errors.HasErrors) {
|
||||
foreach (CompilerError err in result.Errors) {
|
||||
|
@ -39,13 +39,12 @@ namespace MCGalaxy.Commands.Scripting {
|
||||
Help(p); return;
|
||||
}
|
||||
|
||||
string path = engine.SourcePath(args[0]);
|
||||
if (!File.Exists(path)) {
|
||||
p.Message("File &9{0} %Snot found.", path); return;
|
||||
}
|
||||
string srcPath = engine.SourcePath(args[0]);
|
||||
string dstPath = IScripting.DllPath(args[0]);
|
||||
|
||||
string dstPath = IScripting.DllPath(args[0]);
|
||||
if (engine.Compile(path, dstPath)) {
|
||||
if (!File.Exists(srcPath)) {
|
||||
p.Message("File &9{0} %Snot found.", srcPath);
|
||||
} else if (engine.Compile(srcPath, dstPath)) {
|
||||
p.Message("Command compiled successfully.");
|
||||
} else {
|
||||
p.Message("%WCompilation error. See " + IScripting.ErrorPath + " for more information.");
|
||||
|
@ -59,14 +59,12 @@ namespace MCGalaxy.Commands.Scripting {
|
||||
string srcPath = "plugins/" + name + engine.Ext;
|
||||
string dstPath = IScripting.PluginPath(name);
|
||||
|
||||
if (File.Exists(srcPath)) {
|
||||
if (engine.Compile(srcPath, dstPath)) {
|
||||
p.Message("Plugin compiled successfully.");
|
||||
} else {
|
||||
p.Message("%WCompilation error. See " + IScripting.ErrorPath + " for more information.");
|
||||
}
|
||||
} else {
|
||||
if (!File.Exists(srcPath)) {
|
||||
p.Message("File &9{0} %Snot found.", srcPath);
|
||||
} else if (engine.Compile(srcPath, dstPath)) {
|
||||
p.Message("Plugin compiled successfully.");
|
||||
} else {
|
||||
p.Message("%WCompilation error. See " + IScripting.ErrorPath + " for more information.");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -72,29 +72,19 @@ namespace MCGalaxy.Scripting {
|
||||
}
|
||||
|
||||
public bool Compile(string srcPath, string dstPath) {
|
||||
StringBuilder sb = null;
|
||||
|
||||
if (!File.Exists(srcPath)) {
|
||||
sb = new StringBuilder();
|
||||
using (StreamWriter w = new StreamWriter(ErrorPath, true)) {
|
||||
AppendHeader(sb, srcPath);
|
||||
sb.AppendLine("File not found: " + srcPath);
|
||||
sb.AppendLine();
|
||||
w.Write(sb.ToString());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
CompilerParameters args = new CompilerParameters();
|
||||
args.GenerateExecutable = false;
|
||||
args.OutputAssembly = dstPath;
|
||||
|
||||
List<string> source = ReadSourceCode(srcPath, args);
|
||||
List<string> source = ReadSource(srcPath, args);
|
||||
CompilerResults results = CompileSource(source.Join(Environment.NewLine), args);
|
||||
if (results.Errors.Count == 0) return true;
|
||||
if (!results.Errors.HasErrors) return true;
|
||||
|
||||
sb = new StringBuilder();
|
||||
AppendHeader(sb, srcPath);
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.AppendLine("############################################################");
|
||||
sb.AppendLine("Errors when compiling " + srcPath);
|
||||
sb.AppendLine("############################################################");
|
||||
sb.AppendLine();
|
||||
|
||||
foreach (CompilerError err in results.Errors) {
|
||||
string type = err.IsWarning ? "Warning" : "Error";
|
||||
@ -115,7 +105,7 @@ namespace MCGalaxy.Scripting {
|
||||
return !results.Errors.HasErrors;
|
||||
}
|
||||
|
||||
List<string> ReadSourceCode(string path, CompilerParameters args) {
|
||||
List<string> ReadSource(string path, CompilerParameters args) {
|
||||
List<string> lines = Utils.ReadAllLinesList(path);
|
||||
// Allow referencing other assemblies using 'Reference [assembly name]' at top of the file
|
||||
for (int i = 0; i < lines.Count; i++) {
|
||||
@ -129,13 +119,6 @@ namespace MCGalaxy.Scripting {
|
||||
return lines;
|
||||
}
|
||||
|
||||
void AppendHeader(StringBuilder sb, string path) {
|
||||
sb.AppendLine("############################################################");
|
||||
sb.AppendLine("Errors when compiling " + path);
|
||||
sb.AppendLine("############################################################");
|
||||
sb.AppendLine();
|
||||
}
|
||||
|
||||
public CompilerResults CompileSource(string source, CompilerParameters args) {
|
||||
args.ReferencedAssemblies.Add("MCGalaxy_.dll");
|
||||
source = source.Replace("MCLawl", "MCGalaxy");
|
||||
|
Loading…
x
Reference in New Issue
Block a user