summaryrefslogtreecommitdiff
path: root/apt-private
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2015-10-27 09:57:26 +0100
committerDavid Kalnischkies <david@kalnischkies.de>2015-11-04 18:04:05 +0100
commit8561c2fedae26aecd8ba758a5e7ef686ba1243f3 (patch)
tree2dd8bd0c15f75064f2a4f8d7bd4bd9e30b307998 /apt-private
parentc094c868786f70bef8a00625fd62be1fa404b220 (diff)
downloadapt-8561c2fedae26aecd8ba758a5e7ef686ba1243f3.tar.gz
revamp all tools help messages
The general idea is: A small paragraph on the tool itself as a description, a list of the most used (!= all) commands available in the tool, a remark where to find more information on the tool and its commands (aka: in the manpage) and finally a common block referring to even more manpages. In exchange options are completely omitted from the output as well as deprecated or obscure commands. (Better) Information about them is available in the manpages anyway and the few options which were listed before were also the least interesting ones (-o -c -q and co are hardly of interest for someone totally new looking to find info by asking for help and anyone with a bit of experience doesn't need this short list. Those would need a list of options applying to the command they call, but they are too numerous and command specific to list them sanely in this context.
Diffstat (limited to 'apt-private')
-rw-r--r--apt-private/private-cmndline.cc67
-rw-r--r--apt-private/private-cmndline.h3
2 files changed, 53 insertions, 17 deletions
diff --git a/apt-private/private-cmndline.cc b/apt-private/private-cmndline.cc
index 4e80314f1..4231c4f0e 100644
--- a/apt-private/private-cmndline.cc
+++ b/apt-private/private-cmndline.cc
@@ -7,14 +7,17 @@
#include <apt-pkg/pkgsystem.h>
#include <apt-pkg/init.h>
#include <apt-pkg/error.h>
+#include <apt-pkg/strutl.h>
#include <apt-private/private-cmndline.h>
-#include <vector>
#include <stdarg.h>
#include <string.h>
#include <stdlib.h>
+#include <vector>
+#include <iomanip>
+
#include <apti18n.h>
/*}}}*/
@@ -362,23 +365,57 @@ std::vector<CommandLine::Args> getCommandArgs(APT_CMD const Program, char const
/*}}}*/
#undef CmdMatches
#undef addArg
-static bool ShowCommonHelp(APT_CMD const Binary, CommandLine &CmdL, aptDispatchWithHelp const * Cmds)/*{{{*/
+static void ShowHelpListCommands(std::vector<aptDispatchWithHelp> const &Cmds)/*{{{*/
{
- std::cout << PACKAGE << " " << PACKAGE_VERSION << " (" << COMMON_ARCH << ")" << std::endl;
- if (_config->FindB("version") == true && Binary != APT_CMD::APT_GET)
- return true;
- return ShowHelp(CmdL, Cmds);
+ if (Cmds.empty() || Cmds[0].Match == nullptr)
+ return;
+ std::cout << std::endl << _("Most used commands:") << std::endl;
+ for (auto const &c: Cmds)
+ {
+ if (c.Help == nullptr)
+ continue;
+ std::cout << " " << c.Match << " - " << c.Help << std::endl;
+ }
}
/*}}}*/
-void ShowHelpListCommands(aptDispatchWithHelp const * Cmds) /*{{{*/
+static bool ShowCommonHelp(APT_CMD const Binary, CommandLine &CmdL, std::vector<aptDispatchWithHelp> const &Cmds)/*{{{*/
{
- std::cout << _("Commands:") << std::endl;
- for (; Cmds->Handler != nullptr; ++Cmds)
+ std::cout << PACKAGE << " " << PACKAGE_VERSION << " (" << COMMON_ARCH << ")" << std::endl;
+ if (_config->FindB("version") == true && Binary != APT_CMD::APT_GET)
+ return true;
+ if (ShowHelp(CmdL) == false)
+ return false;
+ if (_config->FindB("version") == true || Binary == APT_CMD::APT_FTPARCHIVE)
+ return true;
+ ShowHelpListCommands(Cmds);
+ std::cout << std::endl;
+ char const * cmd = nullptr;
+ switch (Binary)
{
- if (Cmds->Help == nullptr)
- continue;
- std::cout << " " << Cmds->Match << " - " << Cmds->Help << std::endl;
+ case APT_CMD::APT: cmd = "apt(8)"; break;
+ case APT_CMD::APT_CACHE: cmd = "apt-cache(8)"; break;
+ case APT_CMD::APT_CDROM: cmd = "apt-cdrom(8)"; break;
+ case APT_CMD::APT_CONFIG: cmd = "apt-config(8)"; break;
+ case APT_CMD::APT_EXTRACTTEMPLATES: cmd = "apt-extracttemplates(1)"; break;
+ case APT_CMD::APT_FTPARCHIVE: cmd = "apt-ftparchive(1)"; break;
+ case APT_CMD::APT_GET: cmd = "apt-get(8)"; break;
+ case APT_CMD::APT_HELPER: cmd = nullptr; break;
+ case APT_CMD::APT_INTERNAL_SOLVER: cmd = nullptr; break;
+ case APT_CMD::APT_MARK: cmd = "apt-mark(8)"; break;
+ case APT_CMD::APT_SORTPKG: cmd = "apt-sortpkgs(1)"; break;
}
+ if (cmd != nullptr)
+ ioprintf(std::cout, _("See %s for more information about the available commands."), cmd);
+ std::cout << std::endl <<
+ _("Configuration options and syntax is detailed in apt.conf(5).\n"
+ "Information about how to configure sources can be found in sources.list(5).\n"
+ "Package and version choices can be expressed via apt_preferences(5).\n"
+ "Security details are available in apt-secure(8).\n");
+ if (Binary == APT_CMD::APT_GET || Binary == APT_CMD::APT)
+ std::cout << std::right << std::setw(70) << _("This APT has Super Cow Powers.") << std::endl;
+ else if (Binary == APT_CMD::APT_HELPER)
+ std::cout << std::right << std::setw(70) << _("This APT helper has Super Meep Powers.") << std::endl;
+ return true;
}
/*}}}*/
static void BinarySpecificConfiguration(char const * const Binary) /*{{{*/
@@ -440,7 +477,7 @@ std::vector<CommandLine::Dispatch> ParseCommandLine(CommandLine &CmdL, APT_CMD c
(Sys != NULL && pkgInitSystem(*_config, *Sys) == false))
{
if (_config->FindB("version") == true)
- ShowCommonHelp(Binary, CmdL, CmdsWithHelp.data());
+ ShowCommonHelp(Binary, CmdL, CmdsWithHelp);
_error->DumpErrors();
exit(100);
@@ -450,12 +487,12 @@ std::vector<CommandLine::Dispatch> ParseCommandLine(CommandLine &CmdL, APT_CMD c
if (_config->FindB("help") == true || _config->FindB("version") == true ||
(CmdL.FileSize() > 0 && strcmp(CmdL.FileList[0], "help") == 0))
{
- ShowCommonHelp(Binary, CmdL, CmdsWithHelp.data());
+ ShowCommonHelp(Binary, CmdL, CmdsWithHelp);
exit(0);
}
if (Cmds.empty() == false && CmdL.FileSize() == 0)
{
- ShowCommonHelp(Binary, CmdL, CmdsWithHelp.data());
+ ShowCommonHelp(Binary, CmdL, CmdsWithHelp);
exit(1);
}
return Cmds;
diff --git a/apt-private/private-cmndline.h b/apt-private/private-cmndline.h
index 6a6885a33..819eb77cc 100644
--- a/apt-private/private-cmndline.h
+++ b/apt-private/private-cmndline.h
@@ -23,6 +23,7 @@ enum class APT_CMD {
APT_SORTPKG,
};
+bool ShowHelp(CommandLine &CmdL);
struct aptDispatchWithHelp
{
const char *Match;
@@ -30,9 +31,7 @@ struct aptDispatchWithHelp
const char *Help;
};
std::vector<aptDispatchWithHelp> GetCommands();
-bool ShowHelp(CommandLine &CmdL, aptDispatchWithHelp const * Cmds);
-APT_PUBLIC void ShowHelpListCommands(aptDispatchWithHelp const * Cmds);
APT_PUBLIC std::vector<CommandLine::Dispatch> ParseCommandLine(CommandLine &CmdL, APT_CMD const Binary,
Configuration * const * const Cnf, pkgSystem ** const Sys, int const argc, const char * argv[]);
APT_PUBLIC unsigned short DispatchCommandLine(CommandLine &CmdL, std::vector<CommandLine::Dispatch> const &Cmds);