Commands - _commands, _zshcommands

- Migrated handleCompletionCommand and handleZshCompletionCommands
  to CmdCommands.
This commit is contained in:
Paul Beckingham 2011-05-28 14:57:48 -04:00
parent 330b148ca9
commit 33d13ddb1d
9 changed files with 177 additions and 217 deletions

View file

@ -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

View file

@ -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 <sstream>
#include <stdlib.h>
#include <Context.h>
#include <Command.h>
#include <CmdCommands.h>
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 <std::string> commands;
std::map <std::string, Command*>::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 <std::string>::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 <std::string> commands;
std::map <std::string, Command*>::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 <std::string>::iterator c;
for (c = commands.begin (); c != commands.end (); ++c)
out << *c << ":" << context.commands[*c]->description () << "\n";
output = out.str ();
return 0;
}
////////////////////////////////////////////////////////////////////////////////

View file

@ -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 <string>
#include <Command.h>
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
////////////////////////////////////////////////////////////////////////////////

View file

@ -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;
}

View file

@ -28,6 +28,7 @@
#include <iostream>
#include <vector>
#include <Command.h>
#include <CmdCommands.h>
#include <CmdCustom.h>
#include <CmdDiagnostics.h>
#include <CmdEdit.h>
@ -51,21 +52,23 @@ void Command::factory (std::map <std::string, Command*>& 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 <std::string> variables;