private static void Main()

in Cli/AttackSurfaceAnalyzerClient.cs [56:126]


        private static void Main(string[] args)
        {
#if DEBUG
            AttackSurfaceAnalyzer.Utils.Logger.Setup(true, false);
#else
            AttackSurfaceAnalyzer.Utils.Logger.Setup(false, false);
#endif
            var version = (Assembly
                        .GetEntryAssembly()?
                        .GetCustomAttributes(typeof(AssemblyInformationalVersionAttribute), false) as AssemblyInformationalVersionAttribute[])?
                        [0].InformationalVersion ?? "Unknown";

            Log.Information("AttackSurfaceAnalyzer v.{0}", version);

            AttackSurfaceAnalyzer.Utils.Strings.Setup();

            var argsResult = Parser.Default.ParseArguments<CollectCommandOptions, MonitorCommandOptions, ExportMonitorCommandOptions, ExportCollectCommandOptions, ConfigCommandOptions, GuiCommandOptions, VerifyOptions, GuidedModeCommandOptions>(args)
                .MapResult(
                    (CollectCommandOptions opts) =>
                    {
                        SetupLogging(opts);
                        SetupDatabase(opts);
                        return RunCollectCommand(opts);
                    },
                    (MonitorCommandOptions opts) =>
                    {
                        SetupLogging(opts);
                        SetupDatabase(opts);
                        return RunMonitorCommand(opts);
                    },
                    (ExportCollectCommandOptions opts) =>
                    {
                        SetupLogging(opts);
                        SetupDatabase(opts);
                        return RunExportCollectCommand(opts);
                    },
                    (ExportMonitorCommandOptions opts) =>
                    {
                        SetupLogging(opts);
                        SetupDatabase(opts);
                        return RunExportMonitorCommand(opts);
                    },
                    (ConfigCommandOptions opts) =>
                    {
                        SetupLogging(opts);
                        return RunConfigCommand(opts);
                    },
                    (GuiCommandOptions opts) =>
                    {
                        SetupLogging(opts);
                        SetupDatabase(opts);
                        return RunGuiCommand(opts);
                    },
                    (VerifyOptions opts) =>
                    {
                        SetupLogging(opts);
                        SetupDatabase(opts);
                        return RunVerifyRulesCommand(opts);
                    },
                    (GuidedModeCommandOptions opts) =>
                    {
                        SetupLogging(opts);
                        SetupDatabase(opts);
                        return RunGuidedModeCommand(opts);
                    },
                    errs => ASA_ERROR.UNKNOWN
                );
            DatabaseManager?.CloseDatabase();
            Log.CloseAndFlush();
            Environment.Exit((int)argsResult);
        }