]> git.saurik.com Git - apt.git/blobdiff - cmdline/apt-cdrom.cc
deduplicate main methods
[apt.git] / cmdline / apt-cdrom.cc
index 327039e000ddfc7886f835eb15f665b9377a49cb..3fc3faf4afe1960f0846ad2d86ef56eefc36b8bb 100644 (file)
@@ -32,6 +32,7 @@
 
 #include <apt-private/private-cmndline.h>
 #include <apt-private/private-output.h>
+#include <apt-private/private-main.h>
 
 #include <apti18n.h>
                                                                        /*}}}*/
@@ -44,12 +45,12 @@ protected:
    OpTextProgress Progress;
    void Prompt(const char *Text);
    string PromptLine(const char *Text);
-   bool AskCdromName(string &name);
+   bool AskCdromName(string &name) APT_OVERRIDE;
 
 public:
-   virtual void Update(string text, int current);
-   virtual bool ChangeCdrom();
-   virtual OpProgress* GetOpProgress();
+   virtual void Update(string text, int current) APT_OVERRIDE;
+   virtual bool ChangeCdrom() APT_OVERRIDE;
+   virtual OpProgress* GetOpProgress() APT_OVERRIDE;
 };
 
 void pkgCdromTextStatus::Prompt(const char *Text)
@@ -89,7 +90,7 @@ void pkgCdromTextStatus::Update(string text, int /*current*/)
 
 bool pkgCdromTextStatus::ChangeCdrom()
 {
-   Prompt(_("Please insert a Disc in the drive and press enter"));
+   Prompt(_("Please insert a Disc in the drive and press [Enter]"));
    return true;
 }
 
@@ -203,25 +204,30 @@ static bool DoIdent(CommandLine &)
 }
                                                                        /*}}}*/
 // ShowHelp - Show the help screen                                     /*{{{*/
-static bool ShowHelp(CommandLine &)
+static bool ShowHelp(CommandLine &, CommandLine::DispatchWithHelp const * Cmds)
 {
-   ioprintf(cout,_("%s %s for %s compiled on %s %s\n"),PACKAGE,PACKAGE_VERSION,
-           COMMON_ARCH,__DATE__,__TIME__);
+   ioprintf(cout, "%s %s (%s)\n", PACKAGE, PACKAGE_VERSION, COMMON_ARCH);
+
    if (_config->FindB("version") == true)
       return true;
-   
-   cout << 
-      "Usage: apt-cdrom [options] command\n"
+
+   std::cout <<
+      _("Usage: apt-cdrom [options] command\n"
       "\n"
       "apt-cdrom is a tool to add CDROM's to APT's source list. The\n"
-      "CDROM mount point and device information is taken from apt.conf\n"
-      "and /etc/fstab.\n"
-      "\n"
-      "Commands:\n"
-      "   add - Add a CDROM\n"
-      "   ident - Report the identity of a CDROM\n"
-      "\n"
-      "Options:\n"
+      "CDROM mount point and device information is taken from apt.conf,\n"
+      "udev and /etc/fstab.\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"
       "  -d   CD-ROM mount point\n"
       "  -r   Rename a recognized CD-ROM\n"
@@ -231,37 +237,26 @@ static bool ShowHelp(CommandLine &)
       "  --no-auto-detect Do not try to auto detect drive and mount point\n"
       "  -c=? Read this configuration file\n"
       "  -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
-      "See fstab(5)\n";
+      "See fstab(5)\n");
    return true;
 }
                                                                        /*}}}*/
 int main(int argc,const char *argv[])                                  /*{{{*/
 {
-   CommandLine::Dispatch Cmds[] = {
-      {"add",&DoAdd},
-      {"ident",&DoIdent},
-      {"help",&ShowHelp},
-      {0,0}};
+   InitLocale();
 
-   std::vector<CommandLine::Args> Args = getCommandArgs("apt-cdrom", CommandLine::GetCommand(Cmds, argc, argv));
-
-   // Set up gettext support
-   setlocale(LC_ALL,"");
-   textdomain(PACKAGE);
+   CommandLine::DispatchWithHelp Cmds[] = {
+      {"add", &DoAdd, "Add a CDROM"},
+      {"ident", &DoIdent, "Report the identity of a CDROM"},
+      {nullptr, nullptr, nullptr}
+   };
 
    // Parse the command line and initialize the package library
    CommandLine CmdL;
-   ParseCommandLine(CmdL, Cmds, Args.data(), &_config, &_system, argc, argv, ShowHelp);
+   ParseCommandLine(CmdL, Cmds, "apt-cdrom", &_config, &_system, argc, argv, ShowHelp);
 
    InitOutput();
 
-   // Match the operation
-   bool returned = CmdL.DispatchArg(Cmds);
-
-   if (_config->FindI("quiet",0) > 0)
-      _error->DumpErrors();
-   else
-      _error->DumpErrors(GlobalError::DEBUG);
-   return returned == true ? 0 : 100;
+   return DispatchCommandLine(CmdL, Cmds);
 }
                                                                        /*}}}*/