コード例 #1
0
        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);
        }
コード例 #2
0
        public void ValidInput()
        {
            var str   = "1+2";
            var input = new CommandLineArgumentInput(new[] { str });

            Assert.Equal(input.Get(), str);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
 public void SyncFolders(CommandLineArgumentInput input)
 {
     SyncFolders(input.sourcePath, input.targetPath);
 }
コード例 #6
0
        public void InvalidInput(params string[] args)
        {
            var input = new CommandLineArgumentInput(args);

            Assert.Throws <InvalidInputException>(input.Get);
        }