Skip to content

Commit b1a4026

Browse files
committed
Add githooks directory
Add a `githooks` directory and a `pre-commit` hook. Add a section to the readme instructing devs how to configure git to take advantage of the githooks.
1 parent 2635a0f commit b1a4026

File tree

2 files changed

+64
-2
lines changed

2 files changed

+64
-2
lines changed

README.md

+15-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
# Bech32 Rust
1+
Rust Bech32
2+
===========
3+
24
[![Docs.rs badge](https://docs.rs/bech32/badge.svg)](https://docs.rs/bech32/)
35
[![Continuous Integration](https://github.com/rust-bitcoin/rust-bech32/workflows/Continuous%20Integration/badge.svg)](https://github.com/rust-bitcoin/rust-bech32/actions?query=workflow%3A%22Continuous+Integration%22)
46

@@ -9,6 +11,17 @@ You can find some usage examples in the [documentation](https://docs.rs/bech32/)
911

1012
Bitcoin-specific address encoding is handled by the `bitcoin-bech32` crate.
1113

12-
# MSRV
14+
## MSRV
15+
1316
The minimum supported Rust version with the standard library is **1.41.1**.
1417

18+
## Githooks
19+
20+
To assist devs in catching errors _before_ running CI we provide some githooks. If you do not
21+
already have locally configured githooks you can use the ones in this repository by running, in the
22+
root directory of the repository:
23+
```
24+
git config --local core.hooksPath githooks/
25+
```
26+
27+
Alternatively add symlinks in your `.git/hooks` directory to any of the githooks we provide.

githooks/pre-commit

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#!/bin/sh
2+
#
3+
# Verify what is about to be committed. Called by "git commit" with no
4+
# arguments. The hook should exit with non-zero status after issuing an
5+
# appropriate message if it wants to stop the commit.
6+
7+
if git rev-parse --verify HEAD >/dev/null 2>&1
8+
then
9+
against=HEAD
10+
else
11+
# Initial commit: diff against an empty tree object
12+
against=$(git hash-object -t tree /dev/null)
13+
fi
14+
15+
# If you want to allow non-ASCII filenames set this variable to true.
16+
allownonascii=$(git config --bool hooks.allownonascii)
17+
18+
# Redirect output to stderr.
19+
exec 1>&2
20+
21+
# Cross platform projects tend to avoid non-ASCII filenames; prevent
22+
# them from being added to the repository. We exploit the fact that the
23+
# printable range starts at the space character and ends with tilde.
24+
if [ "$allownonascii" != "true" ] &&
25+
# Note that the use of brackets around a tr range is ok here, (it's
26+
# even required, for portability to Solaris 10's /usr/bin/tr), since
27+
# the square bracket bytes happen to fall in the designated range.
28+
test $(git diff --cached --name-only --diff-filter=A -z $against |
29+
LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
30+
then
31+
cat <<\EOF
32+
Error: Attempt to add a non-ASCII file name.
33+
34+
This can cause problems if you want to work with people on other platforms.
35+
36+
To be portable it is advisable to rename the file.
37+
38+
If you know what you are doing you can disable this check using:
39+
40+
git config hooks.allownonascii true
41+
EOF
42+
exit 1
43+
fi
44+
45+
# If there are whitespace errors, print the offending file names and fail.
46+
git diff-index --check --cached $against -- || exit 1
47+
48+
# Check that code lints cleanly.
49+
cargo clippy --all-features -- -D warnings || exit 1

0 commit comments

Comments
 (0)