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); } } }