X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/cbbee23e7768750ca1c8b49bdfbf8a650131bbb6..6257bfdbff8bd15e41b5667a7a10bc123574cb10:/cmdline/apt-mark.cc diff --git a/cmdline/apt-mark.cc b/cmdline/apt-mark.cc index 361d4e553..132bd7ef6 100644 --- a/cmdline/apt-mark.cc +++ b/cmdline/apt-mark.cc @@ -24,6 +24,7 @@ #include #include +#include #include #include @@ -279,43 +280,21 @@ static bool ShowSelection(CommandLine &CmdL) /*{{{*/ return true; } /*}}}*/ -// ShowHelp - Show a help screen /*{{{*/ -static bool ShowHelp(CommandLine &, CommandLine::DispatchWithHelp const * Cmds) +bool ShowHelp(CommandLine &) /*{{{*/ { - ioprintf(std::cout, "%s %s (%s)\n", PACKAGE, PACKAGE_VERSION, COMMON_ARCH); - std::cout << _("Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n" "\n" "apt-mark is a simple command line interface for marking packages\n" - "as manually or automatically installed. It can also list marks.\n") - << std::endl - << _("Commands:") << std::endl; - - for (; Cmds->Handler != nullptr; ++Cmds) - { - if (Cmds->Help == nullptr) - continue; - std::cout << " " << Cmds->Match << " - " << Cmds->Help << std::endl; - } - - std::cout << std::endl - << _("Options:\n" - " -h This help text.\n" - " -q Loggable output - no progress indicator\n" - " -qq No output except for errors\n" - " -s No-act. Just prints what would be done.\n" - " -f read/write auto/manual marking in the given file\n" - " -c=? Read this configuration file\n" - " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n" - "See the apt-mark(8) and apt.conf(5) manual pages for more information.") - << std::endl; + "as manually or automatically installed. It can also be used to\n" + "manipulate the dpkg(1) selection states of packages, and to list\n" + "all packages with or without a certain marking.\n"); return true; } /*}}}*/ -int main(int argc,const char *argv[]) /*{{{*/ +std::vector GetCommands() /*{{{*/ { - CommandLine::DispatchWithHelp Cmds[] = { + return { {"auto",&DoAuto, _("Mark the given packages as automatically installed")}, {"manual",&DoAuto, _("Mark the given packages as manually installed")}, {"hold",&DoSelection, _("Mark a package as held back")}, @@ -336,27 +315,17 @@ int main(int argc,const char *argv[]) /*{{{*/ {"unmarkauto", &DoMarkAuto, nullptr}, {nullptr, nullptr, nullptr} }; - - std::vector Args = getCommandArgs("apt-mark", CommandLine::GetCommand(Cmds, argc, argv)); - - // Set up gettext support - setlocale(LC_ALL,""); - textdomain(PACKAGE); +} + /*}}}*/ +int main(int argc,const char *argv[]) /*{{{*/ +{ + InitLocale(); CommandLine CmdL; - ParseCommandLine(CmdL, Cmds, Args.data(), &_config, &_system, argc, argv, ShowHelp); + auto const Cmds = ParseCommandLine(CmdL, APT_CMD::APT_MARK, &_config, &_system, argc, argv); InitOutput(); - // Match the operation - CmdL.DispatchArg(Cmds); - - // Print any errors or warnings found during parsing - bool const Errors = _error->PendingError(); - if (_config->FindI("quiet",0) > 0) - _error->DumpErrors(); - else - _error->DumpErrors(GlobalError::DEBUG); - return Errors == true ? 100 : 0; + return DispatchCommandLine(CmdL, Cmds); } /*}}}*/