mirror of
https://github.com/OMGeeky/tarpc.git
synced 2025-12-26 17:02:32 +01:00
1. Renames
Some of the items in this module were renamed to be less generic:
- Handler => Incoming
- ClientHandler => Requests
- ResponseHandler => InFlightRequest
- Channel::{respond_with => requests}
In the case of Handler: handler of *what*? Now it's a bit clearer that
this is a stream of Channels (aka *incoming* connections).
Similarly, ClientHandler was a stream of requests over a single
connection. Hopefully Requests better reflects that.
ResponseHandler was renamed InFlightRequest because it no longer
contains the serving function. Instead, it is just the request, plus
the response channel and an abort hook. As a result of this,
Channel::respond_with underwent a big change: it used to take the
serving function and return a ClientHandler; now it has been renamed
Channel::requests and does not take any args.
2. Execute methods
All methods thats actually result in responses being generated
have been consolidated into methods named `execute`:
- InFlightRequest::execute returns a future that completes when a
response has been generated and sent to the server Channel.
- Requests::execute automatically spawns response handlers for all
requests over a single channel.
- Channel::execute is a convenience for `channel.requests().execute()`.
- Incoming::execute automatically spawns response handlers for all
requests over all channels.
3. Removal of Server.
server::Server was removed, as it provided no value over the Incoming/Channel
abstractions. Additionally, server::new was removed, since it just
returned a Server.
114 lines
2.8 KiB
Bash
Executable File
114 lines
2.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Copyright 2016 Google Inc. All Rights Reserved.
|
|
#
|
|
# Licensed under the MIT License, <LICENSE or http://opensource.org/licenses/MIT>.
|
|
# This file may not be copied, modified, or distributed except according to those terms.
|
|
|
|
#
|
|
# Pre-commit hook for the tarpc repository. To use this hook, copy it to .git/hooks in your
|
|
# repository root.
|
|
#
|
|
# This precommit checks the following:
|
|
# 1. All filenames are ascii
|
|
# 2. There is no bad whitespace
|
|
# 3. rustfmt is installed
|
|
# 4. rustfmt is a noop on files that are in the index
|
|
#
|
|
# Options:
|
|
#
|
|
# - TARPC_SKIP_RUSTFMT, default = 0
|
|
#
|
|
# Set this to 1 to skip running rustfmt
|
|
#
|
|
# Note that these options are most useful for testing the hooks themselves. Use git commit
|
|
# --no-verify to skip the pre-commit hook altogether.
|
|
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[0;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
PREFIX="${GREEN}[PRECOMMIT]${NC}"
|
|
FAILURE="${RED}FAILED${NC}"
|
|
WARNING="${RED}[WARNING]${NC}"
|
|
SKIPPED="${YELLOW}SKIPPED${NC}"
|
|
SUCCESS="${GREEN}ok${NC}"
|
|
|
|
if git rev-parse --verify HEAD &>/dev/null
|
|
then
|
|
against=HEAD
|
|
else
|
|
# Initial commit: diff against an empty tree object
|
|
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
|
|
fi
|
|
|
|
FAILED=0
|
|
|
|
printf "${PREFIX} Checking that all filenames are ascii ... "
|
|
# Note that the use of brackets around a tr range is ok here, (it's
|
|
# even required, for portability to Solaris 10's /usr/bin/tr), since
|
|
# the square bracket bytes happen to fall in the designated range.
|
|
if test $(git diff --cached --name-only --diff-filter=A -z $against | LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
|
|
then
|
|
FAILED=1
|
|
printf "${FAILURE}\n"
|
|
else
|
|
printf "${SUCCESS}\n"
|
|
fi
|
|
|
|
printf "${PREFIX} Checking for bad whitespace ... "
|
|
git diff-index --check --cached $against -- &>/dev/null
|
|
if [ "$?" != 0 ]; then
|
|
FAILED=1
|
|
printf "${FAILURE}\n"
|
|
else
|
|
printf "${SUCCESS}\n"
|
|
fi
|
|
|
|
printf "${PREFIX} Checking for rustfmt ... "
|
|
command -v cargo fmt &>/dev/null
|
|
if [ $? == 0 ]; then
|
|
printf "${SUCCESS}\n"
|
|
else
|
|
printf "${FAILURE}\n"
|
|
exit 1
|
|
fi
|
|
|
|
printf "${PREFIX} Checking for shasum ... "
|
|
command -v shasum &>/dev/null
|
|
if [ $? == 0 ]; then
|
|
printf "${SUCCESS}\n"
|
|
else
|
|
printf "${FAILURE}\n"
|
|
exit 1
|
|
fi
|
|
|
|
# Just check that running rustfmt doesn't do anything to the file. I do this instead of
|
|
# modifying the file because I don't want to mess with the developer's index, which may
|
|
# not only contain discrete files.
|
|
printf "${PREFIX} Checking formatting ... "
|
|
FMTRESULT=0
|
|
diff=""
|
|
for file in $(git diff --name-only --cached);
|
|
do
|
|
if [ ${file: -3} == ".rs" ]; then
|
|
diff="$diff$(cargo fmt -- --check $file)"
|
|
fi
|
|
done
|
|
if grep --quiet "^[-+]" <<< "$diff"; then
|
|
FMTRESULT=1
|
|
fi
|
|
|
|
if [ "${TARPC_SKIP_RUSTFMT}" == 1 ]; then
|
|
printf "${SKIPPED}\n"$?
|
|
elif [ ${FMTRESULT} != 0 ]; then
|
|
FAILED=1
|
|
printf "${FAILURE}\n"
|
|
echo "$diff" | sed 's/Using rustfmt config file.*$/d/'
|
|
else
|
|
printf "${SUCCESS}\n"
|
|
fi
|
|
|
|
exit ${FAILED}
|