]>
git.saurik.com Git - apt.git/blob - cmdline/apt.cc
1 // -*- mode: cpp; mode: fold -*-
3 /* ######################################################################
7 Returns 100 on failure, 0 on success.
9 ##################################################################### */
11 // Include Files /*{{{*/
25 #include <apt-pkg/error.h>
26 #include <apt-pkg/cachefile.h>
27 #include <apt-pkg/cacheset.h>
28 #include <apt-pkg/init.h>
29 #include <apt-pkg/progress.h>
30 #include <apt-pkg/sourcelist.h>
31 #include <apt-pkg/cmndline.h>
32 #include <apt-pkg/strutl.h>
33 #include <apt-pkg/fileutl.h>
34 #include <apt-pkg/pkgrecords.h>
35 #include <apt-pkg/srcrecords.h>
36 #include <apt-pkg/version.h>
37 #include <apt-pkg/policy.h>
38 #include <apt-pkg/tagfile.h>
39 #include <apt-pkg/algorithms.h>
40 #include <apt-pkg/sptr.h>
41 #include <apt-pkg/pkgsystem.h>
42 #include <apt-pkg/indexfile.h>
43 #include <apt-pkg/metaindex.h>
44 #include <apt-pkg/hashes.h>
48 #include <apt-private/private-list.h>
49 #include <apt-private/private-search.h>
50 #include <apt-private/private-install.h>
51 #include <apt-private/private-output.h>
52 #include <apt-private/private-update.h>
53 #include <apt-private/private-cmndline.h>
54 #include <apt-private/private-moo.h>
55 #include <apt-private/private-upgrade.h>
56 #include <apt-private/private-show.h>
57 #include <apt-private/private-main.h>
58 #include <apt-private/private-utils.h>
59 #include <apt-private/private-sources.h>
64 bool ShowHelp(CommandLine
&CmdL
)
66 ioprintf(c1out
,_("%s %s for %s compiled on %s %s\n"),PACKAGE
,PACKAGE_VERSION
,
67 COMMON_ARCH
,__DATE__
,__TIME__
);
69 // FIXME: generate from CommandLine
71 _("Usage: apt [options] command\n"
75 " list - list packages based on package names\n"
76 " search - search in package descriptions\n"
77 " show - show package details\n"
79 " update - update list of available packages\n"
81 " install - install packages\n"
82 " remove - remove packages\n"
84 " upgrade - upgrade the systems packages\n"
86 " edit-sources - edit the source information file\n"
92 // figure out what kind of upgrade the user wants
93 bool DoAptUpgrade(CommandLine
&CmdL
)
95 if (_config
->FindB("Apt::Cmd::Dist-Upgrade"))
96 return DoDistUpgrade(CmdL
);
98 return DoUpgradeWithAllowNewPackages(CmdL
);
101 int main(int argc
, const char *argv
[]) /*{{{*/
103 CommandLine::Dispatch Cmds
[] = {{"list",&List
},
104 {"search", &FullTextSearch
},
105 {"show", &APT::Cmd::ShowPackage
},
107 {"install",&DoInstall
},
108 {"remove", &DoInstall
},
109 {"purge", &DoInstall
},
110 {"update",&DoUpdate
},
111 {"upgrade",&DoAptUpgrade
},
113 {"edit-sources",&EditSources
},
119 std::vector
<CommandLine::Args
> Args
= getCommandArgs("apt", CommandLine::GetCommand(Cmds
, argc
, argv
));
123 // Set up gettext support
124 setlocale(LC_ALL
,"");
127 if(pkgInitConfig(*_config
) == false)
129 _error
->DumpErrors();
133 // FIXME: move into a new libprivate/private-install.cc:Install()
134 _config
->Set("DPkgPM::Progress", "1");
135 _config
->Set("Apt::Color", "1");
137 // Parse the command line and initialize the package library
138 CommandLine
CmdL(Args
.data(), _config
);
139 if (CmdL
.Parse(argc
, argv
) == false ||
140 pkgInitSystem(*_config
, _system
) == false)
142 _error
->DumpErrors();
146 if(!isatty(STDOUT_FILENO
) &&
147 _config
->FindB("Apt::Cmd::Disable-Script-Warning", false) == false)
149 std::cerr
<< std::endl
150 << "WARNING: " << argv
[0] << " "
151 << "does not have a stable CLI interface yet. "
152 << "Use with caution in scripts."
156 if (!isatty(STDOUT_FILENO
) && _config
->FindI("quiet", -1) == -1)
157 _config
->Set("quiet","1");
159 // See if the help should be shown
160 if (_config
->FindB("help") == true ||
161 _config
->FindB("version") == true ||
162 CmdL
.FileSize() == 0)
168 // see if we are in simulate mode
169 CheckSimulateMode(CmdL
);
172 CmdL
.DispatchArg(Cmds
);
174 // Print any errors or warnings found during parsing
175 bool const Errors
= _error
->PendingError();
176 if (_config
->FindI("quiet",0) > 0)
177 _error
->DumpErrors();
179 _error
->DumpErrors(GlobalError::DEBUG
);
180 return Errors
== true ? 100 : 0;