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);
        }
Exemplo n.º 2
0
        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");
            }
        }
Exemplo n.º 3
0
        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();
        }
Exemplo n.º 4
0
        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();
        }
Exemplo n.º 5
0
 /*
  * TranspileScriptJob constructor.
  */
 public TranspileScriptJob(BuildTargetAdvancedCollection buildTargets, string scriptName)
 {
     this.buildTargets = buildTargets;
     this.scriptName   = scriptName;
     this.esmAnalyzer  = buildTargets.ESMAnalyzer;
 }