Skip to content
Snippets Groups Projects
Select Git revision
  • 12492f2884b3dff4a272d3be4f239bf180629c4f
  • main default protected
  • dev protected
  • Issue/3142-kpiGenerator
  • Hotfix/3115-userReportingEmpty2
  • Hotfix/3115-userReportingEmpty
  • Issue/3073-kpi
  • Issue/2492-respOrg
  • Issue/3005-kpiReportingBroken
  • Issue/2982-kpiDataPub
  • gitkeep
  • Issue/2847-reporting
  • Issue/2850-removeGrantId
  • Issue/2432-publicationKpi
  • Hotfix/xxxx-rors
  • Issue/2666-adminCronjobs-theSequal
  • Issue/2666-adminCronjobs
  • Issue/2568-betterLogging
  • Issue/2518-docs
  • Hotfix/2388-sensitive
  • Issue/2330-fixNaNQuotainAdmin
  • v1.2.10
  • v1.2.9
  • v1.2.8
  • v1.2.7
  • v1.2.6
  • v1.2.5
  • v1.2.4
  • v1.2.3
  • v1.2.2
  • v1.2.1
  • v1.2.0
  • v1.1.1
  • v1.1.0
  • v1.0.9
  • v1.0.8
  • v1.0.7
  • v1.0.6
  • v1.0.5
  • v1.0.4
  • v1.0.3
41 results

Program.cs

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    Program.cs 11.68 KiB
    using CommandLine;
    using Coscine.ApiClient.Core.Api;
    using Coscine.ApiClient.Core.Client;
    using Coscine.KpiGenerator.Logging;
    using Coscine.KpiGenerator.Models.ConfigurationModels;
    using Coscine.KpiGenerator.Reportings.ApplicationProfile;
    using Coscine.KpiGenerator.Reportings.Complete;
    using Coscine.KpiGenerator.Reportings.Project;
    using Coscine.KpiGenerator.Reportings.Resource;
    using Coscine.KpiGenerator.Reportings.System;
    using Coscine.KpiGenerator.Reportings.User;
    using Coscine.KpiGenerator.Utils;
    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.Logging;
    using NLog;
    using NLog.Extensions.Logging;
    using Winton.Extensions.Configuration.Consul;
    using static KPIGenerator.Utils.CommandLineOptions;
    using LogLevel = Microsoft.Extensions.Logging.LogLevel;
    
    namespace Coscine.KpiGenerator;
    
    public class Program
    {
        private static IServiceProvider _serviceProvider = null!;
        private static string? _environmentName;
    
        public static async Task<int> Main(string[] args)
        {
            _environmentName = Environment.GetEnvironmentVariable("DOTNET_ENVIRONMENT");
    
            Console.WriteLine($"Running in environment: {_environmentName ?? "environment is null"}");
    
            InitializeServices();
    
            var logger = _serviceProvider.GetRequiredService<ILogger<Program>>();
    
            try
            {
                var parserResult = Parser.Default.ParseArguments<
                    CompleteReportingOptions,
                    ProjectReportingOptions,
                    ResourceReportingOptions,
                    UserReportingOptions,
                    ApplicationProfileReportingOptions,
                    SystemReportingOptions
                >(args);
    
                var result = await parserResult.MapResult(
                    (CompleteReportingOptions opts) => _serviceProvider.GetRequiredService<CompleteReporting>().RunAsync(opts),
                    (ProjectReportingOptions opts) => _serviceProvider.GetRequiredService<ProjectReporting>().RunAsync(opts),
                    (ResourceReportingOptions opts) => _serviceProvider.GetRequiredService<ResourceReporting>().RunAsync(opts),
                    (UserReportingOptions opts) => _serviceProvider.GetRequiredService<UserReporting>().RunAsync(opts),
                    (ApplicationProfileReportingOptions opts) => _serviceProvider.GetRequiredService<ApplicationProfileReporting>().RunAsync(opts),
                    (SystemReportingOptions opts) => _serviceProvider.GetRequiredService<SystemReporting>().RunAsync(opts),
                    HandleParseError
                );
    
                if (result)
                {
                    logger.LogInformation("Finished.");
                    return 0; // Exit Code 0 for Success
                }
                else
                {
                    logger.LogInformation("Program execution was interrupted.");
                    return -1; // Exit Code -1 for Failure
                }
            }