Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
better output and make use of the new PKGLT and PKGGT
Baptiste Daroussin committed 15 years ago
commit b87732481a90886831ff15ce397ae5b9cbecf880
parent 15fc803
3 files changed +53 -14
modified libpkg/pkg.h
@@ -417,7 +417,8 @@ struct pkgdb_it * pkgdb_query(struct pkgdb *db, const char *pattern,
/**
 * 
 */
-
struct pkgdb_it *pkgdb_repos_diff(struct pkgdb *db);
+
struct pkgdb_it *pkgdb_query_upgrades(struct pkgdb *db);
+
struct pkgdb_it *pkgdb_query_downgrades(struct pkgdb *db);

/**
 * @todo Return directly the struct pkg?
modified libpkg/pkgdb.c
@@ -1243,7 +1243,7 @@ pkgdb_compact(struct pkgdb *db)
}

struct pkgdb_it *
-
pkgdb_repos_diff(struct pkgdb *db)
+
pkgdb_query_upgrades(struct pkgdb *db)
{

	sqlite3_stmt *stmt;
@@ -1256,7 +1256,36 @@ pkgdb_repos_diff(struct pkgdb *db)
		"FROM main.packages AS l, "
		"remote.packages AS r "
		"WHERE l.origin = r.origin "
-
		"AND l.version != r.version";
+
		"AND PKGLT(l.version, r.version)";
+

+

+
	if (sqlite3_exec(db->sqlite, "ATTACH \"/var/db/pkg/repo.sqlite\" as remote;", NULL, NULL, &errmsg) != SQLITE_OK){
+
		pkg_error_set(EPKG_FATAL, "%s", errmsg);
+
		sqlite3_free(errmsg);
+
		return (NULL);
+
	}
+

+
	if (sqlite3_prepare_v2(db->sqlite, sql, -1, &stmt, NULL) != SQLITE_OK)
+
		return (NULL);
+

+
	return (pkgdb_it_new(db, stmt));
+
}
+

+
struct pkgdb_it *
+
pkgdb_query_downgrades(struct pkgdb *db)
+
{
+

+
	sqlite3_stmt *stmt;
+
	char *errmsg;
+

+
	const char sql[] = ""
+
		"SELECT l.id, l.origin, l.name, l.version, l.comment, l.desc, "
+
		"l.message, l.arch, l.osversion, l.maintainer, "
+
		"l.www, l.prefix, l.flatsize, r.version, r.flatsize, r.pkgsize, r.path "
+
		"FROM main.packages AS l, "
+
		"remote.packages AS r "
+
		"WHERE l.origin = r.origin "
+
		"AND PKGGT(l.version, r.version)";


	if (sqlite3_exec(db->sqlite, "ATTACH \"/var/db/pkg/repo.sqlite\" as remote;", NULL, NULL, &errmsg) != SQLITE_OK){
modified pkg/upgrade.c
@@ -69,27 +69,36 @@ exec_upgrade(int argc, char **argv)
	}


-
	if ((it = pkgdb_repos_diff(db)) == NULL) {
+
	if ((it = pkgdb_query_upgrades(db)) == NULL) {
		pkg_error_warn("can not query database");
		goto cleanup;
	}

+
	printf("Packages to be upgraded: \n");
	while ((retcode = pkgdb_it_next(it, &pkg, PKG_LOAD_BASIC|PKG_LOAD_NEWVERSION)) == EPKG_OK) {
		oldsize += pkg_flatsize(pkg);
		newsize += pkg_new_flatsize(pkg);
		dlsize += pkg_new_pkgsize(pkg);
-
		switch (pkg_version_cmp(pkg_get(pkg, PKG_VERSION), pkg_get(pkg, PKG_NEWVERSION))) {
-
			case -1:
-
				printf("%s: upgrade from %s to %s\n", pkg_get(pkg, PKG_NAME),
-
						pkg_get(pkg, PKG_VERSION), pkg_get(pkg, PKG_NEWVERSION));
-
				break;
-
			case 1:
-
				printf("%s: downgrade from %s to %s\n", pkg_get(pkg, PKG_NAME),
-
						pkg_get(pkg, PKG_VERSION), pkg_get(pkg, PKG_NEWVERSION));
-
				break;
-
		}
+
		printf("\t%s: %s -> %s\n", pkg_get(pkg, PKG_NAME), pkg_get(pkg, PKG_VERSION), pkg_get(pkg,PKG_NEWVERSION));
	}
	printf("\n");
+
	pkgdb_it_free(it);
+

+
	if ((it = pkgdb_query_downgrades(db)) == NULL) {
+
		pkg_error_warn("can not query database");
+
		goto cleanup;
+
	}
+

+
	printf("Packages to be downgraded: \n");
+
	while ((retcode = pkgdb_it_next(it, &pkg, PKG_LOAD_BASIC|PKG_LOAD_NEWVERSION)) == EPKG_OK) {
+
		oldsize += pkg_flatsize(pkg);
+
		newsize += pkg_new_flatsize(pkg);
+
		dlsize += pkg_new_pkgsize(pkg);
+
		printf("\t%s: %s -> %s\n", pkg_get(pkg, PKG_NAME), pkg_get(pkg, PKG_VERSION), pkg_get(pkg, PKG_NEWVERSION));
+
	}
+
	printf("\n");
+
	pkgdb_it_free(it);
+


	if (oldsize > newsize) {
		newsize *= -1;