public bool Exec(BuildCommandOptions options) { Toolchain.RequireDevenv(); Toolchain.RequirePackDm(); Toolchain.RequireSubversion(); bool ok; string[] solutions; if (options.Solutions.On) { solutions = options.Solutions.Items.FindFiles(); } else { solutions = "*.sln".FindFiles(); } if (!solutions.Any()) { return(Prompt.PrintNothingToBeDone("Nenhuma solução detectada.")); } var pack = new Library.PackDm.PackDm(); pack.PackConf = options.ConfFile.Text; pack.PackInfo = options.PackFile.Text; var svn = new Svn(); ok = pack.Fill(); if (!ok) { return(Prompt.PrintCannotContinue()); } ok = svn.Fill(); if (!ok) { return(Prompt.PrintCannotContinue()); } // Imprimindo informação de revisao do pack.info e do subverison // no console e no arquivo REVISION.txt VersionInfo version; { var revisionFilepath = Path.GetFullPath("REVISION.txt"); var loader = new ProjectLoader(); loader.PackConf = options.ConfFile.Text; loader.PackInfo = options.PackFile.Text; var ret = loader.LoadProjectHeader(); if (!ret.Ok) { return(Prompt.PrintCannotContinue()); } var project = ret.Value; version = project.Version; // imprimindo no console e no arquivo Prompt.PrintInfo(version); File.WriteAllText(revisionFilepath, version); } var configuration = options.Configuration.Text ?? "Release|Any CPU"; foreach (var solution in solutions) { var solutionFilename = Path.GetFileName(solution); var solutionFolder = Path.GetDirectoryName(solution); ok = $"devenv.com {solution.Quote()} /Rebuild {configuration.Quote()}".Run(); if (!ok) { return(Prompt.PrintCannotContinue()); } } // O packDm usa a máscara para substituir partes da versao var versionMask = $"*.*.*{version.FormattedPreRelease}"; ok = pack.Pack(versionMask); if (!ok) { return(Prompt.PrintCannotContinue()); } // Constrói a página HTML com informações de setup. // Falhas podem ser ignoradas. var title = Path.GetFileName(solutions.First()).Replace(".sln", ""); MakeSetupPage(title, version); return(true); }