namespace OCSentinelCli.Commands; internal static class ScanAndUploadCommand { public static int Execute(string[] args) { string outputPath = @"C:\ProgramData\OCSentinel\reports\latest.json"; string? clientConfigPath = null; string? secretPath = null; bool hasOutput = false; var scanArgs = new List(); for (int i = 0; i < args.Length; i++) { if (string.Equals(args[i], "--output", StringComparison.OrdinalIgnoreCase) && i + 1 < args.Length) { outputPath = args[i + 1]; hasOutput = true; scanArgs.Add(args[i]); scanArgs.Add(args[++i]); continue; } if (string.Equals(args[i], "--client-config", StringComparison.OrdinalIgnoreCase) && i + 1 < args.Length) { clientConfigPath = args[++i]; continue; } if (string.Equals(args[i], "--secret-path", StringComparison.OrdinalIgnoreCase) && i + 1 < args.Length) { secretPath = args[++i]; continue; } scanArgs.Add(args[i]); } if (!hasOutput) { scanArgs.Add("--output"); scanArgs.Add(outputPath); } int scanExitCode = ScanCommand.Execute([.. scanArgs]); if (scanExitCode != 0) { return scanExitCode; } var uploadArgs = new List { "--report", outputPath }; if (!string.IsNullOrWhiteSpace(clientConfigPath)) { uploadArgs.AddRange(["--client-config", clientConfigPath]); } if (!string.IsNullOrWhiteSpace(secretPath)) { uploadArgs.AddRange(["--secret-path", secretPath]); } return UploadCommand.Execute([.. uploadArgs]); } }