diff --git a/.githooks/post-commit b/.githooks/post-commit new file mode 100755 index 00000000..2a8b183d --- /dev/null +++ b/.githooks/post-commit @@ -0,0 +1,20 @@ +#!/bin/bash +cd src/libos +output=$(cargo fmt --all -- --check 2>&1) +retval=$? + +if [[ $retval -eq 0 ]] +then + exit 0 +elif [[ $retval -eq 1 ]] +then + echo "Rust format suggestsions (generated by \`cd src/libos && cargo fmt --all -- --check\`):" + echo + echo "$output" + echo + echo "To get rid of the format warnings above, run \`cargo fmt\` before the next commit." + exit 1 +else + echo "Warning: \`cargo fmt\` is not available." + exit 1 +fi diff --git a/.githooks/pre-push b/.githooks/pre-push new file mode 100755 index 00000000..ba12969d --- /dev/null +++ b/.githooks/pre-push @@ -0,0 +1,38 @@ +#!/bin/bash + +# An example hook script to verify what is about to be pushed. Called by "git +# push" after it has checked the remote status, but before anything has been +# pushed. If this script exits with a non-zero status nothing will be pushed. +# +# This hook is called with the following parameters: +# +# $1 -- Name of the remote to which the push is being done +# $2 -- URL to which the push is being done +# +# If pushing without using a named remote those arguments will be equal. +# +# Information about the commits which are being pushed is supplied as lines to +# the standard input in the form: +# +# +# +# This sample shows how to prevent push of commits where the log message starts +# with "WIP" (work in progress). + +cd src/libos +output=$(cargo fmt --all -- --check 2>&1) +retval=$? + +# cargo fmt finds any format issues +if [[ $retval -eq 1 ]] +then + echo "Rust format suggestsions (generated by \`cd src/libos && cargo fmt --all -- --check\`):" + echo + echo "$output" + echo + echo "To get rid of the format warnings above, run \`cargo fmt\` before the next commit." + exit 1 +fi + +# If cargo fmt finds no format issues or carg fmt is not available on the # platform +exit 0 diff --git a/Makefile b/Makefile index 000d409a..686f35eb 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,12 @@ -.PHONY: all src test clean +.PHONY: all submodule githooks src test clean all: src -submodule: +githooks: + @find .git/hooks -type l -exec rm {} \; && find .githooks -type f -exec ln -sf ../../{} .git/hooks/ \; + @echo "Add Git hooks that check Rust code format issues before commits and pushes" + +submodule: githooks git submodule init git submodule update cd deps/rust-sgx-sdk && git apply ../rust-sgx-sdk.patch