Skip to content

Commit 28deec8

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 fcac7fe commit 28deec8

File tree

2 files changed

+63
-1
lines changed

2 files changed

+63
-1
lines changed

README.md

+14-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
# Bech32 Rust
1+
Rust Bech32
2+
===========
23

34
[![Docs.rs badge](https://docs.rs/bech32/badge.svg)](https://docs.rs/bech32/)
45
[![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)
@@ -14,3 +15,15 @@ Bitcoin-specific address encoding is handled by the `bitcoin-bech32` crate.
1415
## MSRV
1516

1617
This library should always compile with any combination of features on **Rust 1.48.0**.
18+
19+
20+
## Githooks
21+
22+
To assist devs in catching errors _before_ running CI we provide some githooks. If you do not
23+
already have locally configured githooks you can use the ones in this repository by running, in the
24+
root directory of the repository:
25+
```
26+
git config --local core.hooksPath githooks/
27+
```
28+
29+
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)