ln.build/ln.build/pipeline/Versioning.cs

54 lines
1.6 KiB
C#

using System;
using System.IO;
using System.Linq;
using ln.build.semver;
using ln.build.semver.provider;
using ln.json;
namespace ln.build.pipeline
{
public class Versioning
{
public string ProviderName { get; set; }
public string[] Sources { get; set; }
public Provider Provider { get; }
public Versioning()
{}
public Versioning(JSONObject jsonVersioning)
{
ProviderName = jsonVersioning["provider"].ToNative().ToString();
if (jsonVersioning.ContainsKey("sources"))
Sources = jsonVersioning["sources"].Children.Select((s) => s.ToNative().ToString()).ToArray();
Provider = Provider.CreateProvider(ProviderName);
}
public Versioning(string providerName)
{
ProviderName = providerName;
Provider = Provider.CreateProvider(ProviderName);
}
public SemVersion GetCurrentVersion(CIJob job) => GetVersion(job, Sources[0]);
public SemVersion GetVersion(CIJob job, string source)
{
string sourceFileName = Path.Combine(job?.WorkingDirectory ?? "", source);
return Provider.GetVersion(sourceFileName);
}
public void SetVersion(CIJob job, SemVersion version)
{
foreach (string source in Sources)
SetVersion(job, source, version);
}
public void SetVersion(CIJob job, string source, SemVersion version)
{
string sourceFileName = Path.Combine(job?.WorkingDirectory ?? "", source);
Provider.SetVersion(sourceFileName, version);
}
}
}