public bool Validate(CommandLineArgumentInput input) { bool ret = false; if (input.operation == "help") { ret = true; //suspend any other validation } else if (string.IsNullOrEmpty(input.sourcePath)) { Console.WriteLine("Error: Source Path is missing"); } else if (string.IsNullOrEmpty(input.targetPath)) { Console.WriteLine("Error: Target Path is missing"); } else if (!fileSystem.Directory.Exists(input.sourcePath)) { Console.WriteLine("Error: The Source Path does not exist"); } else { ret = true; } if (!ret) { console.PrintUsage(); } return(ret); }
public void ValidInput() { var str = "1+2"; var input = new CommandLineArgumentInput(new[] { str }); Assert.Equal(input.Get(), str); }
public CommandLineArgumentInput ParseArguments(string[] args) { CommandLineArgumentInput parsedArguments = new CommandLineArgumentInput(); if (args.Length >= 1 && args[0] == "/?") { parsedArguments.operation = "help"; } else if (args.Length >= 2) { parsedArguments.sourcePath = args[0]; parsedArguments.targetPath = args[1]; } int idx = 2; string thisOption = string.Empty; List <string> optionValues = new List <string>(); string thisValue, lastOption; while (idx < args.Length) { thisValue = args[idx]; if (thisValue.Substring(0, 1) == "/") { thisOption = thisValue; parsedArguments.options.Add(thisOption, new List <string>()); continue; } else if (thisOption != string.Empty) { parsedArguments.options[thisOption].Add(thisValue); } else { Console.WriteLine($"Argument ignored: {thisValue}"); } idx++; } return(parsedArguments); }
static void Main(string[] args) { ConsoleService consoleService = new ConsoleService(); IFileSystem fileSystem = new FileSystem() as IFileSystem; FileSyncLogic logic = new FileSyncLogic(fileSystem); InputValidationService inputValidationService = new InputValidationService(consoleService, fileSystem); CommandLineArgumentInput input = consoleService.ParseArguments(args); if (!inputValidationService.Validate(input)) { return; } if (input.operation == "help") { consoleService.PrintHelp(); } else { logic.SyncFolders(input); } }
public void SyncFolders(CommandLineArgumentInput input) { SyncFolders(input.sourcePath, input.targetPath); }
public void InvalidInput(params string[] args) { var input = new CommandLineArgumentInput(args); Assert.Throws <InvalidInputException>(input.Get); }