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 "config.h"
#define TEMPLATES_PATH "/org/gnome/extensions-tool/templates"
static char *
get_shell_version (GError **error)
{
@ -85,21 +87,30 @@ create_metadata (GFile *target_dir,
}
#define TEMPLATE_PATH "/org/gnome/extensions-tool/template"
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_autofree char *path = NULL;
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++)
{
g_autoptr (GFile) target = NULL;
g_autoptr (GFile) source = 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);
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;
}
if (!copy_extension_template (dir, &error))
if (!copy_extension_template ("plain", dir, &error))
{
g_printerr ("%s\n", error->message);
return FALSE;

View File

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