public void Set(string buildNamePrefix, GitRepository repository, GitRepositoryBuildStatus status) { var existingRepositoryStatus = Get(buildNamePrefix, repository); var buildStatusFile = Path.Combine( CliPaths.Build, status.GetUniqueName(buildNamePrefix) ) + ".json"; if (File.Exists(buildStatusFile)) { FileHelper.DeleteIfExists(buildStatusFile); } if (existingRepositoryStatus != null) { existingRepositoryStatus.MergeWith(status); using (var file = File.CreateText(buildStatusFile)) { new JsonSerializer { Formatting = Formatting.Indented }.Serialize(file, existingRepositoryStatus); } } else { using (var file = File.CreateText(buildStatusFile)) { new JsonSerializer { Formatting = Formatting.Indented }.Serialize(file, status); } } }
public void GetUniqueName_Test() { var existingBuildStatus = new GitRepositoryBuildStatus("repo-1", "dev") { DependingRepositories = new List <GitRepositoryBuildStatus>() { new GitRepositoryBuildStatus("repo-2", "dev") { DependingRepositories = new List <GitRepositoryBuildStatus>() { new GitRepositoryBuildStatus("repo-3", "dev") } }, new GitRepositoryBuildStatus("repo-4", "dev") } }; existingBuildStatus.GetUniqueName("").ShouldBe("B25C935F97D7B3375530A96B392B7644"); existingBuildStatus.GetUniqueName("production").ShouldBe("production_B25C935F97D7B3375530A96B392B7644"); }