aboutsummaryrefslogtreecommitdiff
path: root/cmd/web/Makefile
blob: 330a55a486fea419c0d1803911a397fff1c5fcfe (plain) (blame)
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
SHELL=/bin/bash
ENV ?= dev
export PATH := $(PATH):./node_modules/.bin

# Javascript objects
JS_SRC_DIR=js
JS_BUILD_DIR=build/js
JSX_SRC=header_footer.jsx main.jsx signup.jsx signin.jsx otp.jsx poloniex.jsx password_reset.jsx change_password.jsx account.jsx balance.jsx admin.jsx panel.jsx icon.jsx
JS_SRC=cookies.js app.js api.js
JSX_OBJS=$(addprefix $(JS_BUILD_DIR)/,$(JSX_SRC:.jsx=.js))
JS_OBJS=$(addprefix $(JS_BUILD_DIR)/,$(JS_SRC))

# Static resources
STATIC_BUILD_DIR=build/static
STATIC_FILES=index.html style.css

# Fontello icon provider - regular icons
STATIC_FILES+=fontello.css
STATIC_FILES+=$(addprefix fonts/, fontello.eot fontello.svg fontello.ttf fontello.woff fontello.woff2)
FONTELLO_TMP_DIR = ./static/fontello
FONTELLO_HOST ?= http://fontello.com

# Biticonics cryptocurrency icon provider.
STATIC_FILES+=$(addprefix fonts/, bitonics.min.css)
CRYPTO_ICONS_FONTS=$(addprefix $(STATIC_BUILD_DIR)/fonts/glyphs/ttf/, $(notdir $(wildcard static/fonts/glyphs/ttf/*.ttf)))
CRYPTO_ICONS_FONTS+=$(addprefix $(STATIC_BUILD_DIR)/fonts/glyphs/woff/, $(notdir $(wildcard static/fonts/glyphs/woff/*.woff)))
CRYPTO_ICONS_FONTS+=$(addprefix $(STATIC_BUILD_DIR)/fonts/glyphs/woff2/, $(notdir $(wildcard static/fonts/glyphs/woff2/*.woff2)))

define fetch-bitonics-icons =
	DIR="static/fonts/glyphs"

	curl 'https://bitonics.net/vendor/bitonics/bitonics.min.css' > static/fonts/bitonics.min.css

	glyphs=($(curl 'https://bitonics.net/vendor/bitonics/bitonics.css' | grep -Po 'glyphs/ttf/[a-z0-9]{8}' | cut -c 12-))

	for glyph in "${glyphs[@]}"
	do
		if [ ! -f "$DIR/ttf/$glyph.ttf" ]; then
		  curl "https://bitonics.net/vendor/bitonics/glyphs/ttf/$glyph.ttf" > "$DIR/ttf/$glyph.ttf"
		  curl "https://bitonics.net/vendor/bitonics/glyphs/woff/$glyph.woff" > "$DIR/woff/$glyph.woff"
		  curl "https://bitonics.net/vendor/bitonics/glyphs/woff2/$glyph.woff2" > "$DIR/woff2/$glyph.woff2"
		fi
	done
endef

# Rules
install:
	node --version
	npm --version
	yarn --version
	yarn install

$(JS_BUILD_DIR):
	mkdir -p $@

$(STATIC_BUILD_DIR)/fonts:
	mkdir -p $@

$(STATIC_BUILD_DIR)/fonts/glyphs:
	mkdir -p $@/ttf
	mkdir -p $@/woff
	mkdir -p $@/woff2

static: js $(addprefix $(STATIC_BUILD_DIR)/, $(STATIC_FILES)) $(CRYPTO_ICONS_FONTS)

js: build/static/main.js

$(STATIC_BUILD_DIR)/%: static/% $(STATIC_BUILD_DIR)/fonts
	cp $< $@

$(JS_BUILD_DIR)/%.js: $(JS_SRC_DIR)/%.jsx
	eslint --fix $<
	cp $< $@

$(JS_BUILD_DIR)/%.js: $(JS_SRC_DIR)/%.js
	eslint $<
	cp $< $@

$(STATIC_BUILD_DIR)/fonts/glyphs/%: static/fonts/glyphs/% $(STATIC_BUILD_DIR)/fonts/glyphs
	cp $< $@

build/static/main.js: $(JS_BUILD_DIR) $(JSX_OBJS) $(JS_OBJS) env/$(ENV).env
	browserify -t [ babelify --presets [ env react ] --plugins [ transform-class-properties ] ] \
			   -t [ localenvify --envfile env/$(ENV).env ] \
			   -t [ debowerify ]  \
			    $(JS_BUILD_DIR)/main.js -o $@

build/webapp.tar.gz: $(addprefix $(STATIC_BUILD_DIR)/, $(STATIC_FILES)) build/static/main.js $(CRYPTO_ICONS_FONTS)
	tar czf $@ --directory=$(dir $<) $(subst $(STATIC_BUILD_DIR)/,,$^)

release: build/webapp.tar.gz

clean:
	rm -rf build
	rm -rf node_modules

fontello-open:
	@if test ! `which curl` ; then \
		echo 'Install curl first.' >&2 ; \
		exit 128 ; \
		fi
	curl --silent --show-error --fail --output .fontello \
		--form "config=@static/fontello_config.json" \
		${FONTELLO_HOST}
	x-www-browser ${FONTELLO_HOST}/`cat .fontello`

fontello-save:
	@if test ! `which unzip` ; then \
		echo 'Install unzip first.' >&2 ; \
		exit 128 ; \
		fi
	@if test ! -e .fontello ; then \
		echo 'Run `make fontopen` first.' >&2 ; \
		exit 128 ; \
		fi
	rm -rf .fontello.src .fontello.zip
	curl --silent --show-error --fail --output .fontello.zip \
		${FONTELLO_HOST}/`cat .fontello`/get
	unzip .fontello.zip -d .fontello.src
	rm -rf ${FONTELLO_TMP_DIR}
	mv `find ./.fontello.src -maxdepth 1 -name 'fontello-*'` ${FONTELLO_TMP_DIR}
	rm -rf .fontello.src .fontello.zip
	cp ${FONTELLO_TMP_DIR}/font/* static/fonts/
	cp ${FONTELLO_TMP_DIR}/css/fontello-codes.css static/fontello.css
	cp ${FONTELLO_TMP_DIR}/config.json static/fontello_config.json
	rm -rf ${FONTELLO_TMP_DIR}


crypto-icons: ; $(value fetch-bitonics-icons)

.ONESHELL: