diff options
-rw-r--r-- | client/as-builder.c | 9 | ||||
-rw-r--r-- | libappstream-builder/asb-context.c | 69 | ||||
-rw-r--r-- | libappstream-builder/asb-context.h | 2 | ||||
-rw-r--r-- | libappstream-builder/asb-self-test.c | 24 |
4 files changed, 63 insertions, 41 deletions
diff --git a/client/as-builder.c b/client/as-builder.c index 7f22323..e981456 100644 --- a/client/as-builder.c +++ b/client/as-builder.c @@ -84,6 +84,7 @@ main (int argc, char **argv) _cleanup_free_ gchar *extra_screenshots = NULL; _cleanup_free_ gchar *log_dir = NULL; _cleanup_free_ gchar *old_metadata = NULL; + _cleanup_free_ gchar *origin = NULL; _cleanup_free_ gchar *output_dir = NULL; _cleanup_free_ gchar *packages_dir = NULL; _cleanup_free_ gchar *screenshot_dir = NULL; @@ -137,6 +138,9 @@ main (int argc, char **argv) _("Set the cache directory"), "DIR" }, { "basename", '\0', 0, G_OPTION_ARG_STRING, &basename, /* TRANSLATORS: command line option */ + _("Set the basenames of the output files"), "NAME" }, + { "origin", '\0', 0, G_OPTION_ARG_STRING, &origin, + /* TRANSLATORS: command line option */ _("Set the origin name"), "NAME" }, { "max-threads", '\0', 0, G_OPTION_ARG_INT, &max_threads, /* TRANSLATORS: command line option */ @@ -199,7 +203,9 @@ main (int argc, char **argv) if (cache_dir == NULL) cache_dir = g_strdup ("./cache"); if (basename == NULL) - basename = g_strdup ("example"); + basename = g_strdup ("appstream"); + if (origin == NULL) + origin = g_strdup ("example"); if (screenshot_uri == NULL) screenshot_uri = g_strdup ("http://www.example.com/screenshots/"); if (extra_appstream == NULL) @@ -227,6 +233,7 @@ main (int argc, char **argv) asb_context_set_output_dir (ctx, output_dir); asb_context_set_cache_dir (ctx, cache_dir); asb_context_set_basename (ctx, basename); + asb_context_set_origin (ctx, origin); asb_context_set_max_threads (ctx, max_threads); asb_context_set_min_icon_size (ctx, min_icon_size); ret = asb_context_setup (ctx, &error); diff --git a/libappstream-builder/asb-context.c b/libappstream-builder/asb-context.c index c79f95f..e3c8402 100644 --- a/libappstream-builder/asb-context.c +++ b/libappstream-builder/asb-context.c @@ -81,6 +81,7 @@ struct _AsbContextPrivate gchar *temp_dir; gchar *output_dir; gchar *basename; + gchar *origin; }; G_DEFINE_TYPE_WITH_PRIVATE (AsbContext, asb_context, G_TYPE_OBJECT) @@ -410,7 +411,7 @@ asb_context_set_output_dir (AsbContext *ctx, const gchar *output_dir) /** * asb_context_set_basename: * @ctx: A #AsbContext - * @basename: AppStream basename, e.g. "fedora-21" + * @basename: AppStream file basename, e.g. "appstream" * * Sets the basename for the two metadata files. * @@ -424,6 +425,22 @@ asb_context_set_basename (AsbContext *ctx, const gchar *basename) } /** + * asb_context_set_origin: + * @ctx: A #AsbContext + * @origin: AppStream origin, e.g. "fedora-21" + * + * Sets the origin for the two metadata files. + * + * Since: 0.3.4 + **/ +void +asb_context_set_origin (AsbContext *ctx, const gchar *origin) +{ + AsbContextPrivate *priv = GET_PRIVATE (ctx); + priv->origin = g_strdup (origin); +} + +/** * asb_context_get_add_cache_id: * @ctx: A #AsbContext * @@ -701,11 +718,11 @@ asb_context_setup (AsbContext *ctx, GError **error) _cleanup_free_ gchar *icons_dir = NULL; /* required stuff set */ - if (priv->basename == NULL) { + if (priv->origin == NULL) { g_set_error_literal (error, ASB_PLUGIN_ERROR, ASB_PLUGIN_ERROR_FAILED, - "basename not set!"); + "origin not set!"); return FALSE; } if (priv->output_dir == NULL) { @@ -912,17 +929,17 @@ asb_task_process_func (gpointer data, gpointer user_data) static gboolean asb_context_write_icons (AsbContext *ctx, const gchar *temp_dir, - const gchar *output_dir, - const gchar *basename, GError **error) { + AsbContextPrivate *priv = GET_PRIVATE (ctx); _cleanup_free_ gchar *filename = NULL; _cleanup_free_ gchar *icons_dir = NULL; icons_dir = g_build_filename (temp_dir, "icons", NULL); if (!g_file_test (icons_dir, G_FILE_TEST_EXISTS)) return TRUE; - filename = g_strdup_printf ("%s/%s-icons.tar.gz", output_dir, basename); + filename = g_strdup_printf ("%s/%s-icons.tar.gz", + priv->output_dir, priv->basename); g_print ("Writing %s...\n", filename); return asb_utils_write_archive_dir (filename, icons_dir, error); } @@ -931,10 +948,7 @@ asb_context_write_icons (AsbContext *ctx, * asb_context_write_xml: **/ static gboolean -asb_context_write_xml (AsbContext *ctx, - const gchar *output_dir, - const gchar *basename, - GError **error) +asb_context_write_xml (AsbContext *ctx, GError **error) { AsApp *app; AsbContextPrivate *priv = GET_PRIVATE (ctx); @@ -973,11 +987,13 @@ asb_context_write_xml (AsbContext *ctx, } } - filename = g_strdup_printf ("%s/%s.xml.gz", output_dir, basename); + filename = g_strdup_printf ("%s/%s.xml.gz", + priv->output_dir, + priv->basename); file = g_file_new_for_path (filename); g_print ("Writing %s...\n", filename); - as_store_set_origin (store, basename); + as_store_set_origin (store, priv->origin); as_store_set_api_version (store, priv->api_version); if (priv->add_cache_id) { _cleanup_free_ gchar *builder_id = asb_utils_get_builder_id (); @@ -1192,10 +1208,7 @@ asb_context_detect_missing_parents (AsbContext *ctx, GError **error) * asb_context_write_xml_fail: **/ static gboolean -asb_context_write_xml_fail (AsbContext *ctx, - const gchar *output_dir, - const gchar *basename, - GError **error) +asb_context_write_xml_fail (AsbContext *ctx, GError **error) { AsApp *app; AsbContextPrivate *priv = GET_PRIVATE (ctx); @@ -1217,11 +1230,12 @@ asb_context_write_xml_fail (AsbContext *ctx, continue; as_store_add_app (priv->store_failed, app); } - filename = g_strdup_printf ("%s/%s-failed.xml.gz", output_dir, basename); + filename = g_strdup_printf ("%s/%s-failed.xml.gz", + priv->output_dir, priv->basename); file = g_file_new_for_path (filename); g_print ("Writing %s...\n", filename); - basename_failed = g_strdup_printf ("%s-failed", basename); + basename_failed = g_strdup_printf ("%s-failed", priv->origin); as_store_set_origin (priv->store_failed, basename_failed); as_store_set_api_version (priv->store_failed, priv->api_version); if (priv->add_cache_id) { @@ -1240,10 +1254,7 @@ asb_context_write_xml_fail (AsbContext *ctx, * asb_context_write_xml_ignore: **/ static gboolean -asb_context_write_xml_ignore (AsbContext *ctx, - const gchar *output_dir, - const gchar *basename, - GError **error) +asb_context_write_xml_ignore (AsbContext *ctx, GError **error) { AsbContextPrivate *priv = GET_PRIVATE (ctx); _cleanup_free_ gchar *basename_cache = NULL; @@ -1255,11 +1266,12 @@ asb_context_write_xml_ignore (AsbContext *ctx, return TRUE; /* the store is already populated */ - filename = g_strdup_printf ("%s/%s-ignore.xml.gz", output_dir, basename); + filename = g_strdup_printf ("%s/%s-ignore.xml.gz", + priv->output_dir, priv->basename); file = g_file_new_for_path (filename); g_print ("Writing %s...\n", filename); - basename_cache = g_strdup_printf ("%s-ignore", basename); + basename_cache = g_strdup_printf ("%s-ignore", priv->origin); as_store_set_origin (priv->store_ignore, basename_cache); as_store_set_api_version (priv->store_ignore, priv->api_version); if (priv->add_cache_id) { @@ -1440,25 +1452,23 @@ asb_context_process (AsbContext *ctx, AsbContextProcessFlags flags, GError **err asb_context_write_app_xml (ctx); /* write XML file */ - ret = asb_context_write_xml (ctx, priv->output_dir, priv->basename, error); + ret = asb_context_write_xml (ctx, error); if (!ret) return FALSE; /* write XML file */ - ret = asb_context_write_xml_fail (ctx, priv->output_dir, priv->basename, error); + ret = asb_context_write_xml_fail (ctx, error); if (!ret) return FALSE; /* write XML file */ - ret = asb_context_write_xml_ignore (ctx, priv->output_dir, priv->basename, error); + ret = asb_context_write_xml_ignore (ctx, error); if (!ret) return FALSE; /* write icons archive */ ret = asb_context_write_icons (ctx, priv->temp_dir, - priv->output_dir, - priv->basename, error); if (!ret) return FALSE; @@ -1638,6 +1648,7 @@ asb_context_finalize (GObject *object) g_free (priv->temp_dir); g_free (priv->output_dir); g_free (priv->basename); + g_free (priv->origin); G_OBJECT_CLASS (asb_context_parent_class)->finalize (object); } diff --git a/libappstream-builder/asb-context.h b/libappstream-builder/asb-context.h index f4b8370..0a4cd47 100644 --- a/libappstream-builder/asb-context.h +++ b/libappstream-builder/asb-context.h @@ -119,6 +119,8 @@ void asb_context_set_output_dir (AsbContext *ctx, const gchar *output_dir); void asb_context_set_basename (AsbContext *ctx, const gchar *basename); +void asb_context_set_origin (AsbContext *ctx, + const gchar *origin); const gchar *asb_context_get_temp_dir (AsbContext *ctx); gboolean asb_context_get_add_cache_id (AsbContext *ctx); gboolean asb_context_get_hidpi_enabled (AsbContext *ctx); diff --git a/libappstream-builder/asb-self-test.c b/libappstream-builder/asb-self-test.c index 11862c0..61c76df 100644 --- a/libappstream-builder/asb-self-test.c +++ b/libappstream-builder/asb-self-test.c @@ -289,7 +289,8 @@ asb_test_context_test_func (AsbTestContextMode mode) asb_context_set_add_cache_id (ctx, TRUE); asb_context_set_no_net (ctx, TRUE); asb_context_set_hidpi_enabled (ctx, TRUE); - asb_context_set_basename (ctx, "asb-self-test"); + asb_context_set_basename (ctx, "appstream"); + asb_context_set_origin (ctx, "asb-self-test"); asb_context_set_cache_dir (ctx, "/tmp/asbuilder/cache"); asb_context_set_output_dir (ctx, "/tmp/asbuilder/output"); asb_context_set_temp_dir (ctx, "/tmp/asbuilder/temp"); @@ -343,13 +344,13 @@ asb_test_context_test_func (AsbTestContextMode mode) g_assert (ret); /* check files created */ - g_assert (g_file_test ("/tmp/asbuilder/output/asb-self-test.xml.gz", G_FILE_TEST_EXISTS)); - g_assert (g_file_test ("/tmp/asbuilder/output/asb-self-test-failed.xml.gz", G_FILE_TEST_EXISTS)); - g_assert (g_file_test ("/tmp/asbuilder/output/asb-self-test-ignore.xml.gz", G_FILE_TEST_EXISTS)); - g_assert (g_file_test ("/tmp/asbuilder/output/asb-self-test-icons.tar.gz", G_FILE_TEST_EXISTS)); + g_assert (g_file_test ("/tmp/asbuilder/output/appstream.xml.gz", G_FILE_TEST_EXISTS)); + g_assert (g_file_test ("/tmp/asbuilder/output/appstream-failed.xml.gz", G_FILE_TEST_EXISTS)); + g_assert (g_file_test ("/tmp/asbuilder/output/appstream-ignore.xml.gz", G_FILE_TEST_EXISTS)); + g_assert (g_file_test ("/tmp/asbuilder/output/appstream-icons.tar.gz", G_FILE_TEST_EXISTS)); /* load AppStream metadata */ - file = g_file_new_for_path ("/tmp/asbuilder/output/asb-self-test.xml.gz"); + file = g_file_new_for_path ("/tmp/asbuilder/output/appstream.xml.gz"); store = as_store_new (); ret = as_store_from_file (store, file, NULL, NULL, &error); g_assert_no_error (error); @@ -477,7 +478,7 @@ asb_test_context_test_func (AsbTestContextMode mode) g_assert (ret); /* load failed metadata */ - file_failed = g_file_new_for_path ("/tmp/asbuilder/output/asb-self-test-failed.xml.gz"); + file_failed = g_file_new_for_path ("/tmp/asbuilder/output/appstream-failed.xml.gz"); store_failed = as_store_new (); ret = as_store_from_file (store_failed, file_failed, NULL, NULL, &error); g_assert_no_error (error); @@ -645,7 +646,7 @@ asb_test_context_test_func (AsbTestContextMode mode) g_assert (ret); /* load ignored metadata */ - file_ignore = g_file_new_for_path ("/tmp/asbuilder/output/asb-self-test-ignore.xml.gz"); + file_ignore = g_file_new_for_path ("/tmp/asbuilder/output/appstream-ignore.xml.gz"); store_ignore = as_store_new (); ret = as_store_from_file (store_ignore, file_ignore, NULL, NULL, &error); g_assert_no_error (error); @@ -771,7 +772,8 @@ asb_test_context_extra_appstream_func (void) asb_context_set_add_cache_id (ctx, TRUE); asb_context_set_no_net (ctx, TRUE); asb_context_set_hidpi_enabled (ctx, TRUE); - asb_context_set_basename (ctx, "asb-self-test"); + asb_context_set_basename (ctx, "appstream"); + asb_context_set_origin (ctx, "asb-self-test"); asb_context_set_cache_dir (ctx, "/tmp/asbuilder/cache"); asb_context_set_output_dir (ctx, "/tmp/asbuilder/output"); asb_context_set_temp_dir (ctx, "/tmp/asbuilder/temp"); @@ -785,10 +787,10 @@ asb_test_context_extra_appstream_func (void) g_assert (ret); /* check files created */ - g_assert (g_file_test ("/tmp/asbuilder/output/asb-self-test.xml.gz", G_FILE_TEST_EXISTS)); + g_assert (g_file_test ("/tmp/asbuilder/output/appstream.xml.gz", G_FILE_TEST_EXISTS)); /* load AppStream metadata */ - file = g_file_new_for_path ("/tmp/asbuilder/output/asb-self-test.xml.gz"); + file = g_file_new_for_path ("/tmp/asbuilder/output/appstream.xml.gz"); store = as_store_new (); ret = as_store_from_file (store, file, NULL, NULL, &error); g_assert_no_error (error); |