Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Allow upgrade of individual packages.
Vsevolod Stakhov committed 12 years ago
commit e5254dca6b51ae0791f63fdd723648a93e0f221a
parent 6b68c82
1 file changed +19 -7
modified src/upgrade.c
@@ -38,7 +38,7 @@
void
usage_upgrade(void)
{
-
	fprintf(stderr, "Usage: pkg upgrade [-fInFqUy] [-r reponame]\n\n");
+
	fprintf(stderr, "Usage: pkg upgrade [-fInFqUy] [-r reponame] [-Cgix] <pkg-name> ...\n\n");
	fprintf(stderr, "For more information see 'pkg help upgrade'.\n");
}

@@ -52,6 +52,7 @@ exec_upgrade(int argc, char **argv)
	int updcode;
	int ch;
	int lock_type = PKGDB_LOCK_ADVISORY;
+
	match_t match = MATCH_EXACT;
	bool yes = true, yes_arg = false;
	bool dry_run = false;
	bool auto_update;
@@ -62,7 +63,7 @@ exec_upgrade(int argc, char **argv)
	yes_arg = pkg_object_bool(pkg_config_get("ASSUME_ALWAYS_YES"));
	auto_update = pkg_object_bool(pkg_config_get("REPO_AUTOUPDATE"));

-
	while ((ch = getopt(argc, argv, "fInqFr:Uy")) != -1) {
+
	while ((ch = getopt(argc, argv, "fInqFr:UyCgix")) != -1) {
		switch (ch) {
		case 'f':
			f |= PKG_FLAG_FORCE;
@@ -70,6 +71,15 @@ exec_upgrade(int argc, char **argv)
		case 'I':
			f |= PKG_FLAG_NOSCRIPT;
			break;
+
		case 'C':
+
			pkgdb_set_case_sensitivity(true);
+
			break;
+
		case 'g':
+
			match = MATCH_GLOB;
+
			break;
+
		case 'i':
+
			pkgdb_set_case_sensitivity(false);
+
			break;
		case 'U':
			auto_update = false;
			break;
@@ -88,6 +98,9 @@ exec_upgrade(int argc, char **argv)
		case 'r':
			reponame = optarg;
			break;
+
		case 'x':
+
			match = MATCH_REGEX;
+
			break;
		case 'y':
			yes_arg = true;
			break;
@@ -100,11 +113,6 @@ exec_upgrade(int argc, char **argv)
	argc -= optind;
	argv += optind;

-
	if (argc != 0) {
-
		usage_upgrade();
-
		return (EX_USAGE);
-
	}
-

	if (dry_run && !auto_update)
		retcode = pkgdb_access(PKGDB_MODE_READ,
				       PKGDB_DB_LOCAL|PKGDB_DB_REPO);
@@ -149,6 +157,10 @@ exec_upgrade(int argc, char **argv)

	pkg_jobs_set_flags(jobs, f);

+
	if (argc > 0)
+
		if (pkg_jobs_add(jobs, match, argv, argc) == EPKG_FATAL)
+
				goto cleanup;
+

	if (pkg_jobs_solve(jobs) != EPKG_OK)
		goto cleanup;