From b3170810483ed59efaaf101a79d550fcafecd32e Mon Sep 17 00:00:00 2001 From: Ryan Gonzalez Date: Thu, 1 Aug 2019 12:32:39 -0500 Subject: [PATCH] Support parsing sources files as yaml Fixes #297. Closes: #298 Approved by: alexlarsson --- src/builder-module.c | 2 +- src/builder-utils.c | 24 +++++++++++++++--------- src/builder-utils.h | 4 ++++ 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/builder-module.c b/src/builder-module.c index 53dd30a0..14d3dc9c 100644 --- a/src/builder-module.c +++ b/src/builder-module.c @@ -749,7 +749,7 @@ load_sources_from_json (const char *sources_relpath) } builder_manifest_set_demarshal_base_dir (sources_file_dir); - sources_root = json_from_string (sources_json, &error); + sources_root = builder_json_node_from_data (sources_path, sources_json, &error); if (sources_root == NULL) { g_printerr ("Error parsing %s: %s\n", sources_relpath, error->message); diff --git a/src/builder-utils.c b/src/builder-utils.c index bc35cc92..21a1323f 100644 --- a/src/builder-utils.c +++ b/src/builder-utils.c @@ -509,22 +509,28 @@ parse_yaml_to_json (const gchar *contents, #endif // FLATPAK_BUILDER_ENABLE_YAML +JsonNode * +builder_json_node_from_data (const char *relpath, + const char *contents, + GError **error) +{ + if (g_str_has_suffix (relpath, ".yaml") || g_str_has_suffix (relpath, ".yml")) + return parse_yaml_to_json (contents, error); + else + return json_from_string (contents, error); +} + GObject * builder_gobject_from_data (GType gtype, const char *relpath, const char *contents, GError **error) { - if (g_str_has_suffix (relpath, ".yaml") || g_str_has_suffix (relpath, ".yml")) - { - g_autoptr(JsonNode) json = parse_yaml_to_json (contents, error); - if (json != NULL) - return json_gobject_deserialize (gtype, json); - else - return NULL; - } + g_autoptr(JsonNode) json = builder_json_node_from_data (relpath, contents, error); + if (json != NULL) + return json_gobject_deserialize (gtype, json); else - return json_gobject_from_data (gtype, contents, -1, error); + return NULL; } /* diff --git a/src/builder-utils.h b/src/builder-utils.h index 5aa778eb..94d90007 100644 --- a/src/builder-utils.h +++ b/src/builder-utils.h @@ -68,6 +68,10 @@ GQuark builder_curl_error_quark (void); GQuark builder_yaml_parse_error_quark (void); #define BUILDER_YAML_PARSE_ERROR (builder_yaml_parse_error_quark ()) +JsonNode * builder_json_node_from_data (const char *relpath, + const char *contents, + GError **error); + GObject * builder_gobject_from_data (GType gtype, const char *relpath, const char *contents,