pkgman search: add -a/--all

Can be specified instead of a search string. Lists all packages.
This commit is contained in:
Ingo Weinhold
2013-08-25 17:19:14 +02:00
parent 8f9efca9a6
commit 0214aefd58
+15 -6
View File
@@ -32,14 +32,16 @@ using namespace BPackageKit;
static const char* const kShortUsage = static const char* const kShortUsage =
" %command% <search-string>\n" " %command% ( <search-string> | --all | -a )\n"
" Searches for packages matching <search-string>.\n"; " Searches for packages matching <search-string>.\n";
static const char* const kLongUsage = static const char* const kLongUsage =
"Usage: %program% %command% <search-string>\n" "Usage: %program% %command% ( <search-string> | --all | -a )\n"
"Searches for packages matching <search-string>.\n" "Searches for packages matching <search-string>.\n"
"\n" "\n"
"Options:\n" "Options:\n"
" -a, --all\n"
" List all packages. Specified instead of <search-string>.\n"
" -i, --installed-only\n" " -i, --installed-only\n"
" Only find installed packages.\n" " Only find installed packages.\n"
" -u, --uninstalled-only\n" " -u, --uninstalled-only\n"
@@ -68,9 +70,11 @@ SearchCommand::Execute(int argc, const char* const* argv)
{ {
bool installedOnly = false; bool installedOnly = false;
bool uninstalledOnly = false; bool uninstalledOnly = false;
bool listAll = false;
while (true) { while (true) {
static struct option sLongOptions[] = { static struct option sLongOptions[] = {
{ "all", no_argument, 0, 'a' },
{ "help", no_argument, 0, 'h' }, { "help", no_argument, 0, 'h' },
{ "installed-only", no_argument, 0, 'i' }, { "installed-only", no_argument, 0, 'i' },
{ "uninstalled-only", no_argument, 0, 'u' }, { "uninstalled-only", no_argument, 0, 'u' },
@@ -78,11 +82,15 @@ SearchCommand::Execute(int argc, const char* const* argv)
}; };
opterr = 0; // don't print errors opterr = 0; // don't print errors
int c = getopt_long(argc, (char**)argv, "hiu", sLongOptions, NULL); int c = getopt_long(argc, (char**)argv, "ahiu", sLongOptions, NULL);
if (c == -1) if (c == -1)
break; break;
switch (c) { switch (c) {
case 'a':
listAll = true;
break;
case 'h': case 'h':
PrintUsageAndExit(false); PrintUsageAndExit(false);
break; break;
@@ -103,11 +111,12 @@ SearchCommand::Execute(int argc, const char* const* argv)
} }
} }
// The remaining argument is the search string. // The remaining argument is the search string. Ignored when --all has been
if (argc != optind + 1) // specified.
if (!listAll && argc != optind + 1)
PrintUsageAndExit(true); PrintUsageAndExit(true);
const char* searchString = argv[optind++]; const char* searchString = listAll ? "" : argv[optind++];
// create the solver // create the solver
PackageManager packageManager(B_PACKAGE_INSTALLATION_LOCATION_COMMON, PackageManager packageManager(B_PACKAGE_INSTALLATION_LOCATION_COMMON,