X-Git-Url: http://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=src%2Fmain.c;h=f7b615ac3c983b645fd4c1a6385e1502f412dd0f;hb=refs%2Fheads%2Fv0.0.3;hp=0df293d9dde95ea4fd855f4525666ec732fef315;hpb=825f1fd3475309eaf4fe22704a28239bac3b510a;p=ppastats.git diff --git a/src/main.c b/src/main.c index 0df293d..f7b615a 100644 --- a/src/main.c +++ b/src/main.c @@ -22,48 +22,73 @@ #include #include +#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); + + archs = (*distros)->archs; - e_cur = list; - 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'}, + {"output_dir", required_argument, 0, 'o'}, + {"debug", no_argument, 0, 'd'}, + {"status", required_argument, 0, 's'}, {0, 0, 0, 0} }; @@ -97,8 +122,8 @@ static void print_help() puts(""); puts("\ - -t, --html \ -generates an HTML output."); + -o, --output_dir=[PATH] \ +generates HTML pages into 'PATH'."); puts(""); @@ -113,15 +138,21 @@ int main(int argc, char **argv) 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, "vho:ds:", long_options, NULL)) != -1) { switch (optc) { - case 't': + case 'o': output_html = 1; + output_dir = strdup(optarg); + break; + case 'd': + debug = 1; break; case 'h': print_help(); @@ -129,6 +160,10 @@ int main(int argc, char **argv) case 'v': print_version(); exit(EXIT_SUCCESS); + case 's': + if (optarg) + package_status = strdup(optarg); + break; default: cmdok = 0; break; @@ -145,9 +180,15 @@ int main(int argc, char **argv) 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); }