extensions-tool: Prepare for alternative templates

The template used when creating a new extension is intentionally
minimal, as the sample code in the old extensions-tool proved to
be annoying more often than not.

However as we support per-command options, we don't have to limit
ourselves to a single template, and can offer alternatives for
common use cases.

To prepare for that, namespace the existing template by moving it
into a subfolder.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/812
This commit is contained in:
Florian Müllner 2019-11-06 10:06:11 +01:00 committed by Florian Müllner
parent 9719604b79
commit 37c6fbc6b2
4 changed files with 18 additions and 7 deletions

View File

@ -26,6 +26,8 @@
#include "common.h" #include "common.h"
#include "config.h" #include "config.h"
#define TEMPLATES_PATH "/org/gnome/extensions-tool/templates"
static char * static char *
get_shell_version (GError **error) get_shell_version (GError **error)
{ {
@ -85,21 +87,30 @@ create_metadata (GFile *target_dir,
} }
#define TEMPLATE_PATH "/org/gnome/extensions-tool/template"
static gboolean static gboolean
copy_extension_template (GFile *target_dir, GError **error) copy_extension_template (const char *template, GFile *target_dir, GError **error)
{ {
g_auto (GStrv) templates = NULL; g_auto (GStrv) templates = NULL;
g_autofree char *path = NULL;
char **s; char **s;
templates = g_resources_enumerate_children (TEMPLATE_PATH, 0, NULL); path = g_strdup_printf (TEMPLATES_PATH "/%s", template);
templates = g_resources_enumerate_children (path, 0, NULL);
if (templates == NULL)
{
g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND,
"No template %s", template);
return FALSE;
}
for (s = templates; *s; s++) for (s = templates; *s; s++)
{ {
g_autoptr (GFile) target = NULL; g_autoptr (GFile) target = NULL;
g_autoptr (GFile) source = NULL; g_autoptr (GFile) source = NULL;
g_autofree char *uri = NULL; g_autofree char *uri = NULL;
uri = g_strdup_printf ("resource://%s/%s", TEMPLATE_PATH, *s); uri = g_strdup_printf ("resource://%s/%s", path, *s);
source = g_file_new_for_uri (uri); source = g_file_new_for_uri (uri);
target = g_file_get_child (target_dir, *s); target = g_file_get_child (target_dir, *s);
@ -157,7 +168,7 @@ create_extension (const char *uuid, const char *name, const char *description)
return FALSE; return FALSE;
} }
if (!copy_extension_template (dir, &error)) if (!copy_extension_template ("plain", dir, &error))
{ {
g_printerr ("%s\n", error->message); g_printerr ("%s\n", error->message);
return FALSE; return FALSE;

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<gresources> <gresources>
<gresource prefix="/org/gnome/extensions-tool"> <gresource prefix="/org/gnome/extensions-tool">
<file>template/extension.js</file> <file>templates/plain/extension.js</file>
<file>template/stylesheet.css</file> <file>templates/plain/stylesheet.css</file>
</gresource> </gresource>
</gresources> </gresources>