ln.build/ln.build.server/Program.cs

100 lines
3.1 KiB
C#
Raw Normal View History

2020-11-27 22:12:01 +01:00
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;
2020-11-29 22:02:16 +01:00
using ln.build.repositories;
using Microsoft.VisualBasic;
using ln.application;
using System.IO;
using ln.build.repositories.gitea;
2020-12-09 10:05:52 +01:00
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.DependencyInjection;
using ln.build.semver;
using ln.build.pipeline;
2020-11-27 22:12:01 +01:00
namespace ln.build.server
{
2020-12-09 10:05:52 +01:00
public enum RunMode {
serv,
versioning,
build
}
2020-11-27 22:12:01 +01:00
class Program
{
2020-11-28 01:08:49 +01:00
static CIService CIService;
2020-11-27 22:12:01 +01:00
2020-12-09 10:05:52 +01:00
[StaticArgument( Option = 'm')]
static RunMode RunMode { get; set; } = RunMode.serv;
2020-12-03 00:05:51 +01:00
[StaticArgument( LongOption = "build")]
2020-12-09 10:05:52 +01:00
static string BuildPath { get; set; }
2020-12-03 00:05:51 +01:00
2020-12-03 22:58:35 +01:00
[StaticArgument( LongOption = "build-secret")]
2020-12-09 10:05:52 +01:00
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;}
2020-12-03 22:58:35 +01:00
2020-11-27 22:12:01 +01:00
static void Main(string[] args)
{
ArgumentContainer ac = new ArgumentContainer(typeof(Program));
2020-11-28 01:08:49 +01:00
CIService = new CIService();
ac.AddOptions(CIService);
ac.Parse(ref args);
2020-11-29 22:02:16 +01:00
CIService.Initialize();
2020-11-27 22:12:01 +01:00
2020-12-09 10:05:52 +01:00
switch (RunMode)
2020-12-03 00:05:51 +01:00
{
2020-12-09 10:05:52 +01:00
case RunMode.serv:
CIService.AddWebHookHandler("gitea", GiteaRepository.WebHookHandler);
CIService.Start();
break;
case RunMode.build:
2020-12-09 17:15:46 +01:00
CIJob job = new CIJob(CIService, null, (BuildSecret != null) ? CIService.GetSecretStorage(BuildSecret) : null);
2020-12-09 10:05:52 +01:00
job.WorkingDirectory = BuildPath;
2020-12-09 17:15:46 +01:00
job.Environment.WorkingDirectory = BuildPath;
2020-12-09 10:05:52 +01:00
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;
2020-12-03 00:05:51 +01:00
}
2020-11-27 22:12:01 +01:00
}
/* public static IHostBuilder CreateHostBuilder(string[] args) =>
2020-12-09 10:05:52 +01:00
Host.CreateDefaultBuilder(args)
.UseSystemd()
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<ServiceWorker>();
});
*/
2020-11-27 22:12:01 +01:00
}
}