Skip to content

Commit

Permalink
Display some basic remote databases stats as well in 'pkg stats'
Browse files Browse the repository at this point in the history
  • Loading branch information
dnaeon committed Jun 24, 2012
1 parent cad6ccb commit 0d38227
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 8 deletions.
6 changes: 4 additions & 2 deletions libpkg/pkg.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;

/**
Expand Down
10 changes: 8 additions & 2 deletions libpkg/pkgdb.c
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
15 changes: 11 additions & 4 deletions pkg/stats.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down

0 comments on commit 0d38227

Please sign in to comment.