summaryrefslogtreecommitdiffstats
path: root/extensions/vertical-workspaces/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/vertical-workspaces/Makefile')
-rw-r--r--extensions/vertical-workspaces/Makefile90
1 files changed, 90 insertions, 0 deletions
diff --git a/extensions/vertical-workspaces/Makefile b/extensions/vertical-workspaces/Makefile
new file mode 100644
index 0000000..b0afba4
--- /dev/null
+++ b/extensions/vertical-workspaces/Makefile
@@ -0,0 +1,90 @@
+SHELL := /bin/bash
+
+# Replace these with the name and domain of your extension!
+NAME := vertical-workspaces
+DOMAIN := G-dH.github.com
+ZIP_NAME := $(NAME)@$(DOMAIN).zip
+
+# Some of the recipes below depend on some of these files.
+JS_FILES = $(shell find -type f -and \( -name "*.js" \))
+UI_FILES = $(shell find -type f -and \( -name "*.ui" \))
+#RESOURCE_FILES = $(shell find resources -mindepth 2 -type f)
+LOCALES_PO = $(wildcard po/*.po)
+LOCALES_MO = $(patsubst po/%.po,locale/%/LC_MESSAGES/$(NAME).mo,$(LOCALES_PO))
+
+# These files will be included in the extension zip file.
+ZIP_CONTENT = $(JS_FILES) $(LOCALES_MO) \
+ schemas/* schemas/gschemas.compiled metadata.json LICENSE stylesheet.css
+
+# These six recipes can be invoked by the user.
+.PHONY: all zip install uninstall pot clean
+
+all: $(ZIP_CONTENT)
+
+# The zip recipes only bundles the extension without installing it.
+zip: $(ZIP_NAME)
+
+# The install recipes creates the extension zip and installs it.
+install: $(ZIP_NAME)
+ gnome-extensions install "$(ZIP_NAME)" --force
+ @echo "Extension installed successfully! Now restart the Shell ('Alt'+'F2', then 'r' or log out/log in on Wayland)."
+
+# This uninstalls the previously installed extension.
+uninstall:
+ gnome-extensions uninstall "$(NAME)@$(DOMAIN)"
+
+# Use gettext to generate a translation template file.
+pot: $(JS_FILES) $(UI_FILES)
+ @echo "Generating '$(NAME).pot'..."
+ @xgettext --from-code=UTF-8 \
+ --add-comments=Translators \
+ --copyright-holder="GdH" \
+ --package-name="$(NAME)" \
+ --output=po/$(NAME).pot \
+ $(JS_FILES) $(UI_FILES)
+
+# This removes all temporary files created with the other recipes.
+clean:
+ rm -rf $(ZIP_NAME) \
+ schemas/gschemas.compiled \
+ locale
+
+# This bundles the extension and checks whether it is small enough to be uploaded to
+# extensions.gnome.org. We do not use "gnome-extensions pack" for this, as this is not
+# readily available on the GitHub runners.
+$(ZIP_NAME): $(ZIP_CONTENT)
+ @echo "Packing zip file..."
+ @rm --force $(ZIP_NAME)
+ @zip $(ZIP_NAME) -- $(ZIP_CONTENT)
+
+ @#Check if the zip size is too big to be uploaded
+ @SIZE=$$(unzip -Zt $(ZIP_NAME) | awk '{print $$3}') ; \
+ if [[ $$SIZE -gt 5242880 ]]; then \
+ echo "ERROR! The extension is too big to be uploaded to" \
+ "the extensions website, keep it smaller than 5 MB!"; \
+ exit 1; \
+ fi
+
+# Compiles the gschemas.compiled file from the gschema.xml file.
+schemas/gschemas.compiled: schemas/org.gnome.shell.extensions.$(NAME).gschema.xml
+ @echo "Compiling schemas..."
+ @glib-compile-schemas schemas
+
+# Compiles the gresource file from the gresources.xml.
+#resources/$(NAME).gresource: resources/$(NAME).gresource.xml
+# @echo "Compiling resources..."
+# @glib-compile-resources --sourcedir="resources" --generate resources/$(NAME).gresource.xml
+
+# Generates the gresources.xml based on all files in the resources subdirectory.
+#resources/$(NAME).gresource.xml: $(RESOURCE_FILES)
+# @echo "Creating resources xml..."
+# @FILES=$$(find "resources" -mindepth 2 -type f -printf "%P\n" | xargs -i echo "<file>{}</file>") ; \
+ echo "<?xml version='1.0' encoding='UTF-8'?><gresources><gresource> $$FILES </gresource></gresources>" \
+ > resources/$(NAME).gresource.xml
+
+# Compiles all *.po files to *.mo files.
+locale/%/LC_MESSAGES/$(NAME).mo: po/%.po
+ @echo "Compiling $@"
+ @mkdir -p locale/$*/LC_MESSAGES
+ @msgfmt -c -o $@ $<
+