aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2006-07-22 10:13:08 +0000
committerAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2006-07-22 10:13:08 +0000
commit4655bfeabe63295d440e4b61ed0b41deea0121c3 (patch)
tree825b3f724f32cfcdeb519a0b27fd9a5b26b010a8
parentae884592e33072e0f4203f85ba358655277085dd (diff)
downloadpaludis-4655bfeabe63295d440e4b61ed0b41deea0121c3.tar.gz
paludis-4655bfeabe63295d440e4b61ed0b41deea0121c3.tar.xz
Initial automatic man page generation support. Rather crude.
-rw-r--r--paludis/args/args_group.cc4
-rw-r--r--paludis/args/args_group.hh12
-rw-r--r--paludis/args/args_handler.cc4
-rw-r--r--paludis/args/args_handler.hh98
-rw-r--r--src/paludis/Makefile.am17
-rw-r--r--src/paludis/command_line.cc58
-rw-r--r--src/paludis/command_line.hh9
-rw-r--r--src/paludis/man_paludis.cc70
-rw-r--r--src/qualudis/Makefile.am21
-rw-r--r--src/qualudis/man_qualudis.cc71
-rw-r--r--src/qualudis/qualudis_command_line.cc30
-rw-r--r--src/qualudis/qualudis_command_line.hh21
12 files changed, 375 insertions, 40 deletions
diff --git a/paludis/args/args_group.cc b/paludis/args/args_group.cc
index eb428a7..2926e91 100644
--- a/paludis/args/args_group.cc
+++ b/paludis/args/args_group.cc
@@ -38,9 +38,11 @@ namespace paludis
};
}
-ArgsGroup::ArgsGroup(ArgsHandler * h, const std::string & name) :
+ArgsGroup::ArgsGroup(ArgsHandler * h, const std::string & name,
+ const std::string & description) :
PrivateImplementationPattern<ArgsGroup>(new Implementation<ArgsGroup>),
_name(name),
+ _description(description),
_handler(h)
{
h->add(this);
diff --git a/paludis/args/args_group.hh b/paludis/args/args_group.hh
index fcbc1c1..79b50b3 100644
--- a/paludis/args/args_group.hh
+++ b/paludis/args/args_group.hh
@@ -51,6 +51,7 @@ namespace paludis
{
private:
const std::string _name;
+ const std::string _description;
ArgsHandler * _handler;
@@ -79,7 +80,8 @@ namespace paludis
///\name Basic operations
///\{
- ArgsGroup(ArgsHandler * h, const std::string & name);
+ ArgsGroup(ArgsHandler * h, const std::string & name,
+ const std::string & description);
~ArgsGroup();
@@ -94,6 +96,14 @@ namespace paludis
}
/**
+ * Fetch our description.
+ */
+ const std::string & description() const
+ {
+ return _description;
+ }
+
+ /**
* Fetch our handler.
*/
ArgsHandler * handler() const
diff --git a/paludis/args/args_handler.cc b/paludis/args/args_handler.cc
index 8d08b15..36874d8 100644
--- a/paludis/args/args_handler.cc
+++ b/paludis/args/args_handler.cc
@@ -35,6 +35,10 @@ ArgsHandler::ArgsHandler()
{
}
+ArgsHandler::~ArgsHandler()
+{
+}
+
void
ArgsHandler::add(ArgsGroup * const g)
{
diff --git a/paludis/args/args_handler.hh b/paludis/args/args_handler.hh
index 42a5179..d86f29f 100644
--- a/paludis/args/args_handler.hh
+++ b/paludis/args/args_handler.hh
@@ -49,12 +49,21 @@ namespace paludis
private:
std::list<ArgsGroup *> _groups;
std::list<std::string> _parameters;
+ std::list<std::string> _usage_lines;
std::map<std::string, ArgsOption *> _longopts;
std::map<char, ArgsOption *> _shortopts;
protected:
/**
+ * Add a new usage line.
+ */
+ void add_usage_line(const std::string & l)
+ {
+ _usage_lines.push_back(l);
+ }
+
+ /**
* Add an new ArgsGroup (called by the ArgsGroup constructor).
*/
void add(ArgsGroup * const);
@@ -65,46 +74,42 @@ namespace paludis
void dump_to_stream(std::ostream & s) const;
public:
- /**
- * Constructor.
- */
+ ///\name Basic operations
+ ///\{
+
ArgsHandler();
+ virtual ~ArgsHandler();
+
+ ///\}
+
/**
* Parse command line arguments.
*/
void run(const int, const char * const * const);
- /**
- * Iterate over our parameters (non - and -- switches and their
- * values).
- */
+ ///\name Iterate over our parameters (non - and -- switches and their values)
+ ///\{
+
typedef std::list<std::string>::const_iterator ParametersIterator;
- /**
- * Pointer to the start of our parameters.
- */
ParametersIterator begin_parameters() const
{
return _parameters.begin();
}
- /**
- * Pointer to past the end of our parameters.
- */
ParametersIterator end_parameters() const
{
return _parameters.end();
}
- /**
- * Do we have no parameters?
- */
bool empty() const
{
return _parameters.empty();
}
+ ///\}
+
/**
* Add an ArgsOption instance.
*/
@@ -115,6 +120,67 @@ namespace paludis
_shortopts[short_name] = opt;
}
+ ///\name About our application (for documentation)
+ ///\{
+
+ /**
+ * What is our application name?
+ */
+ virtual std::string app_name() const = 0;
+
+ /**
+ * What is our application's Unix manual section?
+ */
+ virtual std::string man_section() const
+ {
+ return "1";
+ }
+
+ /**
+ * One line synopsis of what our application is.
+ */
+ virtual std::string app_synopsis() const = 0;
+
+ /**
+ * Long description of what our application is.
+ */
+ virtual std::string app_description() const = 0;
+
+ ///\}
+
+ ///\name Iterate over our usage lines (for documentation)
+ ///\{
+
+ typedef std::list<std::string>::const_iterator UsageLineIterator;
+
+ UsageLineIterator begin_usage_lines() const
+ {
+ return _usage_lines.begin();
+ }
+
+ UsageLineIterator end_usage_lines() const
+ {
+ return _usage_lines.end();
+ }
+
+ ///\}
+
+ ///\name Iterate over our groups
+ ///\{
+
+ typedef std::list<ArgsGroup *>::const_iterator ArgsGroupsIterator;
+
+ ArgsGroupsIterator begin_args_groups() const
+ {
+ return _groups.begin();
+ }
+
+ ArgsGroupsIterator end_args_groups() const
+ {
+ return _groups.end();
+ }
+
+ ///\}
};
/**
diff --git a/src/paludis/Makefile.am b/src/paludis/Makefile.am
index 1106f39..95194da 100644
--- a/src/paludis/Makefile.am
+++ b/src/paludis/Makefile.am
@@ -5,6 +5,21 @@ DEFS= \
SUBDIRS = .
bin_PROGRAMS = paludis
+noinst_PROGRAMS = man-paludis
+
+man_MANS = paludis.1
+
+paludis.1 : man-paludis
+ ./man-paludis | tee $@ | sed -e 's/^/ /'
+
+man_paludis_SOURCES = \
+ man_paludis.cc \
+ command_line.hh \
+ command_line.cc
+
+man_paludis_LDADD = \
+ $(top_builddir)/paludis/args/libpaludisargs.la \
+ $(top_builddir)/paludis/util/libpaludisutil.la
paludis_SOURCES = \
applets.hh applets.cc \
@@ -46,6 +61,6 @@ EXTRA_DIST = $(TESTS) \
install_TEST_setup.sh install_TEST_cleanup.sh \
upgrade_TEST_setup.sh upgrade_TEST_cleanup.sh
-CLEANFILES = *~ gmon.out *.gcov *.gcno *.gcda
+CLEANFILES = *~ gmon.out *.gcov *.gcno *.gcda $(man_MANS)
MAINTAINERCLEANFILES = Makefile.in
diff --git a/src/paludis/command_line.cc b/src/paludis/command_line.cc
index 8f1b82b..a7f4f61 100644
--- a/src/paludis/command_line.cc
+++ b/src/paludis/command_line.cc
@@ -22,7 +22,9 @@
CommandLine::CommandLine() :
ArgsHandler(),
- action_args(this, "Actions (specify exactly one)"),
+ action_args(this, "Actions",
+ "Selects which basic action to perform. Exactly one action should "
+ "be specified."),
a_query(&action_args, "query", 'q', "Query for package information"),
a_install(&action_args, "install", 'i', "Install one or more packages"),
a_uninstall(&action_args, "uninstall", 'u', "Uninstall one or more packages"),
@@ -33,7 +35,8 @@ CommandLine::CommandLine() :
a_info(&action_args, "info", 'I', "Display program version and system information"),
a_help(&action_args, "help", 'h', "Display program help"),
- action_args_internal(this, "More actions (mostly for internal / script use)"),
+ action_args_internal(this, "More actions",
+ "Additional actions, mostly for script and internal use."),
a_has_version(&action_args_internal, "has-version", '\0', "Check whether the specified atom is installed"),
a_best_version(&action_args_internal, "best-version", '\0', "Display the best version of the specified atom"),
a_environment_variable(&action_args_internal, "environment-variable", '\0', "Display the value of an environment "
@@ -44,12 +47,14 @@ CommandLine::CommandLine() :
a_list_categories(&action_args_internal, "list-categories", '\0', "List available categories"),
a_list_packages(&action_args_internal, "list-packages", '\0', "List available packages"),
a_list_sync_protocols(&action_args_internal, "list-sync-protocols", '\0', "List available sync protocols"),
- a_list_repository_formats(&action_args_internal, "list-repository-formats", '\0', "List available repository formats"),
+ a_list_repository_formats(&action_args_internal, "list-repository-formats", '\0',
+ "List available repository formats"),
a_list_dep_tag_categories(&action_args_internal, "list-dep-tag-categories", '\0', "List known dep tag categories"),
a_list_vulnerabilities(&action_args_internal, "list-vulnerabilities", '\0', "List known vulnerabilities"),
a_update_news(&action_args_internal, "update-news", '\0', "Regenerate news.unread files"),
- general_args(this, "General options"),
+ general_args(this, "General options",
+ "Options which are relevant for most or all actions."),
a_log_level(&general_args, "log-level", '\0', "Specify the log level",
paludis::args::EnumArg::EnumArgOptions("debug", "Show debug output (noisy)")
("qa", "Show QA messages and warnings only")
@@ -60,18 +65,21 @@ CommandLine::CommandLine() :
a_no_color(&a_no_colour, "no-color"),
a_config_suffix(&general_args, "config-suffix", 'c', "Config directory suffix"),
- query_args(this, "Query options"),
+ query_args(this, "Query options",
+ "Options which are relevant for --query."),
a_show_slot(&query_args, "show-slot", 'S', "Show SLOTs"),
a_show_deps(&query_args, "show-deps", 'D', "Show dependencies"),
a_show_metadata(&query_args, "show-metadata", 'M', "Show raw metadata"),
- install_args(this, "Install, Uninstall options"),
+ install_args(this, "Install, Uninstall options",
+ "Options which are relevant for --install or --uninstall."),
a_pretend(&install_args, "pretend", 'p', "Pretend only"),
a_preserve_world(&install_args, "preserve-world", '1', "Don't modify the world file"),
a_no_config_protection(&install_args, "no-config-protection", '\0', "Disable config file protection (dangerous)"),
a_fetch(&install_args, "fetch", 'f', "Only fetch sources; don't install anything"),
- dl_args(this, "DepList behaviour (use with caution)"),
+ dl_args(this, "DepList behaviour",
+ "Modify dependency list generation behaviour. Use with caution."),
a_dl_rdepend_post(&dl_args, "dl-rdepend-post", '\0', "Treat RDEPEND like PDEPEND",
paludis::args::EnumArg::EnumArgOptions("always", "Always")
("never", "Never")
@@ -81,19 +89,47 @@ CommandLine::CommandLine() :
a_dl_drop_circular(&dl_args, "dl-drop-circular", '\0', "Drop circular dependencies"),
a_dl_drop_all(&dl_args, "dl-drop-all", '0', "Drop all dependencies"),
a_dl_ignore_installed(&dl_args, "dl-ignore-installed", 'e', "Ignore installed packages"),
- a_dl_no_recursive_deps(&dl_args, "dl-no-recursive-deps", '\0', "Don't check runtime dependencies for installed packages"),
+ a_dl_no_recursive_deps(&dl_args, "dl-no-recursive-deps", '\0',
+ "Don't check runtime dependencies for installed packages"),
a_dl_max_stack_depth(&dl_args, "dl-max-stack-depth", '\0', "Maximum stack depth (default 100)"),
- a_dl_no_unnecessary_upgrades(&dl_args, "dl-no-unnecessary-upgrades", 'U', "Don't upgrade installed packages except where necessary as a dependency of another package"),
+ a_dl_no_unnecessary_upgrades(&dl_args, "dl-no-unnecessary-upgrades", 'U',
+ "Don't upgrade installed packages except where necessary as a dependency of another package"),
- list_args(this, "List options"),
+ list_args(this, "List options",
+ "Options relevant for one or more of the --list actions."),
a_repository(&list_args, "repository", '\0', "Matches with this repository name only"),
a_category(&list_args, "category", '\0', "Matches with this category name only"),
a_package(&list_args, "package", '\0', "Matches with this package name only"),
- owner_args(this, "Owner options"),
+ owner_args(this, "Owner options",
+ "Options relevant for the --owner actions."),
a_full_match(&owner_args, "full-match", '\0', "Match whole filename")
{
a_dl_max_stack_depth.set_argument(100);
+
+ add_usage_line("[ -q | --query ] [ query options ] [ targets ]");
+ add_usage_line("[ -i | --install ] [ install options ] [ targets ]");
+}
+
+std::string
+CommandLine::app_name() const
+{
+ return "paludis";
+}
+
+std::string
+CommandLine::app_synopsis() const
+{
+ return "The other package mangler";
+}
+
+std::string
+CommandLine::app_description() const
+{
+ return
+ "paludis is the command line interface used to handle packages. It can query and "
+ "install packages, update repositories and display information about packages "
+ "already installed on a system.";
}
CommandLine::~CommandLine()
diff --git a/src/paludis/command_line.hh b/src/paludis/command_line.hh
index 61f88e7..04ecba8 100644
--- a/src/paludis/command_line.hh
+++ b/src/paludis/command_line.hh
@@ -44,6 +44,15 @@ class CommandLine :
~CommandLine();
public:
+ ///\name Program information
+ ///\{
+
+ virtual std::string app_name() const;
+ virtual std::string app_synopsis() const;
+ virtual std::string app_description() const;
+
+ ///\}
+
/// \name Action arguments
///{
diff --git a/src/paludis/man_paludis.cc b/src/paludis/man_paludis.cc
new file mode 100644
index 0000000..5eaf612
--- /dev/null
+++ b/src/paludis/man_paludis.cc
@@ -0,0 +1,70 @@
+/* vim: set sw=4 sts=4 et foldmethod=syntax : */
+
+/*
+ * Copyright (c) 2006 Ciaran McCreesh <ciaran.mccreesh@blueyonder.co.uk>
+ *
+ * This file is part of the Paludis package manager. Paludis is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU General
+ * Public License version 2, as published by the Free Software Foundation.
+ *
+ * Paludis 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., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include "command_line.hh"
+#include "config.h"
+
+#include <iostream>
+#include <cstdlib>
+
+using std::cout;
+using std::endl;
+
+int
+main(int, char *[])
+{
+ cout << ".TH \"" << CommandLine::get_instance()->app_name() << "\" "
+ << CommandLine::get_instance()->man_section() << endl;
+
+ cout << ".SH NAME" << endl;
+ cout << CommandLine::get_instance()->app_name() << " \\- "
+ << CommandLine::get_instance()->app_synopsis() << endl;
+
+ cout << ".SH SYNOPSIS" << endl;
+
+ for (CommandLine::UsageLineIterator u(CommandLine::get_instance()->begin_usage_lines()),
+ u_end(CommandLine::get_instance()->end_usage_lines()) ; u != u_end ; ++u)
+ cout << ".B " << CommandLine::get_instance()->app_name() << " " << *u << endl << endl;
+
+ cout << ".SH DESCRIPTION" << endl;
+ cout << CommandLine::get_instance()->app_description() << endl;
+
+ cout << ".SH OPTIONS" << endl;
+
+ for (CommandLine::ArgsGroupsIterator a(CommandLine::get_instance()->begin_args_groups()),
+ a_end(CommandLine::get_instance()->end_args_groups()) ; a != a_end ; ++a)
+ {
+ cout << ".SS \"" << (*a)->name() << "\"" << endl;
+ cout << (*a)->description() << endl;
+
+ for (paludis::args::ArgsGroup::Iterator b((*a)->begin()), b_end((*a)->end()) ;
+ b != b_end ; ++b)
+ {
+ cout << ".TP" << endl;
+ cout << ".B \"";
+ if ((*b)->short_name())
+ cout << "\\-" << (*b)->short_name() << " , ";
+ cout << "\\-\\-" << (*b)->long_name() << "\"" << endl;
+ cout << (*b)->description() << endl;
+ }
+ }
+
+ return EXIT_SUCCESS;
+}
+
diff --git a/src/qualudis/Makefile.am b/src/qualudis/Makefile.am
index 1e0ded7..ddb2562 100644
--- a/src/qualudis/Makefile.am
+++ b/src/qualudis/Makefile.am
@@ -1,5 +1,3 @@
-CLEANFILES = *~ version_TEST gmon.out *.gcov *.gcno *.gcda
-MAINTAINERCLEANFILES = Makefile.in
AM_CXXFLAGS = -I$(top_srcdir)
DEFS= \
-DSYSCONFDIR=\"$(sysconfdir)\" \
@@ -10,6 +8,22 @@ SUBDIRS = .
if ENABLE_QA
bin_PROGRAMS = qualudis
+noinst_PROGRAMS = man-qualudis
+man_MANS = qualudis.1
+
+qualudis.1 : man-qualudis
+ ./man-qualudis | tee $@ | sed -e 's/^/ /'
+
+man_qualudis_SOURCES = \
+ man_qualudis.cc \
+ qualudis_command_line.hh \
+ qualudis_command_line.cc
+
+man_qualudis_LDADD = \
+ $(top_builddir)/paludis/qa/libpaludisqa.la \
+ $(top_builddir)/paludis/libpaludis.la \
+ $(top_builddir)/paludis/args/libpaludisargs.la \
+ $(top_builddir)/paludis/util/libpaludisutil.la
qualudis_SOURCES = \
qualudis_command_line.hh qualudis_command_line.cc \
@@ -32,3 +46,6 @@ version_TEST :
endif
+CLEANFILES = *~ version_TEST gmon.out *.gcov *.gcno *.gcda $(man_MANS)
+MAINTAINERCLEANFILES = Makefile.in
+
diff --git a/src/qualudis/man_qualudis.cc b/src/qualudis/man_qualudis.cc
new file mode 100644
index 0000000..3570880
--- /dev/null
+++ b/src/qualudis/man_qualudis.cc
@@ -0,0 +1,71 @@
+/* vim: set sw=4 sts=4 et foldmethod=syntax : */
+
+/*
+ * Copyright (c) 2006 Ciaran McCreesh <ciaran.mccreesh@blueyonder.co.uk>
+ *
+ * This file is part of the Paludis package manager. Paludis is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU General
+ * Public License version 2, as published by the Free Software Foundation.
+ *
+ * Paludis 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., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include "qualudis_command_line.hh"
+#include "config.h"
+
+#include <iostream>
+#include <cstdlib>
+
+using std::cout;
+using std::endl;
+
+int
+main(int, char *[])
+{
+ cout << ".TH \"" << QualudisCommandLine::get_instance()->app_name() << "\" "
+ << QualudisCommandLine::get_instance()->man_section() << endl;
+
+ cout << ".SH NAME" << endl;
+ cout << QualudisCommandLine::get_instance()->app_name() << " \\- "
+ << QualudisCommandLine::get_instance()->app_synopsis() << endl;
+
+ cout << ".SH SYNOPSIS" << endl;
+
+ for (QualudisCommandLine::UsageLineIterator u(QualudisCommandLine::get_instance()->begin_usage_lines()),
+ u_end(QualudisCommandLine::get_instance()->end_usage_lines()) ; u != u_end ; ++u)
+ cout << ".B " << QualudisCommandLine::get_instance()->app_name() << " " << *u << endl << endl;
+
+ cout << ".SH DESCRIPTION" << endl;
+ cout << QualudisCommandLine::get_instance()->app_description() << endl;
+
+ cout << ".SH OPTIONS" << endl;
+
+ for (QualudisCommandLine::ArgsGroupsIterator a(QualudisCommandLine::get_instance()->begin_args_groups()),
+ a_end(QualudisCommandLine::get_instance()->end_args_groups()) ; a != a_end ; ++a)
+ {
+ cout << ".SS \"" << (*a)->name() << "\"" << endl;
+ cout << (*a)->description() << endl;
+
+ for (paludis::args::ArgsGroup::Iterator b((*a)->begin()), b_end((*a)->end()) ;
+ b != b_end ; ++b)
+ {
+ cout << ".TP" << endl;
+ cout << ".B \"";
+ if ((*b)->short_name())
+ cout << "\\-" << (*b)->short_name() << " , ";
+ cout << "\\-\\-" << (*b)->long_name() << "\"" << endl;
+ cout << (*b)->description() << endl;
+ }
+ }
+
+ return EXIT_SUCCESS;
+}
+
+
diff --git a/src/qualudis/qualudis_command_line.cc b/src/qualudis/qualudis_command_line.cc
index dd1104f..d568901 100644
--- a/src/qualudis/qualudis_command_line.cc
+++ b/src/qualudis/qualudis_command_line.cc
@@ -22,12 +22,17 @@
QualudisCommandLine::QualudisCommandLine() :
ArgsHandler(),
- action_args(this, "Actions (specify exactly one)"),
+ action_args(this, "Actions",
+ "Selects which basic action to perform. Up to one action should "
+ "be specified. If no action is specified, the directories specifed "
+ "on the command line (or, if none, the current directory) are "
+ "checked."),
a_describe(&action_args, "describe", 'd', "Describe checks"),
a_version(&action_args, "version", 'V', "Display program version"),
a_help(&action_args, "help", 'h', "Display program help"),
- check_options(this, "Options for general checks"),
+ check_options(this, "Options for general checks",
+ "Options relevant for the --owner actions."),
a_qa_checks(&check_options, "qa-check", 'c', "Only perform given check."),
a_verbose(&check_options, "verbose", 'v', "Be verbose"),
a_log_level(&check_options, "log-level", 'L', "Specify the log level",
@@ -46,9 +51,30 @@ QualudisCommandLine::QualudisCommandLine() :
message_level(paludis::qa::qal_info)
{
+ add_usage_line("[ options ] [ directories ... ]");
}
QualudisCommandLine::~QualudisCommandLine()
{
}
+std::string
+QualudisCommandLine::app_name() const
+{
+ return "qualudis";
+}
+
+std::string
+QualudisCommandLine::app_synopsis() const
+{
+ return "A QA tool for ebuilds";
+}
+
+std::string
+QualudisCommandLine::app_description() const
+{
+ return
+ "qualudis is a QA assistant for ebuilds and ebuild repositories. It checks for "
+ "many common and potential mistakes and displays a summary of its findings. It "
+ "can also be used to commit changes to a repository's VCS.";
+}
diff --git a/src/qualudis/qualudis_command_line.hh b/src/qualudis/qualudis_command_line.hh
index d780f53..d2ef29e 100644
--- a/src/qualudis/qualudis_command_line.hh
+++ b/src/qualudis/qualudis_command_line.hh
@@ -21,8 +21,17 @@ class QualudisCommandLine :
~QualudisCommandLine();
public:
- /// \name Action arguments
- ///{
+ ///\name Program information
+ ///\{
+
+ virtual std::string app_name() const;
+ virtual std::string app_synopsis() const;
+ virtual std::string app_description() const;
+
+ ///\}
+
+ ///\name Action arguments
+ ///\{
/// Action arguments.
paludis::args::ArgsGroup action_args;
@@ -36,10 +45,10 @@ class QualudisCommandLine :
/// --help
paludis::args::SwitchArg a_help;
- ///}
+ ///\}
- /// \name Check options
- ///{
+ ///\name Check options
+ ///\{
/// Check options.
paludis::args::ArgsGroup check_options;
@@ -58,7 +67,7 @@ class QualudisCommandLine :
paludis::qa::QALevel message_level;
- ///}
+ ///\}
};