2013-04-26 21:01:39 +02:00
# You can set these variables from the command line.
2015-02-05 15:57:39 +01:00
BUILDDIR = ./docs
2015-10-25 18:49:35 +01:00
BUNDLE ?= ./.bundle/bin/bundle
GRUNT ?= ./node_modules/.bin/grunt
2017-01-26 15:49:02 +01:00
HTTPSERVE ?= ./node_modules/.bin/http-server
JSHINT ?= ./node_modules/.bin/jshint
ESLINT ?= ./node_modules/.bin/eslint
2015-02-05 15:57:39 +01:00
PAPER =
2015-01-18 19:10:22 +01:00
PHANTOMJS ?= ./node_modules/.bin/phantomjs
2017-01-26 15:49:02 +01:00
RJS ?= ./node_modules/.bin/r.js
2015-02-05 15:57:39 +01:00
PO2JSON ?= ./node_modules/.bin/po2json
2015-04-26 09:38:23 +02:00
SASS ?= ./.bundle/bin/sass
2016-09-23 13:37:18 +02:00
CLEANCSS ?= ./node_modules/.bin/cleancss
2015-10-25 18:49:35 +01:00
SPHINXBUILD ?= ./bin/sphinx-build
SPHINXOPTS =
2014-03-17 21:37:40 +01:00
2013-04-26 21:01:39 +02:00
# Internal variables.
ALLSPHINXOPTS = -d $( BUILDDIR) /doctrees $( PAPEROPT_$( PAPER) ) $( SPHINXOPTS) ./docs/source
2017-01-26 15:49:02 +01:00
SOURCES = $( wildcard *.js) $( wildcard spec/*.js) $( wildcard src/*.js)
2015-10-25 18:49:35 +01:00
JSHINTEXCEPTIONS = $( GENERATED) \
2017-01-26 15:49:02 +01:00
src/build-mobile.js \
src/build-no-jquery.js \
src/build-no-dependencies.js \
src/build.js \
CHECKSOURCES = $( filter-out $( JSHINTEXCEPTIONS) ,$( SOURCES) )
2013-04-26 21:01:39 +02:00
2016-03-29 08:56:13 +02:00
.PHONY : all
2016-09-23 15:41:12 +02:00
all : dev dist
2016-03-29 08:56:13 +02:00
2015-09-25 21:39:47 +02:00
.PHONY : help
2013-04-26 21:01:39 +02:00
help :
2015-04-26 09:38:23 +02:00
@echo "Please use \`make <target>' where <target> is one of the following:"
@echo ""
2015-09-25 21:39:47 +02:00
@echo " all A synonym for 'make dev'."
@echo " build Create minified builds of converse.js and all its dependencies."
@echo " changes Make an overview of all changed/added/deprecated items added to the documentation."
2017-02-16 12:56:40 +01:00
@echo " clean Remove downloaded the stamp-* guard files as well as all NPM and Ruby packages."
2015-09-25 21:39:47 +02:00
@echo " css Generate CSS from the Sass files."
@echo " dev Set up the development environment. To force a fresh start, run 'make clean' first."
@echo " epub Export the documentation to epub."
@echo " html Make standalone HTML files of the documentation."
2016-02-26 17:33:16 +01:00
@echo " doc Same as " doc". Make standalone HTML files of the documentation."
2015-09-25 21:39:47 +02:00
@echo " linkcheck Check all documentation external links for integrity."
@echo " po Generate gettext PO files for each i18n language."
@echo " po2json Generate JSON files from the language PO files."
@echo " pot Generate a gettext POT file to be used for translations."
@echo " release Prepare a new release of converse.js. E.g. make release VERSION=0.9.5"
@echo " serve Serve this directory via a webserver on port 8000."
@echo " stamp-npm Install NPM dependencies and create the guard file stamp-npm which will prevent those dependencies from being installed again."
@echo " stamp-bundler Install Bundler (Ruby) dependencies and create the guard file stamp-bundler which will prevent those dependencies from being installed again."
@echo " watch Tells Sass to watch the .scss files for changes and then automatically update the CSS files."
2015-02-05 15:57:39 +01:00
########################################################################
## Miscellaneous
2015-09-25 21:39:47 +02:00
.PHONY : serve
2015-04-26 09:38:23 +02:00
serve : stamp -npm
2016-02-15 16:06:36 +01:00
$( HTTPSERVE) -p 8000 -c -1
2013-06-01 13:17:52 +02:00
2014-04-18 17:47:47 +02:00
########################################################################
## Translation machinery
2016-04-04 12:34:39 +02:00
GETTEXT = xgettext --keyword= __ --keyword= ___ --from-code= UTF-8 --output= locale/converse.pot src/*.js --package-name= Converse.js --copyright-holder= "Jan-Carel Brand" --package-version= 0.10.1 -c
2016-02-08 09:58:57 +01:00
2015-09-25 21:39:47 +02:00
.PHONY : pot
2014-04-18 17:47:47 +02:00
pot :
2016-02-08 09:58:57 +01:00
$( GETTEXT) --language= "javascript" 2>& 1 > /dev/null; test $$ ? -eq 0 && exit 0 || $( GETTEXT) --language= "python" && exit $$ ?;
2013-04-26 21:01:39 +02:00
2015-09-25 21:39:47 +02:00
.PHONY : po
2014-03-14 19:27:44 +01:00
po :
2013-09-12 11:14:45 +02:00
find ./locale -maxdepth 1 -mindepth 1 -type d -exec msgmerge { } /LC_MESSAGES/converse.po ./locale/converse.pot -U \;
2015-09-25 21:39:47 +02:00
.PHONY : po 2json
2013-09-15 22:16:16 +02:00
po2json :
2014-12-13 00:14:11 +01:00
find ./locale -maxdepth 1 -mindepth 1 -type d -exec $( PO2JSON) -p -f jed -d converse { } /LC_MESSAGES/converse.po { } /LC_MESSAGES/converse.json \;
2013-09-15 22:16:16 +02:00
2014-04-18 17:47:47 +02:00
########################################################################
## Release management
2015-09-25 21:39:47 +02:00
.PHONY : release
2013-10-08 09:11:04 +02:00
release :
2017-02-27 08:42:17 +01:00
sed -i s/Version:\ [ 0-9] \+ \. [ 0-9] \+ \. [ 0-9] \+ /Version:\ $( VERSION) / src/start.frag
2017-02-25 23:25:40 +01:00
sed -i s/Project-Id-Version:\ Converse\. js\ [ 0-9] \+ \. [ 0-9] \+ \. [ 0-9] \+ /Project-Id-Version:\ Converse.js\ $( VERSION) / locale/converse.pot
sed -i s/\" version\" :\ \" [ 0-9] \+ \. [ 0-9] \+ \. [ 0-9] \+ \" /\" version\" :\ \" $( VERSION) \" / bower.json
sed -i s/\" version\" :\ \" [ 0-9] \+ \. [ 0-9] \+ \. [ 0-9] \+ \" /\" version\" :\ \" $( VERSION) \" / package.json
sed -i s/--package-version= [ 0-9] \+ \. [ 0-9] \+ \. [ 0-9] \+ /--package-version= $( VERSION) / Makefile
sed -i s/v[ 0-9] \+ \. [ 0-9] \+ \. [ 0-9] \+ \. zip/v$( VERSION) \. zip/ index.html
sed -i s/v[ 0-9] \+ \. [ 0-9] \+ \. [ 0-9] \+ \. tar\. gz/v$( VERSION) \. tar\. gz/ index.html
sed -i s/version\ = \ \' [ 0-9] \+ \. [ 0-9] \+ \. [ 0-9] \+ \' /version\ = \ \' $( VERSION) \' / docs/source/conf.py
sed -i s/release\ = \ \' [ 0-9] \+ \. [ 0-9] \+ \. [ 0-9] \+ \' /release\ = \ \' $( VERSION) \' / docs/source/conf.py
2015-11-05 12:17:40 +01:00
sed -i "s/(Unreleased)/(`date +%Y-%m-%d`)/" docs/CHANGES.md
2014-08-25 14:39:32 +02:00
make pot
make po
2014-12-20 11:19:03 +01:00
make po2json
2014-08-04 23:09:14 +02:00
make build
2013-05-09 23:16:23 +02:00
2014-04-18 17:39:45 +02:00
########################################################################
## Install dependencies
stamp-npm : package .json
2014-03-14 19:27:44 +01:00
npm install
2014-04-18 17:39:45 +02:00
touch stamp-npm
2014-03-14 19:27:44 +01:00
2016-02-27 16:57:30 +01:00
stamp-bundler : Gemfile
2015-04-26 09:38:23 +02:00
mkdir -p .bundle
gem install --user bundler --bindir .bundle/bin
$( BUNDLE) install --path .bundle --binstubs .bundle/bin
touch stamp-bundler
2015-09-25 21:39:47 +02:00
.PHONY : clean
2016-02-27 16:57:30 +01:00
clean :
2017-02-16 12:56:40 +01:00
-rm -f stamp-npm stamp-bundler
2017-02-16 11:59:28 +01:00
-rm -rf node_modules .bundle
2013-04-26 21:01:39 +02:00
2015-09-25 21:39:47 +02:00
.PHONY : dev
2017-02-16 12:56:40 +01:00
dev : stamp -bundler stamp -npm
2014-04-18 17:39:45 +02:00
2014-05-07 22:36:45 +02:00
########################################################################
## Builds
2015-09-25 21:39:47 +02:00
.PHONY : css
2017-01-16 22:15:07 +01:00
css : sass /*.scss css /converse .css css /converse .min .css css /mobile .min .css css /theme .min .css css /converse -muc -embedded .min .css
2017-02-16 12:56:40 +01:00
css/converse-muc-embedded.css :: stamp -bundler sass
2017-02-16 11:59:28 +01:00
$( SASS) -I ./node_modules/bourbon/app/assets/stylesheets/ sass/_muc_embedded.scss css/converse-muc-embedded.css
2017-01-16 22:15:07 +01:00
2017-02-16 12:56:40 +01:00
css/converse-muc-embedded.min.css :: stamp -bundler sass css /converse -muc -embedded .css
2017-01-16 22:15:07 +01:00
$( CLEANCSS) css/converse-muc-embedded.css > css/converse-muc-embedded.min.css
2015-04-26 09:38:23 +02:00
2017-02-16 12:56:40 +01:00
css/converse.css :: stamp -bundler sass
2017-02-16 11:59:28 +01:00
$( SASS) -I ./node_modules/bourbon/app/assets/stylesheets/ sass/converse.scss css/converse.css
2015-10-16 16:12:10 +02:00
2017-02-16 14:42:50 +01:00
css/converse.min.css :: stamp -npm sass
2016-09-23 13:37:18 +02:00
$( CLEANCSS) css/converse.css > css/converse.min.css
2017-02-16 14:42:50 +01:00
css/theme.min.css :: stamp -npm css /theme .css
2016-10-19 10:51:21 +02:00
$( CLEANCSS) css/theme.css > css/theme.min.css
2017-02-16 14:42:50 +01:00
css/mobile.min.css :: stamp -npm sass
2016-10-19 10:51:21 +02:00
$( CLEANCSS) css/mobile.css > css/mobile.min.css
2015-09-25 21:39:47 +02:00
.PHONY : watch
watch : stamp -bundler
2017-02-16 11:59:28 +01:00
$( SASS) --watch -I ./node_modules/bourbon/app/assets/stylesheets/ sass/converse.scss:css/converse.css sass/_muc_embedded.scss:css/converse-muc-embedded.css
2014-04-18 17:39:45 +02:00
2016-02-28 10:00:22 +01:00
BUILDS = dist/converse.js \
dist/converse.min.js \
2016-04-01 15:33:14 +02:00
dist/converse-mobile.js \
dist/converse-mobile.min.js \
2017-02-27 08:42:17 +01:00
dist/converse-no-jquery.js \
dist/converse-no-jquery.min.js \
2016-02-28 10:00:22 +01:00
dist/converse-no-dependencies.min.js \
dist/converse-no-dependencies.js
2017-02-16 12:56:40 +01:00
dist/converse.min.js : src locale node_modules *.js
2017-02-27 08:42:17 +01:00
$( RJS) -o src/build.js include = converse out = dist/converse.min.js
2017-02-16 12:56:40 +01:00
dist/converse.js : src locale node_modules *.js
2017-02-27 08:42:17 +01:00
$( RJS) -o src/build.js include = converse out = dist/converse.js optimize = none
dist/converse-no-jquery.min.js : src locale node_modules *.js
$( RJS) -o src/build.js include = converse wrap.endFile= end-no-jquery.frag exclude = jquery exclude = jquery-private out = dist/converse-no-jquery.min.js
dist/converse-no-jquery.js : src locale node_modules *.js
$( RJS) -o src/build.js include = converse wrap.endFile= end-no-jquery.frag exclude = jquery exclude = jquery-private out = dist/converse-no-jquery.js optimize = none
2017-02-16 12:56:40 +01:00
dist/converse-no-dependencies.min.js : src locale node_modules *.js
2016-02-27 16:57:30 +01:00
$( RJS) -o src/build-no-dependencies.js
2017-02-16 12:56:40 +01:00
dist/converse-no-dependencies.js : src locale node_modules *.js
2016-02-28 10:00:22 +01:00
$( RJS) -o src/build-no-dependencies.js optimize = none out = dist/converse-no-dependencies.js
2017-02-16 12:56:40 +01:00
dist/converse-mobile.min.js : src locale node_modules *.js
2017-02-27 08:42:17 +01:00
$( RJS) -o src/build.js include = converse-mobile out = dist/converse-mobile.min.js
2017-02-16 12:56:40 +01:00
dist/converse-mobile.js : src locale node_modules *.js
2017-02-27 08:42:17 +01:00
$( RJS) -o src/build.js optimize = none include = converse-mobile out = dist/converse-mobile.js
2016-02-27 16:57:30 +01:00
2015-09-25 21:39:47 +02:00
.PHONY : jsmin
2016-02-27 16:57:30 +01:00
jsmin : $( BUILDS )
2015-02-05 15:57:39 +01:00
2016-02-28 10:00:22 +01:00
.PHONY : dist
dist :: build
2016-02-26 18:28:18 +01:00
2015-09-25 21:39:47 +02:00
.PHONY : build
2017-02-16 12:56:40 +01:00
build :: stamp -bundler css
2016-02-28 09:25:08 +01:00
$( GRUNT) json
2016-02-27 16:57:30 +01:00
make jsmin
2014-08-04 22:37:35 +02:00
2014-04-18 17:39:45 +02:00
########################################################################
## Tests
2015-10-25 18:49:35 +01:00
.PHONY : jshint
2017-02-16 12:56:40 +01:00
jshint : stamp -npm
2015-10-25 18:49:35 +01:00
$( JSHINT) --config jshintrc $( CHECKSOURCES)
2017-01-26 15:49:02 +01:00
.PHONY : eslint
eslint : stamp -npm
$( ESLINT) src/
$( ESLINT) spec/
2016-05-23 21:21:42 +02:00
.PHONY : check
2017-02-16 12:56:40 +01:00
check : jshint eslint
2014-04-18 17:39:45 +02:00
$( PHANTOMJS) node_modules/phantom-jasmine/lib/run_jasmine_test.coffee tests.html
########################################################################
## Documentation
2015-09-25 21:39:47 +02:00
.PHONY : html
2013-04-26 21:01:39 +02:00
html :
2014-12-07 10:48:32 +01:00
rm -rf $( BUILDDIR) /html
2013-04-26 21:01:39 +02:00
$( SPHINXBUILD) -b html $( ALLSPHINXOPTS) $( BUILDDIR) /html
@echo
@echo " Build finished. The HTML pages are in $( BUILDDIR) /html. "
2016-02-26 18:28:18 +01:00
.PHONY : html
2016-02-26 17:33:16 +01:00
doc : html
2015-09-25 21:39:47 +02:00
.PHONY : epub
2013-04-26 21:01:39 +02:00
epub :
$( SPHINXBUILD) -b epub $( ALLSPHINXOPTS) $( BUILDDIR) /epub
@echo
@echo " Build finished. The epub file is in $( BUILDDIR) /epub. "
2015-09-25 21:39:47 +02:00
.PHONY : changes
2013-04-26 21:01:39 +02:00
changes :
$( SPHINXBUILD) -b changes $( ALLSPHINXOPTS) $( BUILDDIR) /changes
@echo
@echo " The overview file is in $( BUILDDIR) /changes. "
2015-09-25 21:39:47 +02:00
.PHONY : linkcheck
2013-04-26 21:01:39 +02:00
linkcheck :
$( SPHINXBUILD) -b linkcheck $( ALLSPHINXOPTS) $( BUILDDIR) /linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
" or in $( BUILDDIR) /linkcheck/output.txt. "