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:
parent
9719604b79
commit
37c6fbc6b2
@ -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;
|
||||||
|
@ -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>
|
||||||
|
Loading…
Reference in New Issue
Block a user