static char * get_url_or_path (BuilderSourceGit *self, BuilderContext *context, GError **error) { g_autoptr(GFile) repo = NULL; if (self->url == NULL && self->path == NULL) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "No URL or path specified"); return NULL; } if (self->url) { g_autofree char *scheme = NULL; scheme = g_uri_parse_scheme (self->url); if (scheme == NULL) { repo = g_file_resolve_relative_path (builder_context_get_base_dir (context), self->url); return g_file_get_uri (repo); } return g_strdup (self->url); } repo = g_file_resolve_relative_path (builder_context_get_base_dir (context), self->path); return g_file_get_path (repo); }
static GFile * get_source_file (BuilderSourceFile *self, BuilderContext *context, gboolean *is_local, gboolean *is_inline, GError **error) { GFile *base_dir = builder_context_get_base_dir (context); if (self->url != NULL && self->url[0] != 0) { *is_local = FALSE; return get_download_location (self, is_inline, context, error); } if (self->path != NULL && self->path[0] != 0) { *is_local = TRUE; return g_file_resolve_relative_path (base_dir, self->path); } g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "source file path or url not specified"); return NULL; }