52 lines
2.6 KiB
C#
Raw Normal View History

2021-01-19 19:11:27 +03:00
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Serilog;
2021-01-19 19:11:27 +03:00
using System;
2023-05-12 13:17:02 +03:00
using System.IO;
using System.Reflection;
2021-01-19 19:11:27 +03:00
using System.Threading.Tasks;
namespace EpicMorg.Atlassian.Downloader
2021-01-19 19:11:27 +03:00
{
public class Program
{
/// <summary>
/// Atlassian archive downloader. See https://github.com/EpicMorg/atlassian-downloader for more info
2021-01-19 19:11:27 +03:00
/// </summary>
2021-01-17 13:45:28 +03:00
/// <param name="Action">Action to perform</param>
/// <param name="OutputDir">Override output directory to download</param>
/// <param name="customFeed">Override URIs to import</param>
2021-01-20 00:52:07 +03:00
/// <param name="Version">Show credits banner</param>
2023-05-12 13:17:02 +03:00
/// <param name="productVersion">Override target version to download some product. Advice: Use it with "customFeed".</param>
static async Task Main(string OutputDir, Uri[] customFeed = null, DownloadAction Action = DownloadAction.Download, bool Version = false, string productVersion = null) => await
2021-01-19 19:11:27 +03:00
Host
.CreateDefaultBuilder()
.ConfigureHostConfiguration(configHost => configHost.AddEnvironmentVariables())
.ConfigureAppConfiguration((ctx, configuration) =>
configuration
2023-05-12 13:17:02 +03:00
.SetBasePath(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location))
2021-01-19 19:11:27 +03:00
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{ctx.HostingEnvironment.EnvironmentName}.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables())
.ConfigureServices((ctx, services) => services
.AddOptions()
.AddLogging(builder =>
2021-01-19 19:11:27 +03:00
{
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(ctx.Configuration)
.CreateLogger();
builder
.ClearProviders()
.AddSerilog(dispose: true);
})
.AddHostedService<DonloaderService>()
2023-05-12 13:17:02 +03:00
.AddSingleton(new DownloaderOptions(OutputDir, customFeed, Action, Version, productVersion))
2021-01-19 19:11:27 +03:00
.AddHttpClient())
.RunConsoleAsync()
.ConfigureAwait(false);
2021-01-19 19:11:27 +03:00
}
2021-01-13 15:24:10 +03:00
}