ac7634000e
Input may contain tabs and other characters whose byte widths do not correspond to their display widths. This causes error context underlining to be off when lines contain those characters Fixed by properly accounting for the display width of characters, as well as replacing tabs with spaces when printing error messages.
99 lines
1.7 KiB
Makefile
99 lines
1.7 KiB
Makefile
test: build
|
|
cargo test --lib
|
|
|
|
# only run tests matching PATTERN
|
|
filter PATTERN: build
|
|
cargo test --lib {{PATTERN}}
|
|
|
|
test-quine:
|
|
cargo run -- quine clean
|
|
|
|
backtrace:
|
|
RUST_BACKTRACE=1 cargo test --lib
|
|
|
|
build:
|
|
cargo build
|
|
|
|
check:
|
|
cargo check
|
|
|
|
version = `sed -En 's/version = "([^"]+)"/\1/p' Cargo.toml`
|
|
|
|
publish: clippy build
|
|
git branch | grep '* master'
|
|
git diff --no-ext-diff --quiet --exit-code
|
|
git co -b v{{version}}
|
|
git push github
|
|
cargo publish
|
|
git tag -a "v{{version}}" -m "v{{version}}"
|
|
git push github --tags
|
|
git push origin --tags
|
|
@echo 'Remember to merge the v{{version}} branch on GitHub!'
|
|
|
|
clippy:
|
|
rustup run nightly cargo clippy
|
|
|
|
install-clippy:
|
|
rustup run nightly cargo install clippy
|
|
|
|
install-nightly:
|
|
rustup install nightly
|
|
|
|
sloc:
|
|
@cat src/*.rs | wc -l
|
|
|
|
long:
|
|
! grep --color -n '.\{100\}' src/*.rs
|
|
|
|
nop:
|
|
|
|
fail:
|
|
exit 1
|
|
|
|
backtick-fail:
|
|
echo {{`exit 1`}}
|
|
|
|
# make a quine, compile it, and verify it
|
|
quine: create
|
|
cc tmp/gen0.c -o tmp/gen0
|
|
./tmp/gen0 > tmp/gen1.c
|
|
cc tmp/gen1.c -o tmp/gen1
|
|
./tmp/gen1 > tmp/gen2.c
|
|
diff tmp/gen1.c tmp/gen2.c
|
|
@echo 'It was a quine!'
|
|
|
|
quine-text = "int printf(const char*, ...); int main() { char *s = \"int printf(const char*, ...); int main() { char *s = %c%s%c; printf(s, 34, s, 34); return 0; }\"; printf(s, 34, s, 34); return 0; }"
|
|
|
|
# create our quine
|
|
create:
|
|
mkdir -p tmp
|
|
echo '{{quine-text}}' > tmp/gen0.c
|
|
|
|
# clean up
|
|
clean:
|
|
rm -r tmp
|
|
|
|
# run all polyglot recipes
|
|
polyglot: python js perl sh ruby
|
|
|
|
python:
|
|
#!/usr/bin/env python3
|
|
print('Hello from python!')
|
|
|
|
js:
|
|
#!/usr/bin/env node
|
|
console.log('Greetings from JavaScript!')
|
|
|
|
perl:
|
|
#!/usr/bin/env perl
|
|
print "Larry Wall says Hi!\n";
|
|
|
|
sh:
|
|
#!/usr/bin/env sh
|
|
hello='Yo'
|
|
echo "$hello from a shell script!"
|
|
|
|
ruby:
|
|
#!/usr/bin/env ruby
|
|
puts "Hello from ruby!"
|