54 lines
1.6 KiB
C#
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);
|
|
}
|
|
|
|
|
|
}
|
|
} |