Skip to content

Commit

Permalink
chores(ci): Add setup script and git push hooks (#874)
Browse files Browse the repository at this point in the history
  • Loading branch information
hoangdv2429 authored May 20, 2024
1 parent 2b5eb07 commit 4c4e3cd
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 1 deletion.
18 changes: 17 additions & 1 deletion contrib/githooks/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
# Git hooks

Using <https://pre-commit.com/>
We have pre-commit and pre-push.

Pre-commit using <https://pre-commit.com/>

## Installation

### Pre-commit hooks

Using pip:

`pip install pre-commit`
Expand All @@ -12,8 +16,20 @@ Or Using homebrew:

`brew install pre-commit`

### Pre-push hooks

Install golangci-lint:

`go install github.com/golangci/golangci-lint/cmd/golangci-lint`

Install markdownlint-cli:

`npm install -g markdownlint-cli`

## Installation of githook scripts

From root directory:

`pre-commit install -c ./contrib/githooks/pre-commit-config.yaml`

`./scripts/setup-git-hooks.sh`
37 changes: 37 additions & 0 deletions contrib/githooks/pre-push
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#!/bin/sh
# pre-push hook script

# Ensure golangci-lint is installed
if ! command -v golangci-lint >/dev/null 2>&1; then
echo "golangci-lint is not installed. Please install it with 'go install github.com/golangci/golangci-lint/cmd/[email protected]'"
exit 1
fi

# Ensure markdownlint is installed
if ! command -v markdownlint >/dev/null 2>&1; then
echo "markdownlint-cli is not installed. Please install it with 'npm install -g markdownlint-cli'"
exit 1
fi

# Run golangci-lint
golangci-lint run

# Capture the exit status of golangci-lint
RESULT=$?
if [ $RESULT -ne 0 ]; then
echo "golangci-lint checks failed. Aborting push."
exit 1
fi

# Run markdownlint
markdownlint . --config .markdownlint.yaml

# Capture the exit status of markdownlint
RESULT=$?
if [ $RESULT -ne 0 ]; then
echo "markdownlint checks failed. Aborting push."
exit 1
fi

# If all tests pass, allow the push to proceed
exit 0
9 changes: 9 additions & 0 deletions scripts/setup-git-hooks.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/bin/sh

# Copy pre-push hook to .git/hooks/
cp ./contrib/githooks/pre-push ./.git/hooks/pre-push

# Make the pre-push hook executable
chmod +x .git/hooks/pre-push

echo "Git push hooks installed successfully."

0 comments on commit 4c4e3cd

Please sign in to comment.