public bool Run(string[] args) { if (args.Length < 1) { PrintUsage(); return(false); } Command command; if (!_commands.TryGetValue(args[0], out command)) { _output.WriteLine("Unknown command '{0}'", args[0]); return(false); } try { command.Proc(args.Skip(1).ToArray()); switch (command.Type) { case CommandType.Task: ListNotDoneTasks(); if (_repoManager.HasRepository(_taskManager.RepositoryName)) { Repository repository = _repoManager.GetRepository(_taskManager.RepositoryName); TaskStore.SaveTaskManager(repository, _taskManager); } break; case CommandType.Repository: PrintRepositories(); TaskStore.SaveRepositoryManager(_repoManager); break; case CommandType.State: ListStates(); TaskStore.SaveStateManager(_stateManager); break; } return(true); } catch (Exception ex) { _output.WriteLine("Error: {0}", ex.Message); _output.WriteLine("Usage: <tw> {1} {2}", _ident, command.Name, command.UsageArgs); return(false); } }