using File_Folder_Helper.Helpers; using Microsoft.Extensions.Logging; using System.Collections.ObjectModel; namespace File_Folder_Helper.ADO2024.PI1; internal static partial class Helper20240417 { private static void RunCommand(ILogger logger, string directory, string commandFileName, List files, int before, CancellationToken cancellationToken) { bool usePathCombine = false; string command = $"npx eclint fix {string.Join(' ', files)}"; string output = HelperNPM.RunCommand(commandFileName, command, directory); logger.LogInformation(output); if (output.Contains("error", StringComparison.OrdinalIgnoreCase)) { Environment.ExitCode = 2; logger.LogCritical("Setting exit code {ExitCode}", Environment.ExitCode); throw new Exception(output); } ReadOnlyCollection afterGitOthersModifiedAndDeletedExcludingStandardFiles = HelperGit.GetOthersModifiedAndDeletedExcludingStandardFiles(directory, usePathCombine, cancellationToken); int after = afterGitOthersModifiedAndDeletedExcludingStandardFiles.Count; if (before != after) { List fileNames = []; foreach (string file in afterGitOthersModifiedAndDeletedExcludingStandardFiles) { if (file.Contains(' ')) continue; if (files.Contains(file)) continue; fileNames.Add(Path.GetFileName(file)); } Environment.ExitCode = 1; throw new Exception($"Files were modified exiting with exit code {Environment.ExitCode}!{Environment.NewLine}{string.Join(Environment.NewLine, fileNames)}"); } } internal static void FilteredRunCommand(ILogger logger, List args, CancellationToken cancellationToken) { List files = []; string directory = args[0]; bool usePathCombine = false; string commandFileName = args[2]; ReadOnlyCollection gitOthersModifiedAndDeletedExcludingStandardFiles = HelperGit.GetOthersModifiedAndDeletedExcludingStandardFiles(directory, usePathCombine, cancellationToken); int before = gitOthersModifiedAndDeletedExcludingStandardFiles.Count; foreach (string file in gitOthersModifiedAndDeletedExcludingStandardFiles) { if (file.Contains(' ')) { logger.LogInformation("Skipping <{File}>", file); continue; } files.Add(file); } logger.LogInformation("{directory} has {files} file(s)", directory, before); if (files.Count > 0) RunCommand(logger, directory, commandFileName, files, before, cancellationToken); } }