in tool/TeamCity.Docker/Program.cs [11:43]
public static int Main(string[] args) =>
(int)Parser.Default.ParseArguments<GenerateOptions, BuildOptions>(args)
.MapResult(
(GenerateOptions options) => Run<IGenerateOptions>(options),
(BuildOptions options) => Run<IBuildOptions>(options),
_ => Result.Error);
private static Result Run<TOptions>([NotNull] TOptions options)
where TOptions: IOptions
{
if (options == null)
{
throw new ArgumentNullException(nameof(options));
}
using var container = Container
.Create()
.Using<IoCConfiguration>()
.Bind<TOptions, IOptions>().As(Lifetime.Singleton).To(ctx => options)
.Container;
try
{
var runTask = container.Resolve<ICommand<TOptions>>().Run();
runTask.Wait();
return runTask.Result;
}
catch (Exception ex)
{
container.Resolve<ILogger>().Log(ex);
return Result.Error;
}
}