</div>\n\
%s"
-#define HTML_INDEX_TEMPLATE \
+#define HTML_HEADER \
"<html>\n\
- <head>\n\
- <link type=\"text/css\"\n\
- rel=\"stylesheet\"\n\
- href=\n\
+ <head>\n\
+ <title>%s</title>\n\
+ <link type=\"text/css\"\n\
+ rel=\"stylesheet\"\n\
+ href=\
\"http://fonts.googleapis.com/css?family=Ubuntu:regular,bold&subset=Latin\">\n\
- <link type=\"text/css\" href=\"css/ppastats.css\" rel=\"stylesheet\" />\n\
- <link type=\"text/css\" href=\"css/jquery.jqplot.min.css\"\n\
- rel=\"stylesheet\" />\n\
- <script type=\"text/javascript\" src=\"js/jquery.min.js\"></script>\n\
- <script type=\"text/javascript\"\n\
- src=\"js/jquery.jqplot.min.js\"></script>\n\
- <script type=\"text/javascript\"\n\
- src=\"js/jqplot.dateAxisRenderer.min.js\"></script>\n\
- <script type=\"text/javascript\" src=\"js/ppastats.js\"></script>\n\
- <script>var data = %s;\n\
- ppastats_ppa();\n\
- </script>\n\
- </head>\n\
- <body>\n\
- <h1><span id=\"ppa_name\">N/A</span></h1>\n\
- <div id=\"details\">\n\
- <div class=\"pkgs\">\n\
- <em>Packages</em>:\n\
- <ul id=\"pkgs\"></ul>\n\
- </div>\n\
- </div>\n\
- <div id=\"charts\">\n\
- <div id=\"chart\"></div>\n\
- </div>\n\
-%s"
+ <link type=\"text/css\" href=\"css/ppastats.css\"\n\
+ rel=\"stylesheet\"/>\n\
+ <link type=\"text/css\" href=\"css/jquery.jqplot.min.css\"\n\
+ rel=\"stylesheet\" />\n\
+ <script type=\"text/javascript\"\n\
+ src=\"js/jquery.min.js\"></script>\n\
+ <script type=\"text/javascript\"\n\
+ src=\"js/jquery.jqplot.min.js\"></script>\n\
+ <script type=\"text/javascript\"\n\
+ src=\"js/jqplot.dateAxisRenderer.min.js\"></script>\n\
+ <script type=\"text/javascript\"\n\
+ src=\"js/ppastats.js\"></script>\n\
+ <script>%s</script>\n\
+ </head>\n\
+ <body>\n"
+
+#define HTML_INDEX_TEMPLATE \
+" <h1><span id=\"ppa_name\">N/A</span></h1>\n\
+ <div id=\"details\">\n\
+ <div class=\"pkgs\">\n\
+ <em>Packages</em>:\n\
+ <ul id=\"pkgs\"></ul>\n\
+ </div>\n\
+ </div>\n\
+ <div id=\"charts\">\n\
+ <div id=\"chart\"></div>\n\
+ </div>\n"
static char *path_new(const char *dir, const char *file, const char *suffixe)
{
strcpy(path, dir);
strcat(path, "/");
strcat(path, file);
- strcat(path, ".html");
+ strcat(path, suffixe);
return path;
}
return ret;
}
-static char *ppa_to_json(struct ppa_stats *ppa)
+static json_object *ppa_to_json(struct ppa_stats *ppa)
{
- char *ret;
json_object *json, *json_pkgs, *json_pkg;
struct package_stats **pkgs;
pkgs++;
}
- ret = strdup(json_object_to_json_string(json));
-
- json_object_put(json);
-
- return ret;
+ return json;
}
}
static void
-index_to_html(struct ppa_stats *ppa, const char *dir)
+create_html(const char *path,
+ const char *title,
+ const char *body_template,
+ const char *script)
{
- char *path;
FILE *f;
- path = path_new(dir, "index", ".html");
f = fopen(path, "w");
if (!f) {
return ;
}
- fprintf(f, HTML_INDEX_TEMPLATE, ppa_to_json(ppa), HTML_FOOTER);
+ fprintf(f, HTML_HEADER, title, script);
+ fputs(HTML_INDEX_TEMPLATE, f);
+ fputs(HTML_FOOTER, f);
fclose(f);
+}
+
+static char *ppa_display_name(const struct ppa_stats *ppa)
+{
+ char *ret;
+
+ ret = malloc(4+strlen(ppa->name)+1+strlen(ppa->owner)+1);
+
+ sprintf(ret, "ppa:%s/%s", ppa->owner, ppa->name);
+
+ return ret;
+}
+
+static void
+index_to_html(struct ppa_stats *ppa, const char *dir)
+{
+ char *path, *json_path, *dname;
+ json_object *json;
+
+ json = ppa_to_json(ppa);
+
+ json_path = path_new(dir, "index", ".json");
+
+ if (debug)
+ printf("DEBUG: generating %s\n", json_path);
+
+ json_object_to_file(json_path, json);
+
+ json_object_put(json);
+
+ path = path_new(dir, "index", ".html");
+ dname = ppa_display_name(ppa);
+
+ create_html(path, dname, HTML_INDEX_TEMPLATE, "ppastats_ppa();");
free(path);
+ free(dname);
+ free(json_path);
}
void
DEFAULT_WWW_DIR"/jquery.jqplot.min.css",
"css/jquery.jqplot.min.css" };
+ mkdirs(output_dir, 0777);
+
if (install_static_files) {
css_dir = path_append(output_dir, "css");
js_dir = path_append(output_dir, "js");
for (i = 0; i < 6; i++) {
f_dst = path_append(output_dir, www_files[2*i+1]);
+
+ if (debug)
+ printf("DEBUG: copying %s %s\n",
+ www_files[2*i], f_dst);
fcopy(www_files[2*i], f_dst);
free(f_dst);