private ICommand GetCommandAndValidate(EvoOptions options) { //store the options in the container for other classes that depend on it _kernel.Bind<EvoOptions>().ToConstant(options); //get the command by name var cmd = _kernel.Get<ICommand>(x => x.Name == options.Command); if(cmd == null) PrintUsage("Unknown command: " + options.Command); else { if (!cmd.IsValid()) { if (!cmd.OutputCommandUsage(Console.Out)) { PrintUsage("Invalid arguments for command: " + options.Command); } return null; } } return cmd; }
public void SetOptions(EvoOptions options) { options.Command = _args.ObtainAndRemove(0); if(_settings == null) Parse(); foreach (var key in _settings.Keys) { var value = _settings[key]; if(! value.IsNullOrEmpty()) ParseArgumentAndValue(key, value, options); else options.AdditionalArgs.Add(key); } }
public void Run(IEnumerable<string> args) { _args = new List<string>(args); if(!CheckEmptyArgsAndOutputUsage()) return; var parser = new ArgumentParser(_args); var options = new EvoOptions(); parser.SetOptions(options); if(!parser.IsValid) { PrintUsage(parser.ErrorMessage); return; } ICommand cmd = GetCommandAndValidate(options); if (cmd == null) return; RunCommand(cmd); }
public ListCommand(IFileSystem fileSystem, IDatabase database, EvoOptions options) : base(database, options) { FileSystem = fileSystem; }
private void ParseArgumentAndValue(string arg, string value, EvoOptions options) { switch (arg) { case "server": options.ServerName = value; break; case "db": options.Database = value; break; case "username": options.Username = value; break; case "password": options.Password = value; break; case "config": options.ConfigPath = value; break; default: IsValid = false; ErrorMessage = "Unknown argument:" + arg; break; } }
public DropDatabaseCommand(IDatabase database, EvoOptions options) : base(database, options) { }
public CreateDatabaseCommand(IDatabase database, EvoOptions options) : base(database, options) { }
public CreateMigrationCommand(IFileSystem filesystem, IDatabase database, EvoOptions options) : base(database, options) { _filesystem = filesystem; }
public CommandBase(IDatabase database, EvoOptions options) { Database = database; Options = options; }
public MigrationFactory(EvoOptions options) { _baseDir = options.ScriptDirectory; _factory = new DslFactory(); _factory.Register<MigrationBase>(new EvoEngine()); }