1 # vim: set softtabstop=2 shiftwidth=2:
4 PUBLISHTAG = $(shell node scripts/publish-tag.js)
5 BRANCH = $(shell git rev-parse --abbrev-ref HEAD)
7 markdowns = $(shell find doc -name '*.md' | grep -v 'index') README.md
9 html_docdeps = html/dochead.html \
11 scripts/doc-build.sh \
14 cli_mandocs = $(shell find doc/cli -name '*.md' \
16 |sed 's|doc/cli/|man/man1/|g' ) \
19 api_mandocs = $(shell find doc/api -name '*.md' \
21 |sed 's|doc/api/|man/man3/|g' )
23 files_mandocs = $(shell find doc/files -name '*.md' \
25 |sed 's|doc/files/|man/man5/|g' ) \
29 misc_mandocs = $(shell find doc/misc -name '*.md' \
31 |sed 's|doc/misc/|man/man7/|g' ) \
34 cli_htmldocs = $(shell find doc/cli -name '*.md' \
35 |sed 's|.md|.html|g' \
36 |sed 's|doc/cli/|html/doc/cli/|g' ) \
39 api_htmldocs = $(shell find doc/api -name '*.md' \
40 |sed 's|.md|.html|g' \
41 |sed 's|doc/api/|html/doc/api/|g' )
43 files_htmldocs = $(shell find doc/files -name '*.md' \
44 |sed 's|.md|.html|g' \
45 |sed 's|doc/files/|html/doc/files/|g' ) \
46 html/doc/files/npm-json.html \
47 html/doc/files/npm-global.html
49 misc_htmldocs = $(shell find doc/misc -name '*.md' \
50 |sed 's|.md|.html|g' \
51 |sed 's|doc/misc/|html/doc/misc/|g' ) \
54 mandocs = $(api_mandocs) $(cli_mandocs) $(files_mandocs) $(misc_mandocs)
56 htmldocs = $(api_htmldocs) $(cli_htmldocs) $(files_htmldocs) $(misc_htmldocs)
61 @echo "Installing latest published npm"
62 @echo "Use 'make install' or 'make link' to install the code"
63 @echo "in this folder that you're looking at right now."
64 node cli.js install -g -f npm ${NPMOPTS}
67 node cli.js install -g -f ${NPMOPTS}
75 clean: markedclean marked-manclean doc-clean uninstall
77 node cli.js cache clean
80 node cli.js rm npm -g -f
82 doc: $(mandocs) $(htmldocs)
85 rm -rf node_modules/marked node_modules/.bin/marked .building_marked
88 rm -rf node_modules/marked-man node_modules/.bin/marked-man .building_marked-man
94 .building_marked-man \
99 # use `npm install marked-man` for this to work.
100 man/man1/npm-README.1: README.md scripts/doc-build.sh package.json
101 @[ -d man/man1 ] || mkdir -p man/man1
102 scripts/doc-build.sh $< $@
104 man/man1/%.1: doc/cli/%.md scripts/doc-build.sh package.json
105 @[ -d man/man1 ] || mkdir -p man/man1
106 scripts/doc-build.sh $< $@
108 man/man3/%.3: doc/api/%.md scripts/doc-build.sh package.json
109 @[ -d man/man3 ] || mkdir -p man/man3
110 scripts/doc-build.sh $< $@
112 man/man5/npm-json.5: man/man5/package.json.5
115 man/man5/npm-global.5: man/man5/npm-folders.5
118 man/man5/%.5: doc/files/%.md scripts/doc-build.sh package.json
119 @[ -d man/man5 ] || mkdir -p man/man5
120 scripts/doc-build.sh $< $@
122 doc/misc/npm-index.md: scripts/index-build.js package.json
123 node scripts/index-build.js > $@
125 html/doc/index.html: doc/misc/npm-index.md $(html_docdeps)
126 @[ -d html/doc ] || mkdir -p html/doc
127 scripts/doc-build.sh $< $@
129 man/man7/%.7: doc/misc/%.md scripts/doc-build.sh package.json
130 @[ -d man/man7 ] || mkdir -p man/man7
131 scripts/doc-build.sh $< $@
133 html/doc/README.html: README.md $(html_docdeps)
134 @[ -d html/doc ] || mkdir -p html/doc
135 scripts/doc-build.sh $< $@
137 html/doc/cli/%.html: doc/cli/%.md $(html_docdeps)
138 @[ -d html/doc/cli ] || mkdir -p html/doc/cli
139 scripts/doc-build.sh $< $@
141 html/doc/api/%.html: doc/api/%.md $(html_docdeps)
142 @[ -d html/doc/api ] || mkdir -p html/doc/api
143 scripts/doc-build.sh $< $@
145 html/doc/files/npm-json.html: html/doc/files/package.json.html
147 html/doc/files/npm-global.html: html/doc/files/npm-folders.html
150 html/doc/files/%.html: doc/files/%.md $(html_docdeps)
151 @[ -d html/doc/files ] || mkdir -p html/doc/files
152 scripts/doc-build.sh $< $@
154 html/doc/misc/%.html: doc/misc/%.md $(html_docdeps)
155 @[ -d html/doc/misc ] || mkdir -p html/doc/misc
156 scripts/doc-build.sh $< $@
159 marked: node_modules/.bin/marked
161 node_modules/.bin/marked:
162 node cli.js install marked --no-global
164 marked-man: node_modules/.bin/marked-man
166 node_modules/.bin/marked-man:
167 node cli.js install marked-man --no-global
171 man: $(cli_docs) $(api_docs)
177 npm tag npm@$(PUBLISHTAG) latest
179 publish: link doc-clean doc
180 @git push origin :v$(shell npm -v) 2>&1 || true
182 git push origin $(BRANCH) &&\
183 git push origin --tags &&\
184 npm publish --tag=$(PUBLISHTAG)
187 @bash scripts/release.sh
190 @[ $$(whoami) = "root" ] && (echo "ok"; echo "ham" > sandwich) || (echo "make it yourself" && exit 13)
192 .PHONY: all latest install dev link doc clean uninstall test man doc-clean docclean release