-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathReleaseBuilder.cs
44 lines (36 loc) · 1.81 KB
/
ReleaseBuilder.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using ReleaseTool.PackageManifest;
namespace ReleaseTool;
internal class ReleaseBuilder
{
public ReleaseBuilder(Validator validator, FileFinder fileFinder, FileWriter fileWriter, PackageParser packageParser)
{
_validator = validator;
_fileFinder = fileFinder;
_fileWriter = fileWriter;
_packageParser = packageParser;
}
/// <summary>
/// Apply repository changes to reflect the new version
/// </summary>
/// <param name="version">New version to be released</param>
/// <param name="changelog">Changelog section related to the new version</param>
public void Execute(string version, string changelog)
{
var filesInfo = _fileFinder.FindReleaseFiles();
var newVersion = _validator.ParseVersion(version);
var packageInfo = _packageParser.ParsePackageJson(filesInfo.PackageJsonFilePath);
var currentVersion = _validator.ParseVersion(packageInfo.Version);
_validator.AssertThatNewVersionGreaterThanCurrent(newVersion, currentVersion);
Console.WriteLine("Version filepath: " + filesInfo.VersionFilePath);
Console.WriteLine("Changelog filepath: " + filesInfo.ChangelogFilePath);
Console.WriteLine("Package.json filepath: " + filesInfo.PackageJsonFilePath);
_fileWriter.WriteChangelogFile(newVersion, changelog, filesInfo.ChangelogFilePath);
_fileWriter.WriteVersionFile(newVersion, filesInfo.VersionFilePath);
_fileWriter.WritePackageJsonFile(newVersion, filesInfo.PackageJsonFilePath);
_fileWriter.MoveImportedSamples(packageInfo, filesInfo, currentVersion, newVersion);
}
private readonly FileFinder _fileFinder;
private readonly FileWriter _fileWriter;
private readonly Validator _validator;
private readonly PackageParser _packageParser;
}