summaryrefslogtreecommitdiff
path: root/cmdline/apt.cc
diff options
context:
space:
mode:
authorMichael Vogt <mvo@debian.org>2013-10-22 16:53:32 +0200
committerMichael Vogt <mvo@debian.org>2013-10-22 16:53:32 +0200
commitf62f17b489405432a3125e51471d8a00e78c5170 (patch)
treece2a6e077cb0846e75cbb3d583f4152608100adb /cmdline/apt.cc
parent9aa9db9c88fca3a9266427b0d5cc9ad53df7207e (diff)
parentc08cf1dc784a98a253296a51433f6de7d16d3125 (diff)
Merge branch 'debian/sid' into ubuntu/master
Conflicts: cmdline/apt-key configure.ac debian/apt.auto-removal.sh debian/changelog debian/control debian/rules po/apt-all.pot po/ar.po po/ast.po po/bg.po po/bs.po po/ca.po po/cs.po po/cy.po po/da.po po/de.po po/dz.po po/el.po po/es.po po/eu.po po/fi.po po/fr.po po/gl.po po/hu.po po/it.po po/ja.po po/km.po po/ko.po po/ku.po po/lt.po po/mr.po po/nb.po po/ne.po po/nl.po po/nn.po po/pl.po po/pt.po po/pt_BR.po po/ro.po po/ru.po po/sk.po po/sl.po po/sv.po po/th.po po/tl.po po/uk.po po/vi.po po/zh_CN.po po/zh_TW.po
Diffstat (limited to 'cmdline/apt.cc')
-rw-r--r--cmdline/apt.cc158
1 files changed, 158 insertions, 0 deletions
diff --git a/cmdline/apt.cc b/cmdline/apt.cc
new file mode 100644
index 000000000..e30967ec2
--- /dev/null
+++ b/cmdline/apt.cc
@@ -0,0 +1,158 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ apt - CLI UI for apt
+
+ Returns 100 on failure, 0 on success.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <cassert>
+#include <locale.h>
+#include <iostream>
+#include <unistd.h>
+#include <errno.h>
+#include <regex.h>
+#include <stdio.h>
+#include <iomanip>
+#include <algorithm>
+
+
+#include <apt-pkg/error.h>
+#include <apt-pkg/cachefile.h>
+#include <apt-pkg/cacheset.h>
+#include <apt-pkg/init.h>
+#include <apt-pkg/progress.h>
+#include <apt-pkg/sourcelist.h>
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/pkgrecords.h>
+#include <apt-pkg/srcrecords.h>
+#include <apt-pkg/version.h>
+#include <apt-pkg/policy.h>
+#include <apt-pkg/tagfile.h>
+#include <apt-pkg/algorithms.h>
+#include <apt-pkg/sptr.h>
+#include <apt-pkg/pkgsystem.h>
+#include <apt-pkg/indexfile.h>
+#include <apt-pkg/metaindex.h>
+
+#include <apti18n.h>
+
+#include <apt-private/private-list.h>
+#include <apt-private/private-search.h>
+#include <apt-private/private-install.h>
+#include <apt-private/private-output.h>
+#include <apt-private/private-update.h>
+#include <apt-private/private-cmndline.h>
+#include <apt-private/private-moo.h>
+#include <apt-private/private-upgrade.h>
+#include <apt-private/private-show.h>
+#include <apt-private/private-main.h>
+ /*}}}*/
+
+bool ShowHelp(CommandLine &CmdL)
+{
+ ioprintf(c1out,_("%s %s for %s compiled on %s %s\n"),PACKAGE,PACKAGE_VERSION,
+ COMMON_ARCH,__DATE__,__TIME__);
+
+ // FIXME: generate from CommandLine
+ c1out <<
+ _("Usage: apt [options] command\n"
+ "\n"
+ "CLI for apt.\n"
+ "Commands: \n"
+ " list - list packages based on package names\n"
+ " search - search in package descriptions\n"
+ " show - show package details\n"
+ "\n"
+ " update - update list of available packages\n"
+ " install - install packages\n"
+ " upgrade - upgrade the systems packages\n"
+ );
+
+ return true;
+}
+
+int main(int argc, const char *argv[]) /*{{{*/
+{
+ CommandLine::Dispatch Cmds[] = {{"list",&List},
+ {"search", &FullTextSearch},
+ {"show", &APT::Cmd::ShowPackage},
+ // needs root
+ {"install",&DoInstall},
+ {"remove", &DoInstall},
+ {"update",&DoUpdate},
+ {"upgrade",&DoUpgradeWithAllowNewPackages},
+ // helper
+ {"moo",&DoMoo},
+ {"help",&ShowHelp},
+ {0,0}};
+
+ std::vector<CommandLine::Args> Args = getCommandArgs("apt", CommandLine::GetCommand(Cmds, argc, argv));
+
+ if(!isatty(1))
+ {
+ std::cerr << std::endl
+ << "WARNING WARNING "
+ << argv[0]
+ << " is *NOT* intended for scripts "
+ << "use at your own peril^Wrisk"
+ << std::endl
+ << std::endl;
+ }
+
+ InitOutput();
+
+ // Set up gettext support
+ setlocale(LC_ALL,"");
+ textdomain(PACKAGE);
+
+ if(pkgInitConfig(*_config) == false)
+ {
+ _error->DumpErrors();
+ return 100;
+ }
+
+ // FIXME: move into a new libprivate/private-install.cc:Install()
+ _config->Set("DPkgPM::Progress", "1");
+ _config->Set("Apt::Color", "1");
+
+ // Parse the command line and initialize the package library
+ CommandLine CmdL(Args.data(), _config);
+ if (CmdL.Parse(argc, argv) == false ||
+ pkgInitSystem(*_config, _system) == false)
+ {
+ _error->DumpErrors();
+ return 100;
+ }
+
+ // See if the help should be shown
+ if (_config->FindB("help") == true ||
+ _config->FindB("version") == true ||
+ CmdL.FileSize() == 0)
+ {
+ ShowHelp(CmdL);
+ return 0;
+ }
+
+ // see if we are in simulate mode
+ CheckSimulateMode(CmdL);
+
+ // parse args
+ 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;
+}
+ /*}}}*/