-
Notifications
You must be signed in to change notification settings - Fork 20
/
Makefile
90 lines (73 loc) · 3.37 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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 $@ $<