reagent/Makefile

132 lines
3.3 KiB
Makefile
Raw Normal View History

2013-12-16 22:19:36 +00:00
2014-12-10 11:21:29 +00:00
PROF =
PORT = 3449
2013-12-16 22:19:36 +00:00
SITEDIR = outsite/public
OUTPUTDIR = $(SITEDIR)/js/out
2013-12-16 22:19:36 +00:00
# convenience shortcuts for continous building
##############################################
2013-12-16 22:19:36 +00:00
# development build with auto-reloading
run: figwheel
2013-12-16 22:19:36 +00:00
# development build with auto-reloading and site generation
runsite:
@$(MAKE) run PROF=+site,$(PROF)
2013-12-16 22:19:36 +00:00
# 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)
2013-12-16 22:19:36 +00:00
# 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)
2013-12-16 22:19:36 +00:00
clean:
lein clean
2014-01-17 15:00:42 +00:00
## 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"
2014-01-24 10:03:01 +00:00
( 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
2014-01-24 10:03:01 +00:00
2013-12-16 22:19:36 +00:00
## gh-pages support
###################
2013-12-16 22:19:36 +00:00
# build site and push upstream to the gh-pages branch
push-gh-pages: build-gh-pages
2014-11-30 09:13:19 +00:00
git push origin gh-pages:gh-pages
# build site and push to reagent-project's doc site
push-project-docs: build-gh-pages
git push --force \
https://github.com/reagent-project/reagent-project.github.io.git \
gh-pages:master
2014-12-08 12:37:25 +00:00
# build site into a gh-pages branch
build-gh-pages: gen-site gh-pages-add
gen-site: clean
lein with-profile prod cljsbuild once
# 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
#################
2013-12-16 22:19:36 +00:00
show-outdated:
lein ancient :all
2014-12-10 11:21:29 +00:00
VERSION := `sed -n -e '/(defproject reagent/ s/.*"\(.*\)"/\1/p' project.clj`
2013-12-16 22:19:36 +00:00
setversion:
2013-12-16 22:22:54 +00:00
version=$(VERSION); \
2014-01-26 08:51:36 +00:00
find . -name project.clj -o -name README.md | \
2014-01-17 10:12:11 +00:00
xargs -n1 sed -i "" -e 's,\(reagent "\)\([^"]*\)",\1'"$$version"'"',g
2013-12-16 22:19:36 +00:00
tag: setversion
if git rev-parse v$(VERSION) 2>/dev/null; then \
echo "Tag already exists"; \
exit 1; \
else \
2014-01-26 08:51:36 +00:00
git commit --allow-empty -a -v -e -m"Version "$(VERSION) && \
2013-12-16 22:19:36 +00:00
git tag v$(VERSION); \
fi