reagent/Makefile

146 lines
3.5 KiB
Makefile

PROF =
PORT = 3449
SITEDIR = outsite/public
OUTPUTDIR = $(SITEDIR)/js/out
# convenience shortcuts for continous building
##############################################
# development build with auto-reloading
run: figwheel
# development build with auto-reloading and site generation
runsite:
@$(MAKE) run PROF=+site,$(PROF)
# development build with auto-reloading and webpacked source
runpack: target/webpack/bundle.js
@$(MAKE) run PROF=+webpack,$(PROF)
# development build with figwheel, but no tests
runnotest:
@$(MAKE) run PROF=dev-notest,$(PROF)
# production build with auto-rebuild
runprod: clean
@$(MAKE) serve-site PROF=prod,$(PROF)
# production build with auto-rebuild and webpacked source
runprodpack: clean target/webpack/bundle.js
@$(MAKE) serve-site PROF=prod,webpack,$(PROF)
# production build with auto-rebuild and testing
runprodtest: clean
@$(MAKE) serve-site PROF=prod-test,$(PROF)
clean:
lein clean
## Subtargets
figwheel: trigger-build
@echo "Will start figwheel server at: http://127.0.0.1:$(PORT)\n"
lein with-profile $(PROF), figwheel
serve-site: trigger-build
@echo "Starting site at: http://127.0.0.1:$(PORT)/public\n"
( trap "kill 0" SIGINT SIGTERM EXIT; \
( cd $(SITEDIR)/.. && python -m SimpleHTTPServer $(PORT) & ); \
lein with-profile $(PROF), cljsbuild auto )
trigger-build:
# always trigger build to make sure page-generation works
@echo "(ns empty.generated.ns)" > demo/empty.cljs
@(echo "/* Generated, do not modify */\n\n" && \
cat examples/todomvc/todos.css examples/simple/example.css) \
> site/public/css/examples.css
## gh-pages support
###################
# build site and push upstream to the gh-pages branch
push-gh-pages: build-gh-pages
git push origin gh-pages:gh-pages
# build site and push to reagent-project's doc site
push-project-docs: gen-site gen-docs
# sanity check
test -f $(SITEDIR)/index.html
test ! -e $(OUTPUTDIR)
rm -fr tmp
git clone git@github.com:reagent-project/reagent-project.github.io.git tmp
rm -fr tmp/*
cp -r $(SITEDIR)/* tmp/
mkdir -p tmp/docs/master/
cp -r target/doc/* tmp/docs/master/
cd tmp && \
git add . && git commit -m "Updated" && \
git push
rm -rf tmp
# build site into a gh-pages branch
build-gh-pages: gen-site gh-pages-add
gen-site: clean node_modules
lein with-profile prerender cljsbuild once
node pre-render/main.js
gen-docs: clean
lein codox
# copy contents of $(SITEDIR) to branch gh-pages
gh-pages-add:
# sanity check
test -f $(SITEDIR)/index.html
test ! -e $(OUTPUTDIR)
# make sure gh-pages branch exists
git show-branch gh-pages || true | git mktree | \
xargs git commit-tree | xargs git branch gh-pages
# clone gh-pages branch, and commit site to that
cd $(SITEDIR) && \
rm -rf .git tmp && \
git clone ../.. -lnb gh-pages tmp && \
mv tmp/.git . && \
git add . && git commit -m "Updated" && \
git push && rm -rf .git tmp
## Webpack
##########
target/webpack/bundle.js: node_modules lib/modules.js package.json Makefile
npm run bundle
node_modules:
npm install
## Misc utilities
#################
show-outdated:
lein ancient :all
VERSION := `sed -n -e '/(defproject reagent/ s/.*"\(.*\)"/\1/p' project.clj`
setversion:
version=$(VERSION); \
find . -name project.clj -o -name README.md | \
xargs -n1 sed -i "" -e 's,\(reagent "\)\([^"]*\)",\1'"$$version"'"',g
tag: setversion
if git rev-parse v$(VERSION) 2>/dev/null; then \
echo "Tag already exists"; \
exit 1; \
else \
git commit --allow-empty -a -v -e -m"Version "$(VERSION) && \
git tag v$(VERSION); \
fi