protected override int OnExecute(CommandLineApplication app) { var workingDir = TargetProject ?? Parent.TargetProject ?? System.Environment.CurrentDirectory; var releaseBranch = ReleaseBranch ?? Parent.ReleaseBranch ?? "trunk"; try { var repository = new OnDiskGitRepository(workingDir, releaseBranch, _fileSystem); var preconditions = new DefaultPreConditions(repository); preconditions.Verify(DetachedHead); var commitAnalyzer = new DefaultCommitAnalyzer(repository); commitAnalyzer.CommitEvent += OnCommitEvent; var nextRelease = commitAnalyzer.CalculateNextRelease(); var project = new DotnetProjectParser(workingDir, _fileSystem); project.SetVersion(nextRelease.Version); var releaser = new ProjectReleaser(project, repository, _fileSystem); releaser.PrepareForRelease(); } catch (NoOpReleaseException ex) { Console.WriteLine($"There have been no releasable commits since v{ex.LastVersion}"); return(ThrowOnNoOp ? 1 : 0); } catch (Exception ex) { Console.WriteLine(ex.Message); return(1); } return(0); }
public void ProjectCanRelease() { string repositoryPath = "/home/projects/semantic_release"; string projectPath = "/home/projects/semantic_release/src"; var projectManager = new Mock <IProjectManager>(); projectManager.SetupGet(o => o.ProjectPath).Returns(projectPath); var repo = new Mock <ISourceRepositoryProvider <IRepository> >(); repo.SetupGet(o => o.RepositoryPath).Returns(repositoryPath); var repository = new Repository(); repo.SetupGet(o => o.RepositoryRef).Returns(repository); var releaser = new ProjectReleaser(projectManager.Object, repo.Object, _fileSystem); // releaser.PrepareForRelease(); }