waku-org/go-waku

View on GitHub
hooks/pre-commit

Summary

Maintainability
Test Coverage
#!/bin/bash

echo "Running pre commit hook"

## this will retrieve all of the .go files that have been 
## changed since the last commit
STAGED_GO_FILES=$(git diff --cached --name-only -- '*.go')

## we can check to see if this is empty
if [[ $STAGED_GO_FILES == "" ]]; then
    echo "No Go Files to Update"
else
    for file in $STAGED_GO_FILES; do
        ## format our file
        go fmt $file
        ## add any potential changes from our formatting to the 
        ## commit
        git add $file
    done
fi

# Run go mod tidy in all folders that have go.mod
go-modules() {
       find . \( -name '[._].*' \) -prune -o -name go.mod -print | sed 's:/go.mod$::'
}

fail=false

for m in $(go-modules);
do
    cd $m > /dev/null
    if go build . 2>&1 | grep -q 'updates to go.mod needed'; then
        go mod tidy -v
        echo "updates to go.mod needed in $m"
        fail=true
    fi
    cd - > /dev/null
done

if [ $fail = "true" ]; then
    exit 1
fi

git diff --exit-code go.* &> /dev/null

if [ $? -eq 1 ]; then
    echo "go.mod or go.sum differs, please re-add it to your commit"

    exit 1
fi