public void Execute(string scriptName, string targets = BuildTargetFactory.DefaultNames, string?buildPath = null) { if (!PreExecutionChecks(true, true, true, true)) { return; } if (buildPath == null) { buildPath = Build.DEFAULT_BUILD_PATH; } Build build = new Build(buildPath); BuildTarget[] buildTargets = BuildTargetFactory.ParseCollection(targets, build); if (!buildTargets.CanBuildAndWarnIfNot()) { return; } BuildTargetSimple[] buildTargetsSimple = BuildTargetFactory.GetCollection(buildTargets); using (BuildTargetAdvancedCollection buildTargetsAdvanced = BuildTargetFactory.GetCollection(build, buildTargetsSimple)) { TranspileScriptJob transpileJob = new TranspileScriptJob(buildTargetsAdvanced, scriptName); transpileJob.Run(); } PrepareWorkspace(build, buildTargets); Compile(build, buildTargetsSimple); Console.WriteLine("Build Complete"); string compileLog = File.ReadAllText(build.GetCompileStandardOutputPath()); Console.WriteLine(compileLog); }
public void Execute(string targets, bool writeTranspiledFilesAndCompile, int threadsNumber = DefaultThreads, string?buildPath = null) { if (!PreExecutionChecks(true, true, true, true)) { return; } if (buildPath == null) { buildPath = Build.DEFAULT_BUILD_PATH; } Build build = new Build(buildPath); BuildTarget[] buildTargets = BuildTargetFactory.ParseCollection(targets, build); if (writeTranspiledFilesAndCompile && !buildTargets.CanBuildAndWarnIfNot()) { return; } BuildTargetSimple[] buildTargetsSimple = BuildTargetFactory.GetCollection(buildTargets); using (BuildTargetAdvancedCollection buildTargetsAdvanced = BuildTargetFactory.GetCollection(build, buildTargetsSimple)) { BuildTracker buildTracker = new BuildTracker(buildTargets); Transpile(build, buildTracker, buildTargetsAdvanced, threadsNumber); if (writeTranspiledFilesAndCompile) { WriteTranspiled(buildTargetsAdvanced, buildTracker); } } if (writeTranspiledFilesAndCompile) { PrepareWorkspace(build, buildTargets); Compile(build, buildTargetsSimple); Console.WriteLine("Build Complete"); } }
private static void WriteTranspiled(BuildTargetAdvancedCollection buildTargets, BuildTracker buildTracker) { ProgressWriter progressWriter = new ProgressWriter("Writing Transpiled Scripts", buildTargets.Sum(bt => buildTracker.GetBuiltScripts(bt.Name).Count)); //WTM: Change: Added: Transpile QF first since some transpilation will be done while writing. //Types will be inferenced like TES4PublicanBloatedFloatOrmil, and if Standalone gets written first, those files will be incorrect. //The below OrderBy statement puts QF first. foreach (var buildTarget in buildTargets.OrderBy(bt => !bt.IsQF())) { buildTarget.Write(buildTracker, progressWriter); } progressWriter.WriteLast(); }
private static void Transpile(Build build, BuildTracker buildTracker, BuildTargetAdvancedCollection buildTargets, int threadsNumber) { var buildPlan = buildTargets.GetBuildPlan(threadsNumber); ESMAnalyzer esmAnalyzer = buildTargets.ESMAnalyzer; int totalScripts = buildPlan.Sum(p => p.Value.Sum(chunk => chunk.Sum(c => c.Value.Count))); ProgressWriter progressWriter = new ProgressWriter("Transpiling Scripts", totalScripts); using (StreamWriter errorLog = new StreamWriter(build.GetErrorLogPath(), false)) { foreach (var threadBuildPlan in buildPlan) { TranspileChunkJob task = new TranspileChunkJob(buildTracker, threadBuildPlan.Value, esmAnalyzer); task.RunTask(errorLog, progressWriter); } } AddTopicBuilderCommand.GenerateINFOAddTopicScripts(buildTargets.ESMAnalyzer, buildTracker, buildTargets.First(t => t.IsTIF())); progressWriter.WriteLast(); }
/* * TranspileScriptJob constructor. */ public TranspileScriptJob(BuildTargetAdvancedCollection buildTargets, string scriptName) { this.buildTargets = buildTargets; this.scriptName = scriptName; this.esmAnalyzer = buildTargets.ESMAnalyzer; }