public bool Exec(InitCommandOptions options) { bool ok; Toolchain.RequirePackDm(true); Toolchain.RequireSubversion(true); var pack = new Library.PackDm.PackDm(); pack.PackConf = options.ConfFile.Text; pack.PackInfo = options.PackFile.Text; var svn = new Svn(); ok = pack.Init(); if (!ok) { return(Prompt.PrintCannotContinue()); } ok = svn.Ignore("packages"); if (!ok) { return(Prompt.PrintCannotContinue()); } return(true); }
public bool Exec(UpgradeCommandOptions options) { bool ok; Toolchain.RequirePackDm(true); var pack = new Library.PackDm.PackDm(); pack.PackConf = options.ConfFile.Text; pack.PackInfo = options.PackFile.Text; ok = pack.Upgrade(); if (!ok) { return(Prompt.PrintCannotContinue()); } return(true); }
public bool CreateTag(TagCommandOptions options) { bool ok; var svn = new Svn(); svn.User = options.User.Text ?? Svn.DefaultUser; svn.Pass = options.Pass.Text ?? Svn.DefaultPass; ok = svn.Fill(); if (!ok) { return(Prompt.PrintCannotContinue()); } var pack = new Library.PackDm.PackDm(); pack.PackConf = options.PackConf.Text; pack.PackInfo = options.PackInfo.Text; ok = pack.Fill(); if (!ok) { return(Prompt.PrintCannotContinue()); } // // Validando // if (svn.IsTag) { return(Prompt.PrintCannotContinue( "Não é possível criar uma tag a partir de outra tag diretamente.\n" + "O comando deve ser executado a partir de uma pasta trunk ou branch.")); } if (!svn.IsTrunk && !svn.IsBranch) { return(Prompt.PrintCannotContinue( "O comando deve ser executado a partir de uma pasta trunk ou branch.")); } if (svn.HasChanges && !options.Force.On) { return(Prompt.PrintCannotContinue( "Existem alterações pendentes:\n" + "---------- SVN STATUS ----------\n" + $"{svn.Changes}\n" + "--------------------------------\n" + "Resolva as pendências do subversion ou use o argumento --force.")); } // // Coletando parametros // var revision = svn.Revision; var tagVersion = pack.Version; var newVersion = SemVer.IncreaseMinor(tagVersion); var relPath = svn.Url.Strip("/(trunk|branches).*"); var curPath = svn.Url; var tagPath = curPath.Replace(relPath, $"/tags/{tagVersion}"); if (options.PreRelease.On) { int rev = 0; string version; string path; do { rev++; version = $"{tagVersion}-{options.PreRelease.Text}{rev}"; path = $"{tagPath}-{options.PreRelease.Text}{rev}"; } while (svn.Exists(path)); tagVersion = version; tagPath = path; } // // Criando a tag // ok = svn.Info(pack.PackInfo); // Apenas imprime informacao de revisao no console if (!ok) { return(Prompt.PrintCannotContinue()); } ok = svn.Copy(curPath, tagPath, $"Fechada a tag {tagVersion} a partir da revisão {revision} de {relPath}."); if (!ok) { return(Prompt.PrintCannotContinue()); } ok = EditRevisionInfo(options, tagPath, tagVersion); if (!ok) { return(Prompt.PrintCannotContinue()); } // // Incrementando a versao do trunk, se aplicavel // if (!options.PreRelease.On) { pack.Version = newVersion; pack.Save(); if (!ok) { return(Prompt.PrintCannotContinue()); } ok = svn.Commit(pack.PackInfo, $"Versão de {relPath} incrementada para: {newVersion}"); if (!ok) { return(Prompt.PrintCannotContinue()); } } return(true); }
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); }