# vim: set softtabstop=2 shiftwidth=2: SHELL = bash markdowns = $(shell find doc -name '*.md' | grep -v 'index') README.md html_docdeps = html/dochead.html \ html/docfoot.html \ html/docfoot-script.html \ scripts/doc-build.sh \ package.json cli_mandocs = $(shell find doc/cli -name '*.md' \ |sed 's|.md|.1|g' \ |sed 's|doc/cli/|man/man1/|g' ) \ man/man1/npm-README.1 api_mandocs = $(shell find doc/api -name '*.md' \ |sed 's|.md|.3|g' \ |sed 's|doc/api/|man/man3/|g' ) files_mandocs = $(shell find doc/files -name '*.md' \ |sed 's|.md|.5|g' \ |sed 's|doc/files/|man/man5/|g' ) \ man/man5/npm-json.5 \ man/man5/npm-global.5 misc_mandocs = $(shell find doc/misc -name '*.md' \ |sed 's|.md|.7|g' \ |sed 's|doc/misc/|man/man7/|g' ) \ man/man7/npm-index.7 cli_htmldocs = $(shell find doc/cli -name '*.md' \ |sed 's|.md|.html|g' \ |sed 's|doc/cli/|html/doc/cli/|g' ) \ html/doc/README.html api_htmldocs = $(shell find doc/api -name '*.md' \ |sed 's|.md|.html|g' \ |sed 's|doc/api/|html/doc/api/|g' ) files_htmldocs = $(shell find doc/files -name '*.md' \ |sed 's|.md|.html|g' \ |sed 's|doc/files/|html/doc/files/|g' ) \ html/doc/files/npm-json.html \ html/doc/files/npm-global.html misc_htmldocs = $(shell find doc/misc -name '*.md' \ |sed 's|.md|.html|g' \ |sed 's|doc/misc/|html/doc/misc/|g' ) \ html/doc/index.html mandocs = $(api_mandocs) $(cli_mandocs) $(files_mandocs) $(misc_mandocs) htmldocs = $(api_htmldocs) $(cli_htmldocs) $(files_htmldocs) $(misc_htmldocs) all: doc latest: @echo "Installing latest published npm" @echo "Use 'make install' or 'make link' to install the code" @echo "in this folder that you're looking at right now." node cli.js install -g -f npm install: docclean all node cli.js install -g -f # backwards compat dev: install link: uninstall node cli.js link -f clean: ronnclean doc-clean uninstall rm -rf npmrc node cli.js cache clean uninstall: node cli.js rm npm -g -f doc: $(mandocs) $(htmldocs) ronnclean: rm -rf node_modules/ronn node_modules/.bin/ronn .building_ronn docclean: doc-clean doc-clean: rm -rf \ .building_ronn \ html/doc \ html/api \ man # use `npm install ronn` for this to work. man/man1/npm-README.1: README.md scripts/doc-build.sh package.json @[ -d man/man1 ] || mkdir -p man/man1 scripts/doc-build.sh $< $@ man/man1/%.1: doc/cli/%.md scripts/doc-build.sh package.json @[ -d man/man1 ] || mkdir -p man/man1 scripts/doc-build.sh $< $@ man/man3/%.3: doc/api/%.md scripts/doc-build.sh package.json @[ -d man/man3 ] || mkdir -p man/man3 scripts/doc-build.sh $< $@ man/man5/npm-json.5: man/man5/package.json.5 cp $< $@ man/man5/npm-global.5: man/man5/npm-folders.5 cp $< $@ man/man5/%.5: doc/files/%.md scripts/doc-build.sh package.json @[ -d man/man5 ] || mkdir -p man/man5 scripts/doc-build.sh $< $@ doc/misc/npm-index.md: scripts/index-build.js package.json node scripts/index-build.js > $@ html/doc/index.html: doc/misc/npm-index.md $(html_docdeps) @[ -d html/doc ] || mkdir -p html/doc scripts/doc-build.sh $< $@ man/man7/%.7: doc/misc/%.md scripts/doc-build.sh package.json @[ -d man/man7 ] || mkdir -p man/man7 scripts/doc-build.sh $< $@ html/doc/README.html: README.md $(html_docdeps) @[ -d html/doc ] || mkdir -p html/doc scripts/doc-build.sh $< $@ html/doc/cli/%.html: doc/cli/%.md $(html_docdeps) @[ -d html/doc/cli ] || mkdir -p html/doc/cli scripts/doc-build.sh $< $@ html/doc/api/%.html: doc/api/%.md $(html_docdeps) @[ -d html/doc/api ] || mkdir -p html/doc/api scripts/doc-build.sh $< $@ html/doc/files/npm-json.html: html/doc/files/package.json.html cp $< $@ html/doc/files/npm-global.html: html/doc/files/npm-folders.html cp $< $@ html/doc/files/%.html: doc/files/%.md $(html_docdeps) @[ -d html/doc/files ] || mkdir -p html/doc/files scripts/doc-build.sh $< $@ html/doc/misc/%.html: doc/misc/%.md $(html_docdeps) @[ -d html/doc/misc ] || mkdir -p html/doc/misc scripts/doc-build.sh $< $@ ronn: node_modules/.bin/ronn node_modules/.bin/ronn: node cli.js install ronn --no-global doc: man man: $(cli_docs) $(api_docs) test: doc node cli.js test publish: link doc @git push origin :v$(shell npm -v) 2>&1 || true @npm unpublish npm@$(shell npm -v) 2>&1 || true git clean -fd &&\ git push origin &&\ git push origin --tags &&\ npm publish &&\ npm tag npm@$(shell npm -v) $(shell npm -v | awk -F. '{print $$1 "." $$2}') &&\ make doc-publish &&\ make zip-publish docpublish: doc-publish doc-publish: doc # legacy urls for f in $$(find html/doc/{cli,files,misc}/ -name '*.html'); do \ j=$$(basename $$f | sed 's|^npm-||g'); \ if ! [ -f html/doc/$$j ] && [ $$j != README.html ] && [ $$j != index.html ]; then \ perl -pi -e 's/ href="\.\.\// href="/g' <$$f >html/doc/$$j; \ fi; \ done mkdir -p html/api for f in $$(find html/doc/api/ -name '*.html'); do \ j=$$(basename $$f | sed 's|^npm-||g'); \ perl -pi -e 's/ href="\.\.\// href="/g' <$$f >html/api/$$j; \ done rsync -vazu --stats --no-implied-dirs --delete \ html/doc/* \ node@npmjs.org:/home/node/npm-www/doc rsync -vazu --stats --no-implied-dirs --delete \ html/static/webfonts/ \ node@npmjs.org:/home/node/npm-www/static/webfonts rsync -vazu --stats --no-implied-dirs --delete \ html/static/style.css \ node@npmjs.org:/home/node/npm-www/static/ #cleanup rm -rf html/api for f in html/doc/*.html; do \ case $$f in \ html/doc/README.html) continue ;; \ html/doc/index.html) continue ;; \ *) rm $$f ;; \ esac; \ done zip-publish: release scp release/* node@nodejs.org:dist/npm/ release: @bash scripts/release.sh sandwich: @[ $$(whoami) = "root" ] && (echo "ok"; echo "ham" > sandwich) || (echo "make it yourself" && exit 13) .PHONY: all latest install dev link doc clean uninstall test man doc-publish doc-clean docclean docpublish release zip-publish