blob: 330a55a486fea419c0d1803911a397fff1c5fcfe (
plain) (
tree)
|
|
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:
|