-
Notifications
You must be signed in to change notification settings - Fork 34
/
Makefile
181 lines (159 loc) · 7.96 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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
VERSION="${shell cat .version 2> /dev/null || git describe --tags 2> /dev/null}"
MK="[make]"
run: dist/fury tmp/.bundle.ipfs
fury: dist/fury publish
@printf "$(MK) Copying new launcher script to root directory..." && \
cp "$<" "$@" && \
printf "done\n"
clean:
@printf "$(MK) Cleaning tmp, dist directories..." && \
rm -rf .version tmp dist && \
printf "done\n" || (printf "failed\n" && exit 1)
uninstall:
@printf "$(MK) Removing all previous installations of Fury..."
@rm -rf $(HOME)/.local/share/fury/downloads && \
printf "done\n" || (printf "failed\n" && exit 1)
install: etc/launcher dist/fury.tar.gz
@( printf "$(MK) Rewriting Fury launcher script for local use..." && \
mkdir -p dist && \
( sed "s/%VERSION%/$(VERSION)/" "$<" | sed "s/%HASH%//" > "tmp/fury" ) && \
chmod +x "tmp/fury" && \
printf "done\n" || (printf "failed\n" && exit 1) \
) && \
( printf "$(MK) Installing Fury...\n" && \
mkdir -p ~/.local/share/fury/usr/$(VERSION) && \
tar xf dist/fury.tar.gz -C ~/.local/share/fury/usr/$(VERSION) && \
tmp/fury system install && \
printf "$(MK) Done\n" || (printf "$(MK) Failed\n" && exit 1) \
)
tmp/.version:
@printf "$(MK) Writing current version ($(VERSION)) to a file..." && \
mkdir -p tmp && \
printf "$(VERSION)\n" > "$@" && \
printf "$(shell date +%s)" >> "$@" && \
printf "done\n" || (printf "failed\n" && exit 1)
tmp/lib/fury.jar: $(wildcard src/**/*.scala) tmp/.version
@printf "$(MK) Cloning the Fury layer over IPFS...\n" && \
mkdir -p tmp/lib && \
printf "$(MK) Done\n" && \
printf "$(MK) Compiling Fury from source...\n" && \
./fury build save --https --project fury --module frontend --output linear --path tmp/lib --fat-jar --disable-security-manager && \
mv tmp/lib/fury-frontend.jar "$@" && \
jar uf "$@" -C tmp .version && \
touch "$@" && \
printf "$(MK) Done\n" || (printf "$(MK) Failed\n" && exit 1)
tmp/bin/fury: etc/fury
@printf "$(MK) Copying Fury runner script..." && \
mkdir -p tmp/bin && \
cp "$<" "$@" && \
printf "done\n" || printf "failed\n"
tmp/script/_fury: etc/completion/zsh/_fury
@printf "$(MK) Copying zsh completion script..." && \
mkdir -p tmp/script && \
cp "$<" "$@" && \
printf "done\n" || (printf "failed\n" && exit 1)
tmp/bin/procname.c: etc/procname.c
@printf "$(MK) Copying Procname C wrapper..." && \
mkdir -p tmp/bin && \
cp "$<" "$@" && \
printf "done\n" || (printf "failed\n" && exit 1)
tmp/bin/ng.c:
@printf "$(MK) Downloading Nailgun C client..." && \
mkdir -p tmp/bin && \
curl -Lso "$@" https://raw.githubusercontent.com/facebook/nailgun/master/nailgun-client/c/ng.c && \
printf "done\n" || (printf "failed\n" && exit 1)
tmp/bin/ng.py:
@printf "$(MK) Downloading Nailgun Python client..." && \
mkdir -p tmp/bin && \
curl -Lso "$@" https://raw.githubusercontent.com/facebook/nailgun/master/nailgun-client/py/ng.py && \
sed -i.bak '1 s/$$/2.7/' "$@" && rm "$@.bak" && \
chmod +x "$@" && \
printf "done\n" || (printf "failed\n" && exit 1)
tmp/etc: etc/icons/hicolor/16x16/apps/fury-icon.png etc/icons/hicolor/48x48/apps/fury-icon.png etc/icons/hicolor/128x128/apps/fury-icon.png
@printf "$(MK) Copying Fury icons..." && \
mkdir -p tmp/etc && \
cp -r etc/icons tmp/etc/icons && \
touch tmp/etc && \
printf "done\n" || (printf "failed\n" && exit 1)
icons: doc/logo/render_1000px.png
@printf "$(MK) Resizing logo for Fury icons..." && \
mkdir -p etc/icons/hicolor/128x128/apps etc/icons/hicolor/48x48/apps etc/icons/hicolor/16x16/apps && \
convert doc/logo/render_1000px.png -resize 16x16 etc/icons/hicolor/16x16/apps/fury-icon.png && \
convert doc/logo/render_1000px.png -resize 48x48 etc/icons/hicolor/48x48/apps/fury-icon.png && \
convert doc/logo/render_1000px.png -resize 128x128 etc/icons/hicolor/128x128/apps/fury-icon.png && \
printf "done\n" || (printf "failed\n" && exit 1)
dist/fury.tar.gz: tmp/.version tmp/lib/fury.jar tmp/bin/fury tmp/bin/ng.c tmp/bin/ng.py tmp/bin/procname.c tmp/script/_fury tmp/etc tmp/etc
@printf "$(MK) Creating bundle file..." && \
mkdir -p dist && \
tar czf "$@" -C tmp .version lib bin etc script && \
printf "done\n" || (printf "failed\n" && exit 1)
tmp/.bundle.ipfs: dist/fury.tar.gz
@printf "$(MK) Adding $(shell tput -Tansi sitm)Fury bundle $(VERSION)$(shell tput -Tansi sgr0) to IPFS..." & \
ipfs add -q "$<" > "$@" && \
printf "done\n" || (printf "failed\n" && exit 1)
dist/fury: etc/launcher tmp/.bundle.ipfs
@printf "$(MK) Rewriting Fury launcher script..." && \
mkdir -p dist && \
sed -e "s/%VERSION%/$(VERSION)/" \
-e "s/%HASH%/$(shell cat tmp/.bundle.ipfs)/" \
-e "s/%MD5%/$(shell (md5sum dist/fury.tar.gz 2> /dev/null || md5 -r dist/fury.tar.gz 2> /dev/null) | head -c 32)/" "$<" > "$@" && \
chmod +x "$@" && \
printf "done\n" || (printf "failed\n" && exit 1)
tmp/.launcher.ipfs: dist/fury
@printf "$(MK) Adding $(shell tput -Tansi sitm)Fury launcher $(VERSION)$(shell tput -Tansi sgr0) to IPFS..." && \
ipfs add -q "$<" > "$@" && \
printf "done\n" || (printf "failed\n" && exit 1)
pinata: tmp/.bundle.ipfs .pinata/apiKey .pinata/secretApiKey
@( echo $(VERSION) | grep -q '-' && printf "$(MK) Not pinning snapshot release of Fury bundle.\n" ) || \
( printf "$(MK) Sending $(shell tput -Tansi sitm)addHashToPinQueue$(shell tput -Tansi sgr0) request to Pinata..." && \
curl -s \
-X POST \
-H "Content-Type: application/json" \
-H "pinata_api_key: $(shell cat .pinata/apiKey)" \
-H "pinata_secret_api_key: $(shell cat .pinata/secretApiKey)" \
-d "{\"pinataMetadata\":{\"name\":\"fury-$(VERSION).tar.gz\"},\"hashToPin\":\"$(shell cat tmp/.bundle.ipfs)\"}" \
"https://api.pinata.cloud/pinning/addHashToPinQueue" > /dev/null && \
printf "done\n" || ( printf "failed\n" && exit 1 ) \
) && \
printf "$(shell tput -Tansi bold)Fury bundle version $(VERSION) published to $(shell cat tmp/.bundle.ipfs)$(shell tput -Tansi sgr0)\n"
.version:
@( echo $(shell bash -c 'read -p "Please specify the new version (current: $(VERSION)): " V; echo $$V') > "$@" )
publish: .version pinata .pinata/apiKey .pinata/secretApiKey tmp/.launcher.ipfs
@( echo $(VERSION) | grep -q '-' && printf "Not pinning snapshot release of Fury launcher.\n" ) || \
( ( stat .version 2> /dev/null > /dev/null || \
( printf "$(MK) Please specify the new version in the file $(shell tput -Tansi bold).version$(shell tput -Tansi sgr0).\n" && \
exit 1 ) \
) && \
printf "$(MK) Checking there are no uncommitted changes..." && \
git diff-index HEAD -- && \
printf "done\n" && \
printf "$(MK) Updating source headers..." && \
etc/revise && \
printf "done\n" && \
git add src && \
git commit -m "Updated source headers to version $(VERSION)" && \
git push && \
git tag "$(VERSION)" && \
printf "$(MK) Sending $(shell tput -Tansi sitm)addHashToPinQueue$(shell tput -Tansi sgr0) request to Pinata..." && \
curl -s \
-X POST \
-H "Content-Type: application/json" \
-H "pinata_api_key: $(shell cat .pinata/apiKey)" \
-H "pinata_secret_api_key: $(shell cat .pinata/secretApiKey)" \
-d "{\"pinataMetadata\":{\"name\":\"fury-$(VERSION).sh\"},\"hashToPin\":\"$(shell cat tmp/.launcher.ipfs)\"}" \
"https://api.pinata.cloud/pinning/addHashToPinQueue" > /dev/null && \
printf "done\n" && \
git push --tags && \
printf "$(MK) Copying new launcher script to root directory..." && \
cp dist/fury fury && \
rm .version && \
git add fury && \
git commit -m "Updated bootstrap version to $(VERSION)" && \
git push && \
printf "$(MK) Done\n" || ( printf "$(MK) Failed\n" && exit 1 ) \
) && \
printf "$(MK) $(shell tput -Tansi bold)Fury launcher $(VERSION) published to $(shell cat tmp/.launcher.ipfs)$(shell tput -Tansi sgr0)\n" && \
printf "$(MK) $(shell tput -Tansi bold)Test this with: curl -Ls https://gateway.ipfs.io/ipfs/$(shell cat tmp/.launcher.ipfs) | sh $(shell tput -Tansi sgr0)\n"
test:
tmp/fury test --disable-security-manager --output linear
.PHONY: run publish pinata clean uninstall icons tmp/.version test