#include <stdio.h>
#include <string.h>
+#include "cache.h"
#include "html.h"
#include "lp_ws.h"
#include "config.h"
+#include "ppastats.h"
+int debug;
static const char *program_name;
-static void display_published_binaries(const char *owner, const char *ppa)
+static void display_published_binaries(const char *owner,
+ const char *ppa,
+ const char *package_status)
{
- struct binary_package_publishing_history **e_cur, **list;
- char *archive_url = get_archive_url(owner, ppa);
+ struct ppa_stats *ppastats;
+ struct package_stats **packages;
+ struct version_stats **versions;
+ struct distro_stats **distros;
+ struct arch_stats **archs;
- list = get_binary_package_publishing_history_list(archive_url);
- free(archive_url);
+ ppastats = create_ppa_stats(owner, ppa, package_status);
+ packages = ppastats->packages;
+ while (packages && *packages) {
+ struct package_stats *p = *packages;
- if (!list) {
- fprintf(stderr, "Failed to retrieve PPA information\n");
- exit(EXIT_FAILURE);
- }
+ printf("%s (%d)\n", p->name, p->download_count);
+
+ versions = p->versions;
+
+ while (*versions) {
+ printf("\t%s (%d)\n", (*versions)->version,
+ (*versions)->download_count);
+
+ distros = (*versions)->distros;
+
+ while (*distros) {
+ printf("\t\t%s (%d)\n",
+ (*distros)->name,
+ (*distros)->download_count);
- list = binary_package_publishing_history_list_uniq_noarch_dep(list);
+ archs = (*distros)->archs;
- e_cur = flist;
- while (*e_cur) {
- struct binary_package_publishing_history *binary;
- struct distro_arch_series *dist;
+ while (*archs) {
+ printf("\t\t\t%s (%d)\n",
+ (*archs)->name,
+ (*archs)->download_count);
- binary = *e_cur;
- dist = get_distro_arch_series(binary->distro_arch_series_link);
+ archs++;
+ }
- printf("%s %s %s %d\n",
- dist->display_name,
- binary->binary_package_name,
- binary->binary_package_version,
- get_download_count(binary->self_link));
- e_cur++;
+ distros++;
+ }
+
+ versions++;
+ }
+
+ packages++;
}
- binary_package_publishing_history_list_free(list);
+ ppa_stats_free(ppastats);
}
static struct option long_options[] = {
{"version", no_argument, 0, 'v'},
{"help", no_argument, 0, 'h'},
- {"html", no_argument, 0, 't'},
+ {"html", required_argument, 0, 't'},
+ {"debug", no_argument, 0, 'd'},
+ {"status", required_argument, 0, 's'},
{0, 0, 0, 0}
};
char *owner, *ppa;
int optc;
int output_html = 0;
+ char *package_status = NULL;
int cmdok = 1;
+ char *output_dir = NULL;
program_name = argv[0];
- while ((optc = getopt_long(argc, argv, "vht", long_options,
+ while ((optc = getopt_long(argc, argv, "vht:ds:", long_options,
NULL)) != -1) {
switch (optc) {
case 't':
output_html = 1;
+ output_dir = strdup(optarg);
+ break;
+ case 'd':
+ debug = 1;
break;
case 'h':
print_help();
case 'v':
print_version();
exit(EXIT_SUCCESS);
+ case 's':
+ if (optarg)
+ package_status = strdup(optarg);
+ break;
default:
cmdok = 0;
break;
ppa = argv[optind+1];
if (output_html)
- ppa_to_html(owner, ppa);
+ ppa_to_html(owner, ppa, package_status, output_dir);
else
- display_published_binaries(owner, ppa);
+ display_published_binaries(owner, ppa, package_status);
+
+ /* for valgrind.... */
+ free(package_status);
+ free(output_dir);
+ lp_ws_cleanup();
+ cache_cleanup();
exit(EXIT_SUCCESS);
}