public static CommandResult CleanCommand(CommandLineProto proto, CommandLine args) { var app = ConsoleApp.Instance; try { PathFolderOptions options = GetPathFolderOptions(args); CommandResult result = new CommandResult(); PathFolders foriginal = new PathFolders(options); PathFolders fvalid = new PathFolders(options); PathFolders finvalid = new PathFolders(options); bool isVerbose = args.HasSwitch(Names.VerboseSwitch, Names.VerboseMnemonic); bool isQuiet = args.HasSwitch(Names.QuietSwitch, Names.QuietMnemonic); bool commit = true; foriginal.Fill(); foreach (PathFolder f0 in foriginal) { if (f0.IsValid) { fvalid.Add(f0); } else { finvalid.Add(f0); } } if (finvalid.Count == 0) { if (options == PathFolderOptions.Process) { app.WriteOut(fvalid.ToInlineString()); } return(new CommandResult(true, "No invalid folders in path")); } if (!isQuiet) { app.WriteError(isVerbose ? finvalid.ToVerboseString() : finvalid.ToString()); commit = app.GetConfirmation("Remove folders from PATH?"); app.WriteError(); } if (options == PathFolderOptions.Process && commit) { app.WriteOut(fvalid.ToInlineString()); } else if (options == PathFolderOptions.Process) { app.WriteOut(foriginal.ToInlineString()); } else if (commit) { fvalid.Commit(); } if (commit) { return(new CommandResult(true, $"{finvalid.Count} folder(s) removed from PATH")); } else { return(new CommandResult(false, "User canceled operation")); } } catch (Exception ex) { return(new CommandResult(false, "Unable to clean invalid PATH elements", ex)); } }
public static CommandResult AddCommand(CommandLineProto proto, CommandLine args) { var app = ConsoleApp.Instance; try { int defaultPos = proto.GetValue <int>(Names.PositionSwitch); int pos = args.GetValue <int>(Names.PositionSwitch, Names.PositionMnemonic, defaultPos); var options = GetPathFolderOptions(args); bool isVerbose = args.HasSwitch(Names.VerboseSwitch, Names.VerboseMnemonic); bool isQuiet = args.HasSwitch(Names.QuietSwitch, Names.QuietMnemonic); var folders = new PathFolders(options); folders.Fill(); var added = new PathFolders(options); int parg = 2; string path = args.GetResolvedValue <string>(parg++); bool commit = true; while (path != null) { added.Add(new PathFolder(path)); path = args.GetResolvedValue <string>(parg++); } if (!isQuiet) { app.WriteError(); app.WriteError("Add..."); app.WriteError(); app.WriteError(added.ToString(), false); app.WriteError(); app.WriteError("to..."); app.WriteError(); app.WriteError(isVerbose ? folders.ToVerboseString() : folders.ToString()); app.WriteError(); commit = app.GetConfirmation($"at position {pos}?"); app.WriteError(); } if (commit) { int p = pos - 1; foreach (var f in added) { folders.Insert(p++, f); } } if (options == PathFolderOptions.Process) { app.WriteOut(folders.ToInlineString()); } else if (commit) { folders.Commit(); } if (commit) { return(new CommandResult(true, $"{added.Count} folder(s) added to PATH at position {pos}")); } else { return(new CommandResult(false, "Add folders operation canceled")); } } catch (Exception ex) { return(new CommandResult(false, "Unable to add folders to command", ex)); } }