public override void RunJob( string projectRoot, ProjectConfig project, ProjectBuildTarget target, ProjectBuildJob job) { string old = Directory.GetCurrentDirectory(); Directory.SetCurrentDirectory(projectRoot); ProgramBuilder.Build(job.Arguments); if (job.Arguments.TryGetValue("export:labels", out string headerFiles)) { string headerFile = Path.Combine(projectRoot, "header.vhlheader"); string[] list = headerFiles.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries). Select(x => x.Trim()). ToArray(); BuildJobMakeHeader.MakeHeader(headerFile, list); } Directory.SetCurrentDirectory(old); }
private static ProjectBuildJob CreateDebugBuildJob() { ProjectBuildJob debugBuildJob = new ProjectBuildJob(); debugBuildJob.JobName = "Build %NAME%@%VERSION%"; debugBuildJob.BuildJobRunner = "build"; debugBuildJob.Arguments["build:input"] = "Program.vhl"; debugBuildJob.Arguments["build:steps"] = "HL-expr bin"; debugBuildJob.Arguments["build:clean"] = "false"; debugBuildJob.Arguments["assembler:offset.global"] = "0"; debugBuildJob.Arguments["assembler:format"] = "v1"; debugBuildJob.Arguments["linker:export"] = "true"; debugBuildJob.Arguments["linker:no-hide"] = "false"; debugBuildJob.Arguments["compiler:optimize-temp-vars"] = "false"; debugBuildJob.Arguments["compiler:optimize-const-expr"] = "false"; debugBuildJob.Arguments["compiler:optimize-reduce-expr"] = "false"; debugBuildJob.Arguments["compiler:optimize-if-expr"] = "false"; debugBuildJob.Arguments["compiler:optimize-while-expr"] = "false"; debugBuildJob.Arguments["compiler:strip-unused-functions"] = "false"; debugBuildJob.Arguments["compiler:omit-temp-var-init"] = "false"; debugBuildJob.Arguments["compiler:aggressive-math-var-optimization"] = "false"; debugBuildJob.Arguments["compiler:constructor-prolog-mode"] = "Inline"; return(debugBuildJob); }
public override void RunJob( string projectRoot, ProjectConfig project, ProjectBuildTarget target, ProjectBuildJob job) { string input = job.Arguments["source"]; string output = job.Arguments["destination"]; if (Directory.Exists(input)) { Directory.CreateDirectory(output); ProjectPackSubSystem.CopyTo(input, output); } else if (File.Exists(input)) { if (Directory.Exists(output)) { File.Copy(input, Path.Combine(output, Path.GetFileName(input)), true); } else { File.Copy(input, output, true); } } }
private static ProjectBuildTarget CreateReleaseTarget() { ProjectBuildTarget release = new ProjectBuildTarget(); release.TargetName = "Release"; ProjectBuildJob restoreJob = new ProjectBuildJob(); restoreJob.BuildJobRunner = "restore"; restoreJob.JobName = "Restore %NAME%@%VERSION%"; restoreJob.Arguments["origin"] = "local"; release.Jobs.Add(restoreJob); ProjectBuildJob externalJob = new ProjectBuildJob(); externalJob.BuildJobRunner = "external-build"; externalJob.JobName = "Building Dependencies of %NAME%@%VERSION%"; externalJob.Arguments["path"] = ""; externalJob.Arguments["target"] = "%TARGET%"; release.Jobs.Add(externalJob); ProjectBuildJob mergeBuildJob = new ProjectBuildJob(); mergeBuildJob.JobName = "Merged Release Build"; mergeBuildJob.BuildJobRunner = "merged"; mergeBuildJob.Arguments["merge:include"] = "%VISDIR%common/jobs/release_build.json"; mergeBuildJob.Arguments["build:input"] = "Program.vhl"; release.Jobs.Add(mergeBuildJob); return(release); }
public override void RunJob( string projectRoot, ProjectConfig project, ProjectBuildTarget target, ProjectBuildJob job) { ProjectCleanSubSystem.Clean(projectRoot); }
public override void RunJob( string projectRoot, ProjectConfig project, ProjectBuildTarget target, ProjectBuildJob job) { foreach (KeyValuePair <string, string> keyValuePair in job.Arguments) { AddOriginSubSystem.AddOrigin(keyValuePair.Key, keyValuePair.Value); } }
public override void RunJob( string projectRoot, ProjectConfig project, ProjectBuildTarget target, ProjectBuildJob job) { foreach (string argumentsKey in job.Arguments.Keys) { RemoveOriginSubSystem.RemoveOrigin(argumentsKey); } }
public override void RunJob( string projectRoot, ProjectConfig project, ProjectBuildTarget target, ProjectBuildJob job) { foreach (KeyValuePair <string, string> keyValuePair in job.Arguments) { ProjectConfig info = ProjectResolver.Resolve(keyValuePair.Key, keyValuePair.Value); info.Manager.Get(info, Path.Combine(projectRoot, info.ProjectName)); } }
public override void RunJob( string projectRoot, ProjectConfig project, ProjectBuildTarget target, ProjectBuildJob job) { foreach (KeyValuePair <string, string> buildJobs in job.Arguments) { ProjectBuildJob subJob = ProjectBuildJob.Load(buildJobs.Value); project.RunJob(projectRoot, target, subJob); } }
public override void RunJob( string projectRoot, ProjectConfig project, ProjectBuildTarget target, ProjectBuildJob job) { string old = Directory.GetCurrentDirectory(); Directory.SetCurrentDirectory(projectRoot); ProgramRunner.Run(job.Arguments); Directory.SetCurrentDirectory(old); }
public override void RunJob( string projectRoot, ProjectConfig project, ProjectBuildTarget target, ProjectBuildJob job) { if (!job.Arguments.TryGetValue("origin", out string repo)) { repo = "local"; } ProjectRestoreSubSystem.Restore(projectRoot, repo); }
public override void RunJob( string projectRoot, ProjectConfig project, ProjectBuildTarget target, ProjectBuildJob job) { if (job.Arguments.TryGetValue("files", out string linkerPath)) { string[] list = linkerPath.Split(new [] { ';' }, StringSplitOptions.RemoveEmptyEntries).Select(x => x.Trim()).ToArray(); string headerFile = Path.Combine(projectRoot, "header.vhlheader"); MakeHeader(headerFile, list); } }
private static void GenerateCommonJobs() { string dir = Path.Combine(AppRootHelper.AppRoot, "common/jobs"); Directory.CreateDirectory(dir); ProjectBuildJob cleanJob = new ProjectBuildJob(); cleanJob.BuildJobRunner = "clean"; cleanJob.JobName = "Clean Project %NAME%@%VERSION%"; ProjectBuildJob restoreJob = new ProjectBuildJob(); restoreJob.BuildJobRunner = "restore"; restoreJob.JobName = "Restore Project %NAME%@%VERSION%"; ProjectBuildJob publishJob = new ProjectBuildJob(); publishJob.BuildJobRunner = "publish"; publishJob.JobName = "Publish Project %NAME%@%VERSION%"; publishJob.Arguments["repo"] = "local"; ProjectBuildJob newVersionJob = new ProjectBuildJob(); newVersionJob.BuildJobRunner = "combined"; newVersionJob.JobName = "New Version Project %NAME%"; newVersionJob.Arguments["publish"] = "%VISDIR%common/jobs/publish.json"; newVersionJob.Arguments["restore"] = "%VISDIR%common/jobs/restore.json"; ProjectBuildJob dBuildJob = CreateDebugBuildJob(); ProjectBuildJob rBuildJob = CreateReleaseBuildJob(); ProjectBuildJob dRunJob = CreateDebugRunJob(); ProjectBuildJob rRunJob = CreateReleaseRunJob(); ProjectBuildJob.Save(Path.Combine(dir, "debug_build.json"), dBuildJob); ProjectBuildJob.Save(Path.Combine(dir, "release_build.json"), rBuildJob); ProjectBuildJob.Save(Path.Combine(dir, "debug_run.json"), dRunJob); ProjectBuildJob.Save(Path.Combine(dir, "release_run.json"), rRunJob); ProjectBuildJob.Save(Path.Combine(dir, "clean.json"), cleanJob); ProjectBuildJob.Save(Path.Combine(dir, "restore.json"), restoreJob); ProjectBuildJob.Save(Path.Combine(dir, "publish.json"), publishJob); ProjectBuildJob.Save(Path.Combine(dir, "newVersion.json"), newVersionJob); }
private static ProjectBuildTarget CreateDebugRunTarget() { ProjectBuildTarget debug = new ProjectBuildTarget(); debug.TargetName = "DebugRun"; debug.DependsOn = new[] { "Debug" }; ProjectBuildJob mergeRunJob = new ProjectBuildJob(); mergeRunJob.JobName = "Merged Debug Run"; mergeRunJob.BuildJobRunner = "merged"; mergeRunJob.Arguments["merge:include"] = "%VISDIR%common/jobs/debug_run.json"; mergeRunJob.Arguments["run:input"] = "Program.vbin"; debug.Jobs.Add(mergeRunJob); return(debug); }
private static ProjectBuildTarget CreateRunTarget() { ProjectBuildTarget release = new ProjectBuildTarget(); release.TargetName = "Run"; release.DependsOn = new string[0]; ProjectBuildJob mergeRunJob = new ProjectBuildJob(); mergeRunJob.JobName = "Merged Run"; mergeRunJob.BuildJobRunner = "merged"; mergeRunJob.Arguments["merge:include"] = "%VISDIR%common/jobs/release_run.json"; mergeRunJob.Arguments["run:input"] = "Program.vbin"; release.Jobs.Add(mergeRunJob); return(release); }
public override void RunJob( string projectRoot, ProjectConfig project, ProjectBuildTarget target, ProjectBuildJob job) { ProjectBuildJob includeJob = ProjectBuildJob.Load(job.Arguments["merge:include"]); foreach (KeyValuePair <string, string> buildJobs in job.Arguments) { if (buildJobs.Key != "merge:include") { includeJob.Arguments[buildJobs.Key] = buildJobs.Value; } } project.RunJob(projectRoot, target, includeJob); }
public static ProjectConfig GenerateProjectConfig(string name, string version) { ProjectConfig config = new ProjectConfig(); if (name != null) { config.ProjectName = name; } if (version != null) { config.ProjectVersion = version; } ProjectBuildTarget debugTarget = CreateDebugTarget(); ProjectBuildTarget debugRunTarget = CreateDebugRunTarget(); ProjectBuildTarget releaseTarget = CreateReleaseTarget(); ProjectBuildTarget releaseRunTarget = CreateReleaseRunTarget(); ProjectBuildTarget runTarget = CreateRunTarget(); ProjectBuildTarget publishTarget = new ProjectBuildTarget(); publishTarget.TargetName = "Publish"; ProjectBuildJob publishJob = new ProjectBuildJob(); publishJob.JobName = "Publish Project"; publishJob.BuildJobRunner = "merged"; publishJob.Arguments["merge:include"] = "%VISDIR%common/jobs/newVersion.json"; publishTarget.Jobs.Add(publishJob); config.BuildTargets["Publish"] = publishTarget; config.BuildTargets["Debug"] = debugTarget; config.BuildTargets["DebugRun"] = debugRunTarget; config.BuildTargets["Release"] = releaseTarget; config.BuildTargets["ReleaseRun"] = releaseRunTarget; config.BuildTargets["Run"] = runTarget; return(config); }
public override void RunJob( string projectRoot, ProjectConfig project, ProjectBuildTarget target, ProjectBuildJob job) { string input = job.Arguments["source"]; string output = job.Arguments["destination"]; if (Directory.Exists(input)) { if (Directory.Exists(output)) { Directory.Delete(output); } Directory.Move(input, output); } else if (File.Exists(input)) { if (Directory.Exists(output)) { string path = Path.Combine(output, Path.GetFileName(input)); if (File.Exists(path)) { File.Delete(path); } File.Move(input, path); } else { if (File.Exists(output)) { File.Delete(output); } File.Move(input, output); } } }
public override void RunJob( string projectRoot, ProjectConfig project, ProjectBuildTarget target, ProjectBuildJob job) { ProjectPackSubSystem.PackOptions opts = new ProjectPackSubSystem.PackOptions(); ProjectPublishSubSystem.PublishOptions pops = new ProjectPublishSubSystem.PublishOptions(); if (job.Arguments.TryGetValue("version", out string ver)) { opts.VersionString = ver; } if (job.Arguments.TryGetValue("origin", out string origin)) { pops.Repository = origin; } ProjectPublishSubSystem.Publish(projectRoot, pops, opts); }
private static ProjectBuildJob CreateReleaseRunJob() { ProjectBuildJob runJob = new ProjectBuildJob(); runJob.JobName = "Run %NAME%@%VERSION%"; runJob.BuildJobRunner = "run"; runJob.Arguments["run:input"] = "Program.vbin"; runJob.Arguments["run:cpu.interrupt"] = "0x00000000"; runJob.Arguments["run:cpu.reset"] = "0x00000000"; runJob.Arguments["run:working-dir"] = "%PROJDIR%"; runJob.Arguments["run:trim"] = "false"; runJob.Arguments["memory-bus:devices"] = "%VISDIR%configs/cpu/peripherals/memory/default.json"; runJob.Arguments["memory:read"] = "true"; runJob.Arguments["memory:write"] = "true"; runJob.Arguments["memory:persistent"] = "false"; runJob.Arguments["memory:persistent.path"] = "%VISDIR%configs/cpu/peripherals/memory/states/default.bin"; runJob.Arguments["memory:size"] = "1048576"; return(runJob); }
public override void RunJob( string projectRoot, ProjectConfig project, ProjectBuildTarget target, ProjectBuildJob job) { string path = job.Arguments["path"]; string[] projects = path.Split(';'); job.Arguments.TryGetValue("target", out string externalTarget); foreach (string projJson in projects) { if (string.IsNullOrWhiteSpace(projJson)) { continue; } string projectPath = Path.GetFullPath(projJson); ProjectConfig external = ProjectConfig.Load(projectPath); external.RunTarget(Path.GetDirectoryName(projectPath), externalTarget); } }
public abstract void RunJob( string projectRoot, ProjectConfig project, ProjectBuildTarget target, ProjectBuildJob job);