2021-01-14 19:33:14 +03:00
|
|
|
|
using Microsoft.Extensions.Configuration;
|
|
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
|
using Microsoft.Extensions.Hosting;
|
2021-01-16 17:27:22 +03:00
|
|
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
|
|
|
|
|
|
using Serilog;
|
|
|
|
|
|
2021-01-14 19:33:14 +03:00
|
|
|
|
using System;
|
2021-01-14 18:05:38 +03:00
|
|
|
|
using System.Threading.Tasks;
|
2021-01-13 15:24:10 +03:00
|
|
|
|
|
2021-01-16 17:27:22 +03:00
|
|
|
|
namespace EpicMorg.Atlassian.Downloader
|
|
|
|
|
{
|
|
|
|
|
public class Program
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Atlassian archive downloader. See https://github.com/EpicMorg/atlassian-downloader for more info
|
2021-01-17 13:45:28 +03:00
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="Action">Action to perform</param>
|
2021-01-16 13:25:29 +03:00
|
|
|
|
/// <param name="OutputDir">Override output directory to download.</param>
|
2021-01-17 13:45:28 +03:00
|
|
|
|
/// <param name="customFeed">Override URIs to import.</param>
|
2021-01-16 17:27:22 +03:00
|
|
|
|
static async Task Main(string OutputDir = "atlassian", Uri[] customFeed = null, DownloadAction Action = DownloadAction.Download) => await
|
2021-01-14 19:33:14 +03:00
|
|
|
|
Host
|
|
|
|
|
.CreateDefaultBuilder()
|
|
|
|
|
.ConfigureHostConfiguration(configHost => configHost.AddEnvironmentVariables())
|
2021-01-16 17:27:22 +03:00
|
|
|
|
.ConfigureAppConfiguration((ctx, configuration) =>
|
2021-01-14 19:33:14 +03:00
|
|
|
|
configuration
|
|
|
|
|
.SetBasePath(Environment.CurrentDirectory)
|
|
|
|
|
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
|
|
|
|
|
.AddJsonFile($"appsettings.{ctx.HostingEnvironment.EnvironmentName}.json", optional: true, reloadOnChange: true)
|
2021-01-16 17:27:22 +03:00
|
|
|
|
.AddEnvironmentVariables())
|
|
|
|
|
.ConfigureServices((ctx, services) => services
|
|
|
|
|
.AddOptions()
|
|
|
|
|
.AddLogging(builder =>
|
|
|
|
|
{
|
|
|
|
|
Log.Logger = new LoggerConfiguration()
|
|
|
|
|
.ReadFrom.Configuration(ctx.Configuration)
|
|
|
|
|
.CreateLogger();
|
|
|
|
|
builder
|
|
|
|
|
.ClearProviders()
|
|
|
|
|
.AddSerilog(dispose: true);
|
|
|
|
|
})
|
|
|
|
|
.AddHostedService<DonloaderService>()
|
|
|
|
|
.AddSingleton(new DownloaderOptions(OutputDir, customFeed, Action))
|
|
|
|
|
.AddHttpClient())
|
|
|
|
|
.RunConsoleAsync()
|
|
|
|
|
.ConfigureAwait(false);
|
2021-01-14 18:05:38 +03:00
|
|
|
|
}
|
2021-01-13 15:24:10 +03:00
|
|
|
|
}
|