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: