noredink-ui/Makefile

74 lines
2.3 KiB
Makefile
Raw Normal View History

2018-10-04 12:24:00 +03:00
SHELL:=env PATH=${PATH} /bin/sh
2018-03-28 06:03:45 +03:00
.PHONY: test
2018-12-08 01:45:08 +03:00
test: node_modules
npx elm-test
2018-03-28 06:00:47 +03:00
.PHONY: checks
checks:
script/check-exposed.py
2018-03-28 06:00:47 +03:00
.PHONY: diff
2018-12-08 01:46:43 +03:00
diff: node_modules
if (npx elm diff | tee /dev/stderr | grep -q MAJOR); then echo "MAJOR changes are not allowed!"; exit 1; fi
2018-03-28 06:00:47 +03:00
.PHONY: format
format: node_modules
npx elm-format --validate src && npx elm-format --validate --elm-version=0.19 tests styleguide-app
2018-03-28 06:00:47 +03:00
.PHONY: clean
clean:
2019-04-01 17:26:15 +03:00
rm -rf node_modules styleguide-app/elm.js styleguide-app/bundle.js $(shell find . -type d -name 'elm-stuff') public
.PHONY: styleguide-app
styleguide-app:
2019-04-02 23:53:48 +03:00
./script/develop.sh
2018-05-17 16:59:35 +03:00
documentation.json: node_modules
npx elm make --docs $@
2018-05-17 16:59:35 +03:00
2019-04-02 23:32:31 +03:00
styleguide-app/bundle.js: lib/index.js styleguide-app/manifest.js styleguide-app/assets/generated_svgs.js node_modules
2018-12-13 21:32:19 +03:00
npx browserify --entry styleguide-app/manifest.js --outfile styleguide-app/bundle.js
2018-12-13 21:32:19 +03:00
styleguide-app/elm.js: styleguide-app/bundle.js $(shell find src styleguide-app -type f -name '*.elm')
cd styleguide-app; npx elm make Main.elm --output=$(@F)
2018-03-28 01:00:46 +03:00
2019-04-01 17:26:15 +03:00
# for publishing styleguide
# We don't want to have to generate new rules for every single asset, so we find
# all the ones that exist (`STYLEGUIDE_ASSETS`) then replace the roots
# (`PUBLIC_ASSETS`). The `%` wildcard works like it does in `public/%` below.
STYLEGUIDE_ASSETS=$(shell find styleguide-app/assets -type f)
PUBLIC_ASSETS=$(STYLEGUIDE_ASSETS:styleguide-app/assets/%=public/assets/%)
public: public/index.html public/elm.js public/bundle.js $(PUBLIC_ASSETS)
touch -m $@
# wildcard rule: % on the left-hand side will be matched and replaced on the
# right-hand side. So `public/index.html` depends on `styleguide-app/index.html`
#
# - automatic variables: `$@` is the target (left-hand side of the rule.) `$<`
# is the first dependency.
# - about the leading `@` in `mkdir`: leading `@` turns off echoing the
# command. We're just reducing log spam here.
# - about `$(@D)`: $@ gets the target (left-hand side of the rule). Any
# automatic variable plus `D` gets the directory of that file, so `$(@D)` is
# the target's directory.
public/%: styleguide-app/%
@mkdir -p $(@D)
cp $< $@
# plumbing
node_modules: package.json
npm install
touch -m $@
2018-03-28 06:03:45 +03:00
# special targets for travis, but anyone can use them, really.
.PHONY: setup
setup: node_modules
2018-03-28 06:03:45 +03:00
.PHONY: ci
ci: checks test format documentation.json diff styleguide-app/elm.js