Skip to content

Commit

Permalink
chore: cleanup makefile
Browse files Browse the repository at this point in the history
- fix prune target
- fix ci build
- run rebuild after install

PR-URL: #2068
Credit: @nlf
Close: #2068
Reviewed-by: @ruyadorno
  • Loading branch information
nlf authored and ruyadorno committed Oct 30, 2020
1 parent 3b02fcf commit d4119b0
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 75 deletions.
4 changes: 3 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,9 @@ jobs:

# Run the installer script
- name: Install dependencies
run: node . install
run: |
node . install --ignore-scripts --no-audit
node . rebuild
# Run the tests, but not if we're just gonna do coveralls later anyway
- name: Run Tap tests
Expand Down
107 changes: 33 additions & 74 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ SHELL = bash
PUBLISHTAG = $(shell node scripts/publish-tag.js)
BRANCH = $(shell git rev-parse --abbrev-ref HEAD)

markdowns = $(shell find docs -name '*.md' | grep -v 'index') README.md
markdowns = $(shell find docs -name '*.md' | grep -v 'index')

# these docs have the @VERSION@ tag in them, so they have to be rebuilt
# whenever the package.json is touched, in case the version changed.
Expand All @@ -14,8 +14,7 @@ version_mandocs = $(shell grep -rl '@VERSION@' docs/content \

cli_mandocs = $(shell find docs/content/commands -name '*.md' \
|sed 's|.md|.1|g' \
|sed 's|docs/content/commands/|man/man1/|g' ) \
man/man1/npm-README.1
|sed 's|docs/content/commands/|man/man1/|g' )

files_mandocs = $(shell find docs/content/configuring-npm -name '*.md' \
|sed 's|.md|.5|g' \
Expand All @@ -29,63 +28,29 @@ mandocs = $(cli_mandocs) $(files_mandocs) $(misc_mandocs)

all: docs

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 bin/npm-cli.js install -g -f npm ${NPMOPTS}

install: all
node bin/npm-cli.js install -g -f ${NPMOPTS} $(shell node bin/npm-cli.js pack | tail -1)

# backwards compat
dev: install

link: uninstall
node bin/npm-cli.js link -f

clean: markedclean marked-manclean docs-clean
rm -rf npmrc
node bin/npm-cli.js cache clean --force

uninstall:
node bin/npm-cli.js rm npm -g -f
docs: mandocs htmldocs

mandocs: $(mandocs)
mandocs: dev-deps $(mandocs)

$(version_mandocs): package.json

htmldocs:
htmldocs: dev-deps
node bin/npm-cli.js rebuild
cd docs && node dockhand.js >&2

docs: mandocs htmldocs

markedclean:
rm -rf node_modules/marked node_modules/.bin/marked .building_marked

marked-manclean:
rm -rf node_modules/marked-man node_modules/.bin/marked-man .building_marked-man
clean: docs-clean gitclean

docsclean: docs-clean

docs-clean:
rm -rf \
.building_marked \
.building_marked-man \
man \
docs/node_modules \
docs/output \
docs/.cache

## build-time tools for the documentation
build-doc-tools := node_modules/.bin/marked \
node_modules/.bin/marked-man

# use `npm install marked-man` for this to work.
man/man1/npm-README.1: README.md scripts/docs-build.js $(build-doc-tools)
@[ -d man/man1 ] || mkdir -p man/man1
node scripts/docs-build.js $< $@
rm -rf man

man/man1/%.1: docs/content/commands/%.md scripts/docs-build.js $(build-doc-tools)
## build-time dependencies for the documentation
dev-deps:
node bin/npm-cli.js install --only=dev --no-audit --ignore-scripts

## targets for man files, these are encouraged to be only built by running `make docs` or `make mandocs`
man/man1/%.1: docs/content/commands/%.md scripts/docs-build.js
@[ -d man/man1 ] || mkdir -p man/man1
node scripts/docs-build.js $< $@

Expand All @@ -95,47 +60,41 @@ man/man5/npm-json.5: man/man5/package.json.5
man/man5/npm-global.5: man/man5/folders.5
cp $< $@

man/man5/%.5: docs/content/configuring-npm/%.md scripts/docs-build.js $(build-doc-tools)
man/man5/%.5: docs/content/configuring-npm/%.md scripts/docs-build.js
@[ -d man/man5 ] || mkdir -p man/man5
node scripts/docs-build.js $< $@

man/man7/%.7: docs/content/using-npm/%.md scripts/docs-build.js $(build-doc-tools)
man/man7/%.7: docs/content/using-npm/%.md scripts/docs-build.js
@[ -d man/man7 ] || mkdir -p man/man7
node scripts/docs-build.js $< $@

marked: node_modules/.bin/marked

node_modules/.bin/marked:
node bin/npm-cli.js install marked --no-global --no-timing --no-save

marked-man: node_modules/.bin/marked-man

node_modules/.bin/marked-man:
node bin/npm-cli.js install marked-man --no-global --no-timing --no-save

test: docs
test: dev-deps
node bin/npm-cli.js test

tag:
node bin/npm-cli.js tag npm@$(PUBLISHTAG) latest

ls-ok:
node . ls >/dev/null
node . ls --production >/dev/null

gitclean:
git clean -fd

publish: gitclean ls-ok link docs-clean docs
uninstall:
node bin/npm-cli.js rm -g -f npm

link: uninstall
node bin/npm-cli.js link -f --ignore-scripts

prune:
node bin/npm-cli.js prune --production --no-save --no-audit
@[[ "$(shell git status -s)" != "" ]] && echo "ERR: found unpruned files" && exit 1 || echo "git status is clean"


publish: gitclean ls-ok link test docs-clean docs prune
@git push origin :v$(shell node bin/npm-cli.js --no-timing -v) 2>&1 || true
git push origin $(BRANCH) &&\
git push origin --tags &&\
node bin/npm-cli.js publish --tag=$(PUBLISHTAG)

release: gitclean ls-ok markedclean marked-manclean docs-clean docs
node bin/npm-cli.js prune --production --no-save
release: gitclean ls-ok docs-clean docs prune
@bash scripts/release.sh

sandwich:
@[ $$(whoami) = "root" ] && (echo "ok"; echo "ham" > sandwich) || (echo "make it yourself" && exit 13)

.PHONY: all latest install dev link docs clean uninstall test man docs-clean docsclean release ls-ok realclean
.PHONY: all latest install dev link docs clean uninstall test man docs-clean docsclean release ls-ok dev-deps prune

0 comments on commit d4119b0

Please sign in to comment.