ppa stats graph
[ppastats.git] / src / html.c
index 28fe195..aa4c6f1 100644 (file)
 
 #include <string.h>
 
+#include "chart.h"
 #include "html.h"
 #include "list.h"
 #include "lp_ws.h"
+#include "ppastats.h"
 
 #include <json/json.h>
 
@@ -188,28 +190,61 @@ build_data_str(struct binary_package_publishing_history **list)
        return str;
 }
 
-void ppa_to_html(const char *owner, const char *ppa, const char *package_status)
+static char *get_path(const char *dir, const char *file)
+{
+       char *path = malloc(strlen(dir)+1+strlen(file)+1);
+
+       strcpy(path, dir);
+       strcat(path, "/");
+       strcat(path, file);
+
+       return path;
+}
+
+void
+ppa_to_html(const char *owner,
+           const char *ppa,
+           const char *package_status,
+           const char *output_dir)
 {
        struct binary_package_publishing_history **list;
-       char *archive_url = get_archive_url(owner, ppa);
-       char *addcolumns_str;
-       char *data_str;
+       char *archive_url, *addcolumns_str, *data_str, *path;
+       FILE *f;
+       struct ppa_stats *ppastats;
+       struct daily_download_total **totals;
+
+       ppastats = create_ppa_stats(owner, ppa, package_status);
+       totals = ppastats->daily_download_totals;
 
+       path = get_path(output_dir, "ppa.html");
+       generate_chart(path, "PPA Statistics", ppa, totals);
+       free(path);
+
+       archive_url = get_archive_url(owner, ppa);
        list = get_binary_package_publishing_history_list(archive_url,
                                                          package_status);
        free(archive_url);
 
        if (!list) {
-               fprintf(stderr, "Failed to retrieve PPA information\n");
+               fprintf(stderr, "ERROR: Failed to retrieve PPA information\n");
                exit(EXIT_FAILURE);
        }
 
        addcolumns_str = build_addcolums_str(list);
        data_str = build_data_str(list);
 
-       printf(HTML_TEMPLATE, addcolumns_str, data_str);
+       path = get_path(output_dir, "index.html");
+       f = fopen(path, "w");
+       if (f) {
+               fprintf(f, HTML_TEMPLATE, addcolumns_str, data_str);
+               fclose(f);
+       } else {
+               fprintf(stderr, "ERROR: failed to write %s\n", path);
+       }
+       free(path);
 
        free(addcolumns_str);
        free(data_str);
        binary_package_publishing_history_list_free(list);
+       ppa_stats_free(ppastats);
 }