100 lines
3.1 KiB
C#
100 lines
3.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using ln.http;
|
|
using ln.http.router;
|
|
using ln.json;
|
|
using ln.logging;
|
|
using ln.type;
|
|
using ln.threading;
|
|
using ln.build;
|
|
using ln.build.repositories;
|
|
using Microsoft.VisualBasic;
|
|
using ln.application;
|
|
using System.IO;
|
|
using ln.build.repositories.gitea;
|
|
using Microsoft.Extensions.Hosting;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using ln.build.semver;
|
|
using ln.build.pipeline;
|
|
|
|
namespace ln.build.server
|
|
{
|
|
public enum RunMode {
|
|
serv,
|
|
versioning,
|
|
build
|
|
}
|
|
|
|
class Program
|
|
{
|
|
static CIService CIService;
|
|
|
|
[StaticArgument( Option = 'm')]
|
|
static RunMode RunMode { get; set; } = RunMode.serv;
|
|
|
|
[StaticArgument( LongOption = "build")]
|
|
static string BuildPath { get; set; }
|
|
|
|
[StaticArgument( LongOption = "build-secret")]
|
|
static string BuildSecret { get; set; }
|
|
|
|
[StaticArgument( LongOption = "versioning-provider")]
|
|
static string VersioningProviderName { get; set; }
|
|
|
|
[StaticArgument( LongOption = "versioning-level")]
|
|
static SemVerLevels VersioningLevel { get; set;} = SemVerLevels.PATCH;
|
|
|
|
[StaticArgument( LongOption = "versioning-source")]
|
|
static string VersioningSource { get; set;}
|
|
|
|
|
|
static void Main(string[] args)
|
|
{
|
|
ArgumentContainer ac = new ArgumentContainer(typeof(Program));
|
|
|
|
CIService = new CIService();
|
|
ac.AddOptions(CIService);
|
|
ac.Parse(ref args);
|
|
|
|
CIService.Initialize();
|
|
|
|
switch (RunMode)
|
|
{
|
|
case RunMode.serv:
|
|
CIService.AddWebHookHandler("gitea", GiteaRepository.WebHookHandler);
|
|
CIService.Start();
|
|
break;
|
|
case RunMode.build:
|
|
CIJob job = new CIJob(CIService, null, (BuildSecret != null) ? CIService.GetSecretStorage(BuildSecret) : null);
|
|
|
|
job.WorkingDirectory = BuildPath;
|
|
job.Environment.WorkingDirectory = BuildPath;
|
|
|
|
job.RunJob();
|
|
break;
|
|
case RunMode.versioning:
|
|
Versioning versioning = new Versioning(VersioningProviderName);
|
|
versioning.Sources = new string[]{ VersioningSource };
|
|
|
|
SemVersion version = versioning.GetCurrentVersion(null);
|
|
Logging.Log("INFO: found version {0}", version);
|
|
version.Increment(VersioningLevel);
|
|
Logging.Log("INFO: write back version {0}", version);
|
|
versioning.SetVersion(null, version);
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
/* public static IHostBuilder CreateHostBuilder(string[] args) =>
|
|
Host.CreateDefaultBuilder(args)
|
|
.UseSystemd()
|
|
.ConfigureServices((hostContext, services) =>
|
|
{
|
|
services.AddHostedService<ServiceWorker>();
|
|
});
|
|
*/
|
|
|
|
}
|
|
}
|