Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            var settingsFileName      = "settings.json";
            var ignoredIssuesFileName = "ignored-issues.json";

            var app = ShellHelper.CreateConsoleApp("cv4pve-diag", "Diagnostic for Proxmox VE");

            var optSettingsFile = app.Option("--settings-file", "File settings (generated from create-settings)", CommandOptionType.SingleValue);

            optSettingsFile.Accepts().ExistingFile();

            var optIgnoredIssuesFile = app.Option("--ignored-issues-file", "File ignored issues (generated from create-ignored-issues)", CommandOptionType.SingleValue);

            optIgnoredIssuesFile.Accepts().ExistingFile();

            var optShowIgnoredIssues = app.Option("--ignored-issues-show", "Show second table with ignored issue", CommandOptionType.NoValue);

            var optOutput = app.OutputTypeArgument();

            app.Command("create-settings", cmd =>
            {
                cmd.Description = $"Create file settings ({settingsFileName})";
                cmd.AddFullNameLogo();

                cmd.OnExecute(() =>
                {
                    File.WriteAllText(settingsFileName, JsonConvert.SerializeObject(new Settings(), Formatting.Indented));
                    app.Out.WriteLine(PrintEnum("SeriesType", typeof(SettingsTimeSeriesType)));
                    app.Out.WriteLine($"Create file: {settingsFileName}");
                });
            });

            app.Command("create-ignored-issues", cmd =>
            {
                cmd.Description = $"Create File ignored issues ({ignoredIssuesFileName})";
                cmd.AddFullNameLogo();

                cmd.OnExecute(() =>
                {
                    File.WriteAllText(ignoredIssuesFileName, JsonConvert.SerializeObject(new[] { new DiagnosticResult() }, Formatting.Indented));
                    app.Out.WriteLine(PrintEnum("Context", typeof(DiagnosticResultContext)));
                    app.Out.WriteLine(PrintEnum("Gravity", typeof(DiagnosticResultGravity)));
                    app.Out.WriteLine($"Create file: {ignoredIssuesFileName}");
                });
            });

            var fileExport = "data.json";

            app.Command("export-collect", cmd =>
            {
                cmd.ShowInHelpText = false;
                cmd.Description    = $"Export collect data collect to {fileExport}";
                cmd.AddFullNameLogo();

                cmd.OnExecute(() =>
                {
                    var ci = new ClusterInfo();
                    ci.Collect(app.ClientTryLogin());

                    File.WriteAllText(fileExport, JsonConvert.SerializeObject(ci, Formatting.Indented));
                    app.Out.WriteLine($"Exported {fileExport}!");
                });
            });

            app.Command("examine-collect", cmd =>
            {
                cmd.ShowInHelpText = false;
                cmd.Description    = $"Examine collect data collect from {fileExport}";
                cmd.AddFullNameLogo();
                cmd.OnExecute(() =>
                {
                    var ci = JsonConvert.DeserializeObject <ClusterInfo>(File.ReadAllText(fileExport));
                    Print(app, ci, optSettingsFile, optIgnoredIssuesFile, optShowIgnoredIssues, optOutput);
                });
            });

            app.OnExecute(() =>
            {
                var ci = new ClusterInfo();
                ci.Collect(app.ClientTryLogin());
                ci = JsonConvert.DeserializeObject <ClusterInfo>(JsonConvert.SerializeObject(ci));

                Print(app, ci, optSettingsFile, optIgnoredIssuesFile, optShowIgnoredIssues, optOutput);
            });

            app.ExecuteConsoleApp(args);
        }