From 33d13ddb1d7cd1b264def5d8ca21ce8c4d4fb0c3 Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Sat, 28 May 2011 14:57:48 -0400 Subject: [PATCH] Commands - _commands, _zshcommands - Migrated handleCompletionCommand and handleZshCompletionCommands to CmdCommands. --- src/Cmd.cpp | 4 - src/Context.cpp | 2 - src/command.cpp | 193 ----------------------------------- src/commands/CMakeLists.txt | 1 + src/commands/CmdCommands.cpp | 108 ++++++++++++++++++++ src/commands/CmdCommands.h | 49 +++++++++ src/commands/CmdTags.cpp | 2 +- src/commands/Command.cpp | 33 +++--- src/main.h | 2 - 9 files changed, 177 insertions(+), 217 deletions(-) create mode 100644 src/commands/CmdCommands.cpp create mode 100644 src/commands/CmdCommands.h diff --git a/src/Cmd.cpp b/src/Cmd.cpp index b59bbdddc..c6e07d899 100644 --- a/src/Cmd.cpp +++ b/src/Cmd.cpp @@ -130,11 +130,9 @@ void Cmd::load () if (commands.size () == 0) { commands.push_back ("_projects"); - commands.push_back ("_commands"); commands.push_back ("_ids"); commands.push_back ("_config"); commands.push_back ("_query"); - commands.push_back ("_zshcommands"); commands.push_back ("_zshids"); commands.push_back ("export.csv"); commands.push_back ("export.ical"); @@ -229,11 +227,9 @@ void Cmd::allCommands (std::vector & all) const bool Cmd::isReadOnlyCommand () { if (command == "_projects" || - command == "_commands" || command == "_ids" || command == "_config" || command == "_query" || - command == "_zshcommands" || command == "_zshids" || command == "export.csv" || command == "export.ical" || diff --git a/src/Context.cpp b/src/Context.cpp index c6b46dbe9..eebbf3644 100644 --- a/src/Context.cpp +++ b/src/Context.cpp @@ -284,11 +284,9 @@ int Context::dispatch (std::string &out) else if (cmd.command == "count") { rc = handleCount (out); } else if (cmd.command == "ids") { rc = handleIds (out); } else if (cmd.command == "_projects") { rc = handleCompletionProjects (out); } - else if (cmd.command == "_commands") { rc = handleCompletionCommands (out); } else if (cmd.command == "_ids") { rc = handleCompletionIDs (out); } else if (cmd.command == "_config") { rc = handleCompletionConfig (out); } else if (cmd.command == "_query") { rc = handleQuery (out); } - else if (cmd.command == "_zshcommands") { rc = handleZshCompletionCommands (out); } else if (cmd.command == "_zshids") { rc = handleZshCompletionIDs (out); } else if (cmd.command == "" && sequence.size ()) { rc = handleModify (out); } diff --git a/src/command.cpp b/src/command.cpp index f6b41cc59..2ce060dc9 100644 --- a/src/command.cpp +++ b/src/command.cpp @@ -331,28 +331,6 @@ int handleCompletionProjects (std::string& outs) return 0; } -//////////////////////////////////////////////////////////////////////////////// -int handleCompletionCommands (std::string& outs) -{ - // Get a list of all commands. - std::vector commands; - context.cmd.allCommands (commands); - - std::map ::iterator i; - for (i = context.commands.begin (); i != context.commands.end (); ++i) - commands.push_back (i->first); - - // Sort alphabetically. - std::sort (commands.begin (), commands.end ()); - - std::stringstream out; - foreach (command, commands) - out << *command << "\n"; - - outs = out.str (); - return 0; -} - //////////////////////////////////////////////////////////////////////////////// int handleCompletionConfig (std::string& outs) { @@ -455,177 +433,6 @@ int handleZshCompletionIDs (std::string& outs) return 0; } - -//////////////////////////////////////////////////////////////////////////////// -int handleZshCompletionCommands (std::string& outs) -{ - // Get a list of all commands. - std::vector commands; - context.cmd.allCommands (commands); - - // Sort alphabetically. - std::sort (commands.begin (), commands.end ()); - - std::stringstream out; - foreach (command, commands) { - out << *command << ":"; - - if (*command == "add") { - out << "Adds a new task."; - } - else if (*command == "log") { - out << "Adds a new task that is already completed."; - } - else if (*command == "append") { - out << "Appends more description to an existing task."; - } - else if (*command == "prepend") { - out << "Prepends more description to an existing task."; - } - else if (*command == "annotate") { - out << "Adds an annotation to an existing task."; - } - else if (*command == "denotate") { - out << "Deletes an annotation of an existing task."; - } - else if (*command == "edit") { - out << "Launches an editor to let you modify a task directly."; - } - else if (*command == "undo") { - out << "Reverts the most recent action."; - } - else if (*command == "shell") { - out << "Launches an interactive shell."; - } - else if (*command == "duplicate") { - out << "Duplicates the specified task, and allows modifications."; - } - else if (*command == "delete") { - out << "Deletes the specified task."; - } - else if (*command == "info") { - out << "Shows all data, metadata for specified task."; - } - else if (*command == "start") { - out << "Marks specified task as started."; - } - else if (*command == "stop") { - out << "Removes the 'start' time from a task."; - } - else if (*command == "done") { - out << "Marks the specified task as completed."; - } - else if (*command == "projects") { - out << "Shows a list of all project names used."; - } - else if (*command == "tags") { - out << "Shows a list of all tags used."; - } - else if (*command == "summary") { - out << "Shows a report of task status by project."; - } - else if (*command == "timesheet") { - out << "Shows a weekly report of tasks completed and started."; - } - else if (*command == "history") { - out << "Alias to history.monthly."; - } - else if (*command == "history.monthly") { - out << "Shows a report of task history, by month."; - } - else if (*command == "history.annual") { - out << "Shows a report of task history, by year."; - } - else if (*command == "ghistory") { - out << "Alias to ghistory.monthly."; - } - else if (*command == "ghistory.monthly") { - out << "Shows a graphical report of task history, by month."; - } - else if (*command == "ghistory.annual") { - out << "Shows a graphical report of task history, by year."; - } - else if (*command == "burndown") { - out << "Alias to burndown.weekly."; - } - else if (*command == "burndown.daily") { - out << "Shows a graphical burndown chart, by day."; - } - else if (*command == "burndown.weekly") { - out << "Shows a graphical burndown chart, by week."; - } - else if (*command == "burndown.monthly") { - out << "Shows a graphical burndown chart, by month."; - } - else if (*command == "calendar") { - out << "Shows a calendar, with due tasks marked."; - } - else if (*command == "stats") { - out << "Shows task database statistics."; - } - else if (*command == "import") { - out << "Imports tasks from a variety of formats."; - } - else if (*command == "export") { - out << "Alias to export.csv."; - } - else if (*command == "export.csv") { - out << "Lists all tasks in CSV format."; - } - else if (*command == "export.ical") { - out << "Lists all tasks in iCalendar format."; - } - else if (*command == "export.vcalendar") { - out << "Lists all tasks in vCalendar format."; - } - else if (*command == "export.yaml") { - out << "Lists all tasks in YAML format."; - } - else if (*command == "merge") { - out << "Merges the specified database with the local database."; - } - else if (*command == "push") { - out << "Pushed the local database to the specified URI."; - } - else if (*command == "pull") { - out << "Overwrites the local database with that found at the URI."; - } - else if (*command == "colors") { - out << "Displays all possible colors or a named sample [legend | sample]."; - } - else if (*command == "count") { - out << "Shows only the number of matching tasks."; - } - else if (*command == "version") { - out << "Shows the task version number."; - } - else if (*command == "show") { - out << "Shows the entire task configuration variables."; - } - else if (*command == "config") { - out << "Add, modify and remove settings in the task configuration."; - } - else if (*command == "diagnostics") { - out << "Information needed when reporting a problem."; - } - else if (*command == "help") { - out << "Shows the long usage text."; - } - else if (*command == "rm") { - out << "Alias to delete."; - } - else { - // try to interpret this as custom report - out << context.config.get (std::string ("report." + *command + ".description")); - } - - out << "\n"; - } - - outs = out.str (); - return 0; -} - //////////////////////////////////////////////////////////////////////////////// void handleUndo () { diff --git a/src/commands/CMakeLists.txt b/src/commands/CMakeLists.txt index 1355ada38..b91a6c4a6 100644 --- a/src/commands/CMakeLists.txt +++ b/src/commands/CMakeLists.txt @@ -6,6 +6,7 @@ include_directories (${CMAKE_SOURCE_DIR} ${TASK_INCLUDE_DIRS}) set (commands_SRCS Command.cpp Command.h + CmdCommands.cpp CmdCommands.h CmdCustom.cpp CmdCustom.h CmdDiagnostics.cpp CmdDiagnostics.h CmdEdit.cpp CmdEdit.h diff --git a/src/commands/CmdCommands.cpp b/src/commands/CmdCommands.cpp new file mode 100644 index 000000000..ab3ad1a2e --- /dev/null +++ b/src/commands/CmdCommands.cpp @@ -0,0 +1,108 @@ +//////////////////////////////////////////////////////////////////////////////// +// taskwarrior - a command line task list manager. +// +// Copyright 2006 - 2011, Paul Beckingham, Federico Hernandez. +// All rights reserved. +// +// This program is free software; you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free Software +// Foundation; either version 2 of the License, or (at your option) any later +// version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +// details. +// +// You should have received a copy of the GNU General Public License along with +// this program; if not, write to the +// +// Free Software Foundation, Inc., +// 51 Franklin Street, Fifth Floor, +// Boston, MA +// 02110-1301 +// USA +// +//////////////////////////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include + +extern Context context; + +//////////////////////////////////////////////////////////////////////////////// +CmdCompletionCommands::CmdCompletionCommands () +{ + _keyword = "_commands"; + _usage = "task _commands"; + _description = "Generates a list of all commands, for autocompletion purposes"; + _read_only = true; + _displays_id = false; +} + +//////////////////////////////////////////////////////////////////////////////// +int CmdCompletionCommands::execute (const std::string& command_line, std::string& output) +{ + // Get a list of all commands. + std::vector commands; + + std::map ::iterator command; + for (command = context.commands.begin (); + command != context.commands.end (); + ++command) + { + commands.push_back (command->first); + } + + // Sort alphabetically. + std::sort (commands.begin (), commands.end ()); + + std::stringstream out; + std::vector ::iterator c; + for (c = commands.begin (); c != commands.end (); ++c) + out << *c << "\n"; + + output = out.str (); + return 0; +} + +//////////////////////////////////////////////////////////////////////////////// +CmdZshCommands::CmdZshCommands () +{ + _keyword = "_zshcommands"; + _usage = "task _zshcommands"; + _description = "Generates a list of all commands, for zsh autocompletion purposes"; + _read_only = true; + _displays_id = false; +} + +//////////////////////////////////////////////////////////////////////////////// +int CmdZshCommands::execute (const std::string& command_line, std::string& output) +{ + // Get a list of all commands. + std::vector commands; + + std::map ::iterator command; + for (command = context.commands.begin (); + command != context.commands.end (); + ++command) + { + commands.push_back (command->first); + } + + // Sort alphabetically. + std::sort (commands.begin (), commands.end ()); + + std::stringstream out; + std::vector ::iterator c; + for (c = commands.begin (); c != commands.end (); ++c) + out << *c << ":" << context.commands[*c]->description () << "\n"; + + output = out.str (); + return 0; +} + +//////////////////////////////////////////////////////////////////////////////// diff --git a/src/commands/CmdCommands.h b/src/commands/CmdCommands.h new file mode 100644 index 000000000..c9d804a9f --- /dev/null +++ b/src/commands/CmdCommands.h @@ -0,0 +1,49 @@ +//////////////////////////////////////////////////////////////////////////////// +// taskwarrior - a command line task list manager. +// +// Copyright 2006 - 2011, Paul Beckingham, Federico Hernandez. +// All rights reserved. +// +// This program is free software; you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free Software +// Foundation; either version 2 of the License, or (at your option) any later +// version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +// details. +// +// You should have received a copy of the GNU General Public License along with +// this program; if not, write to the +// +// Free Software Foundation, Inc., +// 51 Franklin Street, Fifth Floor, +// Boston, MA +// 02110-1301 +// USA +// +//////////////////////////////////////////////////////////////////////////////// +#ifndef INCLUDED_CMDCOMMANDS +#define INCLUDED_CMDCOMMANDS +#define L10N // Localization complete. + +#include +#include + +class CmdCompletionCommands : public Command +{ +public: + CmdCompletionCommands (); + int execute (const std::string&, std::string&); +}; + +class CmdZshCommands : public Command +{ +public: + CmdZshCommands (); + int execute (const std::string&, std::string&); +}; + +#endif +//////////////////////////////////////////////////////////////////////////////// diff --git a/src/commands/CmdTags.cpp b/src/commands/CmdTags.cpp index 06dd0a428..d402a7917 100644 --- a/src/commands/CmdTags.cpp +++ b/src/commands/CmdTags.cpp @@ -125,7 +125,7 @@ CmdCompletionTags::CmdCompletionTags () { _keyword = "_tags"; _usage = "task _tags"; - _description = "Shows only a list of all tags used."; + _description = "Shows only a list of all tags used, for autocompletion purposes."; _read_only = true; _displays_id = false; } diff --git a/src/commands/Command.cpp b/src/commands/Command.cpp index ca207051c..213994582 100644 --- a/src/commands/Command.cpp +++ b/src/commands/Command.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -51,21 +52,23 @@ void Command::factory (std::map & all) { Command* c; - c = new CmdCompletionTags (); all[c->keyword ()] = c; - c = new CmdCompletionVersion (); all[c->keyword ()] = c; - c = new CmdDiagnostics (); all[c->keyword ()] = c; - c = new CmdEdit (); all[c->keyword ()] = c; - c = new CmdExec (); all[c->keyword ()] = c; - c = new CmdHelp (); all[c->keyword ()] = c; - c = new CmdInfo (); all[c->keyword ()] = c; - c = new CmdInstall (); all[c->keyword ()] = c; - c = new CmdLogo (); all[c->keyword ()] = c; - c = new CmdShell (); all[c->keyword ()] = c; - c = new CmdShow (); all[c->keyword ()] = c; - c = new CmdTags (); all[c->keyword ()] = c; - c = new CmdTip (); all[c->keyword ()] = c; - c = new CmdUrgency (); all[c->keyword ()] = c; - c = new CmdVersion (); all[c->keyword ()] = c; + c = new CmdCompletionCommands (); all[c->keyword ()] = c; + c = new CmdCompletionTags (); all[c->keyword ()] = c; + c = new CmdCompletionVersion (); all[c->keyword ()] = c; + c = new CmdDiagnostics (); all[c->keyword ()] = c; + c = new CmdEdit (); all[c->keyword ()] = c; + c = new CmdExec (); all[c->keyword ()] = c; + c = new CmdHelp (); all[c->keyword ()] = c; + c = new CmdInfo (); all[c->keyword ()] = c; + c = new CmdInstall (); all[c->keyword ()] = c; + c = new CmdLogo (); all[c->keyword ()] = c; + c = new CmdShell (); all[c->keyword ()] = c; + c = new CmdShow (); all[c->keyword ()] = c; + c = new CmdTags (); all[c->keyword ()] = c; + c = new CmdTip (); all[c->keyword ()] = c; + c = new CmdUrgency (); all[c->keyword ()] = c; + c = new CmdVersion (); all[c->keyword ()] = c; + c = new CmdZshCommands (); all[c->keyword ()] = c; // Instantiate a command object for each custom report. std::vector variables; diff --git a/src/main.h b/src/main.h index 1bbd1f97a..83cc66324 100644 --- a/src/main.h +++ b/src/main.h @@ -58,11 +58,9 @@ int handleDone (std::string&); int handleModify (std::string&); int handleProjects (std::string&); int handleCompletionProjects (std::string&); -int handleCompletionCommands (std::string&); int handleCompletionIDs (std::string&); int handleCompletionConfig (std::string&); int handleQuery (std::string&); -int handleZshCompletionCommands (std::string&); int handleZshCompletionIDs (std::string&); int handleConfig (std::string&); int handleDelete (std::string&);