private static MigratorConfiguration Run(string[] args) { var tokenizer = new Tokenizer(); var tokens = tokenizer.Tokenize(args); var tokenManager = new TokenManager(tokens); IEnumerable <ICommand> commands = GetAllCommands(); var configuration = new MigratorConfiguration(); while (tokenManager.HasToken()) { var currentToken = tokenManager.GetToken(); tokenManager.Consume(); if (currentToken.Type != TokenType.Switch) { throw new ArgumentException($"Invalid switch {currentToken.RawValue}"); } var command = commands.FirstOrDefault(i => string.Equals(i.ShortOption, (string)currentToken.Value, i.CaseSensitive ? StringComparison.InvariantCulture : StringComparison.InvariantCultureIgnoreCase)); if (command == null) { command = commands.FirstOrDefault(i => string.Equals(i.Option, (string)currentToken.Value, i.CaseSensitive ? StringComparison.InvariantCulture : StringComparison.InvariantCultureIgnoreCase)); } if (command == null) { throw new ArgumentException($"Unkown switch {currentToken.RawValue}"); } command.Execute(configuration, tokenManager); } return(configuration); }
public void Execute(MigratorConfiguration migratorConfiguration, TokenManager tokenManager) { if (tokenManager.HasToken()) { var token = tokenManager.GetToken(); if (token.Type == TokenType.Boolean) { migratorConfiguration.ShowVerbose = (bool)token.Value; tokenManager.Consume(); } else { migratorConfiguration.ShowVerbose = true; } } else { migratorConfiguration.ShowVerbose = true; } }
public void Execute(MigratorConfiguration migratorConfiguration, TokenManager tokenManager) { if (!tokenManager.HasToken()) { throw new ArgumentException("No value provided for -d|--directory"); } var token = tokenManager.GetToken(); tokenManager.Consume(); if (token.Type != TokenType.String) { throw new ArgumentException("No valid value provided for -d|--directory"); } var dir = token.Value.ToString(); if (!Directory.Exists(dir)) { throw new DirectoryNotFoundException($"Directory '{dir}' does not exist."); } migratorConfiguration.Directory = dir; }
public void Execute(MigratorConfiguration migratorConfiguration, TokenManager tokenManager) { if (!tokenManager.HasToken()) { throw new ArgumentException("No value provided for -a|--assembly"); } var token = tokenManager.GetToken(); tokenManager.Consume(); if (token.Type != TokenType.String) { throw new ArgumentException("No valid value provided for -a|--assembly"); } var path = token.Value.ToString(); if (!File.Exists(path)) { throw new FileNotFoundException($"File '{path}' does not exist."); } migratorConfiguration.AssemblyPath = path; }