You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.1 KiB
42 lines
1.1 KiB
using System.Diagnostics;
|
|
using System.Text;
|
|
using Autofac;
|
|
using CliFx;
|
|
|
|
namespace Recyclarr.Cli;
|
|
|
|
internal static class Program
|
|
{
|
|
private static string ExecutableName => Process.GetCurrentProcess().ProcessName;
|
|
|
|
public static async Task<int> Main()
|
|
{
|
|
var status = await new CliApplicationBuilder()
|
|
.AddCommands(GetAllCommandTypes())
|
|
.SetExecutableName(ExecutableName)
|
|
.SetVersion(BuildVersion())
|
|
.Build()
|
|
.RunAsync();
|
|
|
|
return status;
|
|
}
|
|
|
|
private static IEnumerable<Type> GetAllCommandTypes()
|
|
{
|
|
return typeof(Program).Assembly.GetTypes()
|
|
.Where(x => x.IsAssignableTo<ICommand>() && !x.IsAbstract);
|
|
}
|
|
|
|
private static string BuildVersion()
|
|
{
|
|
var builder = new StringBuilder($"v{GitVersionInformation.MajorMinorPatch}");
|
|
var metadata = GitVersionInformation.FullBuildMetaData;
|
|
if (!string.IsNullOrEmpty(metadata))
|
|
{
|
|
builder.Append($" ({metadata})");
|
|
}
|
|
|
|
return builder.ToString();
|
|
}
|
|
}
|