137 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			137 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
| default: watch
 | |
| 
 | |
| version := `sed -En 's/version[[:space:]]*=[[:space:]]*"([^"]+)"/v\1/p' Cargo.toml | head -1`
 | |
| 
 | |
| bt := '0'
 | |
| 
 | |
| export RUST_BACKTRACE := bt
 | |
| 
 | |
| log := 'warn'
 | |
| 
 | |
| export RUST_LOG := log
 | |
| 
 | |
| # watch filesystem for changes and rerun tests
 | |
| watch +ARGS='':
 | |
| 	cargo watch --clear --exec 'test {{ARGS}}'
 | |
| 
 | |
| # show stats about torrents at `PATH`
 | |
| stats PATH:
 | |
| 	cargo build --release
 | |
| 	time ./target/release/imdl --unstable torrent stats --input {{PATH}}
 | |
| 
 | |
| push:
 | |
| 	! git branch | grep '* master'
 | |
| 	git push github
 | |
| 
 | |
| # clean up feature branch BRANCH
 | |
| done BRANCH=`git rev-parse --abbrev-ref HEAD`:
 | |
| 	git push github {{BRANCH}}:master
 | |
| 	git rebase github/master master
 | |
| 	git branch -d {{BRANCH}}
 | |
| 
 | |
| test:
 | |
| 	cargo test --all
 | |
| 
 | |
| clippy:
 | |
| 	cargo clippy --all-targets --all-features
 | |
| 
 | |
| fmt:
 | |
| 	cargo +nightly fmt --all
 | |
| 
 | |
| lint:
 | |
| 	./bin/lint
 | |
| 
 | |
| preview-readme:
 | |
| 	grip -b README.md
 | |
| 
 | |
| # build and serve the book
 | |
| book:
 | |
| 	mdbook serve book --open --dest-dir ../www/book
 | |
| 
 | |
| dev-deps:
 | |
| 	brew install grip
 | |
| 	cargo install mdbook
 | |
| 	cargo install cargo-watch
 | |
| 	npm install --global asciicast2gif
 | |
| 	brew install imagemagick
 | |
| 	brew install gifsicle
 | |
| 
 | |
| # update generated documentation
 | |
| gen:
 | |
| 	cargo build
 | |
| 	cargo run --package gen -- --bin target/debug/imdl all
 | |
| 
 | |
| check-minimal-versions:
 | |
| 	./bin/check-minimal-versions
 | |
| 
 | |
| check: test clippy lint check-minimal-versions gen
 | |
| 	git diff --no-ext-diff --quiet --exit-code
 | |
| 	cargo +nightly fmt --all -- --check
 | |
| 
 | |
| draft: push
 | |
| 	hub pull-request -o --draft
 | |
| 
 | |
| pr: check push
 | |
| 	hub pull-request -o
 | |
| 
 | |
| merge BRANCH=`git rev-parse --abbrev-ref HEAD`:
 | |
| 	#!/usr/bin/env bash
 | |
| 	set -euxo pipefail
 | |
| 	while ! hub ci-status --verbose {{BRANCH}}; do
 | |
| 		sleep 5
 | |
| 	done
 | |
| 	just done {{BRANCH}}
 | |
| 
 | |
| publish-check: check
 | |
| 	cargo outdated --exit-code 1
 | |
| 	grep '^\[{{version}}\]' target/gen/CHANGELOG.md
 | |
| 
 | |
| publish BRANCH=`git rev-parse --abbrev-ref HEAD`: publish-check (merge BRANCH)
 | |
| 	#!/usr/bin/env bash
 | |
| 	set -euxo pipefail
 | |
| 	git tag -a {{version}} -m 'Release {{version}}'
 | |
| 	git push github {{version}}
 | |
| 	while ! hub ci-status --verbose {{BRANCH}}; do
 | |
| 		sleep 5
 | |
| 	done
 | |
| 	cargo publish
 | |
| 
 | |
| # record, upload, and render demo animation
 | |
| demo: demo-record demo-upload demo-render
 | |
| 
 | |
| demo-record:
 | |
| 	#!/usr/bin/env bash
 | |
| 	set -euxo pipefail
 | |
| 	cargo build --release --all
 | |
| 	rm -f tmp/9front.torrent
 | |
| 	asciinema rec \
 | |
| 		--title "Intermodal {{version}} Demo" \
 | |
| 		--command ./target/release/demo \
 | |
| 		--overwrite \
 | |
| 		tmp/demo.json
 | |
| 
 | |
| demo-upload:
 | |
| 	asciinema upload tmp/demo.json
 | |
| 
 | |
| demo-render:
 | |
| 	../asciicast2gif/asciicast2gif -S4 tmp/demo.json www/demo.gif
 | |
| 
 | |
| # print commit metadata types
 | |
| commit-types:
 | |
| 	cargo run --package gen -- --bin target/debug/imdl commit-types
 | |
| 
 | |
| # open site index
 | |
| www:
 | |
| 	open www/index.html
 | |
| 
 | |
| # retrieve large collection of torrents from the Internet Archive
 | |
| get-torrents:
 | |
| 	aria2c \
 | |
| 		-d dat \
 | |
| 		-x 10 \
 | |
| 		'https://ia802701.us.archive.org/21/items/2014_torrent_archive_organized/torrent_archive_organized.zip'
 | |
| 
 | |
| # download bittorrent.org repository
 | |
| get-beps:
 | |
| 	git clone git@github.com:bittorrent/bittorrent.org.git tmp/bittorrent.org
 |