From 5c5b0ea4296f1bd912bdaa2bd23a181add5660aa Mon Sep 17 00:00:00 2001 From: "Tate, Hongliang Tian" Date: Wed, 28 Aug 2019 06:15:02 +0000 Subject: [PATCH] Add Git hooks that check Rust code format issues --- .githooks/post-commit | 20 ++++++++++++++++++++ .githooks/pre-push | 38 ++++++++++++++++++++++++++++++++++++++ Makefile | 8 ++++++-- 3 files changed, 64 insertions(+), 2 deletions(-) create mode 100755 .githooks/post-commit create mode 100755 .githooks/pre-push 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