protected override int Execute() { var cwd = Directory.GetCurrentDirectory(); var moduleName = Path.GetFileName(cwd); configuration = configuration ?? "full-build"; if (!new ConfigurationParser(new FileInfo(cwd)).ConfigurationExists(configuration)) { ConsoleWriter.Shared.WriteError($"Configuration '{configuration}' was not found in {moduleName}."); return(-1); } var cleanerLogger = LogManager.GetLogger <Cleaner>(); var shellRunner = new ShellRunner(LogManager.GetLogger <ShellRunner>()); var consoleWriter = ConsoleWriter.Shared; var cleaner = new Cleaner(cleanerLogger, shellRunner, consoleWriter); var buildYamlScriptsMaker = new BuildYamlScriptsMaker(); var builder = new ModuleBuilder(Log, buildSettings, buildYamlScriptsMaker); var builderInitTask = Task.Run(() => builder.Init()); var modulesOrder = new BuildPreparer(Log).GetModulesOrder(moduleName, configuration); var builtStorage = BuildInfoStorage.Deserialize(); builtStorage.RemoveBuildInfo(moduleName); builderInitTask.Wait(); var module = new Dep(moduleName, null, configuration); if (FeatureFlags.CleanBeforeBuild || buildSettings.CleanBeforeBuild) { if (cleaner.IsNetStandard(module)) { cleaner.Clean(module); } } BuildDepsCommand.TryNugetRestore(new List <Dep> { module }, builder); if (!builder.Build(module)) { builtStorage.Save(); return(-1); } builtStorage.AddBuiltModule(module, modulesOrder.CurrentCommitHashes); builtStorage.Save(); return(0); }
protected override int Execute() { var cwd = Directory.GetCurrentDirectory(); var moduleName = Path.GetFileName(cwd); configuration = string.IsNullOrEmpty(configuration) ? "full-build" : configuration; var cleanerLogger = LogManager.GetLogger <Cleaner>(); var shellRunner = new ShellRunner(LogManager.GetLogger <ShellRunner>()); var consoleWriter = ConsoleWriter.Shared; var cleaner = new Cleaner(cleanerLogger, shellRunner, consoleWriter); var buildYamlScriptsMaker = new BuildYamlScriptsMaker(); var builder = new ModuleBuilder(Log, buildSettings, buildYamlScriptsMaker); var builderInitTask = Task.Run(() => builder.Init()); var modulesOrder = new BuildPreparer(Log).GetModulesOrder(moduleName, configuration ?? "full-build"); var modulesToBuild = modulesOrder.UpdatedModules; if (rebuild) { modulesToBuild = modulesOrder.BuildOrder.ToList(); } if (modulesToBuild.Count > 0 && modulesToBuild[modulesToBuild.Count - 1].Name == moduleName) { modulesToBuild.RemoveAt(modulesToBuild.Count - 1); //remove root } var builtStorage = BuildInfoStorage.Deserialize(); foreach (var dep in modulesToBuild) { builtStorage.RemoveBuildInfo(dep.Name); } builderInitTask.Wait(); if (FeatureFlags.CleanBeforeBuild || buildSettings.CleanBeforeBuild) { TryCleanModules(modulesToBuild, cleaner); } TryNugetRestore(modulesToBuild, builder); var isSuccessful = parallel ? BuildDepsParallel(modulesOrder, builtStorage, modulesToBuild, builder) : BuildDepsSequential(modulesOrder, builtStorage, modulesToBuild, builder); return(isSuccessful ? 0 : -1); }
protected override int Execute() { var modulePath = Helper.GetModuleDirectory(Directory.GetCurrentDirectory()); var moduleName = Path.GetFileName(modulePath); project = Yaml.GetProjectFileName(project, moduleName); configuration = configuration ?? "full-build"; var buildData = Yaml.BuildParser(moduleName).Get(configuration).FirstOrDefault(t => !t.Target.IsFakeTarget()); var projectPath = Path.GetFullPath(project); var csproj = new ProjectFile(projectPath); var deps = new DepsParser(modulePath).Get(configuration); ConsoleWriter.Shared.WriteInfo("patching csproj"); var patchedDocument = csproj.CreateCsProjWithNugetReferences(deps.Deps, preRelease); var backupFileName = Path.Combine(Path.GetDirectoryName(projectPath) ?? "", "backup." + Path.GetFileName(projectPath)); if (File.Exists(backupFileName)) { File.Delete(backupFileName); } File.Move(projectPath, backupFileName); try { XmlDocumentHelper.Save(patchedDocument, projectPath, "\n"); var buildYamlScriptsMaker = new BuildYamlScriptsMaker(); var moduleBuilder = new ModuleBuilder(Log, buildSettings, buildYamlScriptsMaker); moduleBuilder.Init(); ConsoleWriter.Shared.WriteInfo("start pack"); if (!moduleBuilder.DotnetPack(modulePath, projectPath, buildData?.Configuration ?? "Release")) { return(-1); } } finally { if (File.Exists(projectPath)) { File.Delete(projectPath); } File.Move(backupFileName, projectPath); } return(0); }