Radish alpha
H
HardenedBSD Package Manager
Radicle
Git (anonymous pull)
Log in to clone via SSH
Display some basic remote databases stats as well in 'pkg stats'
Marin Atanasov Nikolov committed 13 years ago
commit 0d382277bfa5378bb5d6e87b4d301e7af450d902
parent cad6ccb7414c3d82d1202216fbb69f7820d82dae
3 files changed +23 -8
modified libpkg/pkg.h
@@ -266,8 +266,10 @@ typedef enum {
} pkg_config_kv_t;

typedef enum _pkg_stats_t {
-
	PKG_STATS_INSTALLED = 0,
-
	PKG_STATS_INSTALLED_SIZE,
+
	PKG_STATS_LOCAL_COUNT = 0,
+
	PKG_STATS_LOCAL_SIZE,
+
	PKG_STATS_REMOTE_COUNT,
+
	PKG_STATS_REMOTE_SIZE,
} pkg_stats_t;

/**
modified libpkg/pkgdb.c
@@ -3314,12 +3314,18 @@ pkgdb_stats(struct pkgdb *db, pkg_stats_t type)
	assert(db != NULL);

	switch(type) {
-
	case PKG_STATS_INSTALLED:
+
	case PKG_STATS_LOCAL_COUNT:
		sql = "SELECT COUNT(p.id) FROM main.packages AS p;";
		break;
-
	case PKG_STATS_INSTALLED_SIZE:
+
	case PKG_STATS_LOCAL_SIZE:
		sql = "SELECT SUM(p.flatsize) FROM main.packages AS p;";
		break;
+
	case PKG_STATS_REMOTE_COUNT:
+
		sql = "SELECT COUNT(r.id) FROM remote.packages AS r;";
+
		break;
+
	case PKG_STATS_REMOTE_SIZE:
+
		sql = "SELECT SUM(r.flatsize) FROM remote.packages AS r;";
+
		break;
	}

	if (sqlite3_prepare_v2(db->sqlite, sql, -1, &stmt, NULL) != SQLITE_OK) {
modified pkg/stats.c
@@ -68,16 +68,23 @@ exec_stats(int argc, char **argv)
		return (EX_USAGE);
	}

-
	if (pkgdb_open(&db, PKGDB_DEFAULT) != EPKG_OK) {
+
	if (pkgdb_open(&db, PKGDB_REMOTE) != EPKG_OK) {
		return (EX_IOERR);
	}
	
	printf("Local package database:\n");
-
       	printf("\tInstalled packages: %" PRId64 "\n", pkgdb_stats(db, PKG_STATS_INSTALLED));
+
       	printf("\tInstalled packages: %" PRId64 "\n", pkgdb_stats(db, PKG_STATS_LOCAL_COUNT));

-
	flatsize = pkgdb_stats(db, PKG_STATS_INSTALLED_SIZE);
+
	flatsize = pkgdb_stats(db, PKG_STATS_LOCAL_SIZE);
	humanize_number(size, sizeof(flatsize), flatsize, "B", HN_AUTOSCALE, 0);
-
	printf("\tDisk space occupied: %s\n", size);
+
	printf("\tDisk space occupied: %s\n\n", size);
+

+
	printf("Remote package database(s):\n");
+
	printf("\tPackages available: %" PRId64 "\n", pkgdb_stats(db, PKG_STATS_REMOTE_COUNT));
+
	
+
	flatsize = pkgdb_stats(db, PKG_STATS_REMOTE_SIZE);
+
	humanize_number(size, sizeof(flatsize), flatsize, "B", HN_AUTOSCALE, 0);
+
	printf("\tTotal size of packages: %s\n", size);
	
	pkgdb_close(db);