build public

This commit is contained in:
Brian Hicks 2019-04-01 09:26:15 -05:00
parent 7f8480b681
commit 8bfc94611a
3 changed files with 35 additions and 1 deletions

2
.gitignore vendored
View File

@ -237,3 +237,5 @@ documentation.json
# direnv config file
.envrc
/public

View File

@ -18,7 +18,7 @@ format: node_modules
.PHONY: clean
clean:
rm -rf node_modules styleguide-app/elm.js styleguide-app/bundle.js $(shell find . -type d -name 'elm-stuff')
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: styleguide-app/elm.js
@ -34,6 +34,35 @@ styleguide-app/bundle.js: lib/index.js node_modules
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)
# 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 $< $@
.PHONY: serve-public
serve-public: public
cd public; python -m http.server
# plumbing
node_modules: package.json

View File

@ -16,5 +16,8 @@ stdenv.mkDerivation {
# node dependencies
nodejs
nodePackages.npm
# preview dependencies
python3
];
}