1*cc02d7e2SAndroid Build Coastguard Worker#!/bin/bash 2*cc02d7e2SAndroid Build Coastguard Worker# Copyright 2016 gRPC authors. 3*cc02d7e2SAndroid Build Coastguard Worker# 4*cc02d7e2SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 5*cc02d7e2SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 6*cc02d7e2SAndroid Build Coastguard Worker# You may obtain a copy of the License at 7*cc02d7e2SAndroid Build Coastguard Worker# 8*cc02d7e2SAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 9*cc02d7e2SAndroid Build Coastguard Worker# 10*cc02d7e2SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 11*cc02d7e2SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 12*cc02d7e2SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*cc02d7e2SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 14*cc02d7e2SAndroid Build Coastguard Worker# limitations under the License. 15*cc02d7e2SAndroid Build Coastguard Worker 16*cc02d7e2SAndroid Build Coastguard Worker# change to root directory 17*cc02d7e2SAndroid Build Coastguard Workercd $(dirname $0)/../.. 18*cc02d7e2SAndroid Build Coastguard Worker 19*cc02d7e2SAndroid Build Coastguard Workerfunction find_without_newline() { 20*cc02d7e2SAndroid Build Coastguard Worker git ls-files | 21*cc02d7e2SAndroid Build Coastguard Worker sed -En -e '/^third_party/d' -e '/\.(c|cc|proto|rb|py|cs|sh)$/p' | 22*cc02d7e2SAndroid Build Coastguard Worker while IFS= read -r -d '' f; do 23*cc02d7e2SAndroid Build Coastguard Worker if [[ ! -z $f ]]; then 24*cc02d7e2SAndroid Build Coastguard Worker if [[ $(tail -c 1 "$f") != $NEWLINE ]]; then 25*cc02d7e2SAndroid Build Coastguard Worker echo "Error: file '$f' is missing a trailing newline character." 26*cc02d7e2SAndroid Build Coastguard Worker if $1; then # fix 27*cc02d7e2SAndroid Build Coastguard Worker sed -i -e '$a\' $f 28*cc02d7e2SAndroid Build Coastguard Worker echo 'Fixed!' 29*cc02d7e2SAndroid Build Coastguard Worker fi 30*cc02d7e2SAndroid Build Coastguard Worker fi 31*cc02d7e2SAndroid Build Coastguard Worker fi 32*cc02d7e2SAndroid Build Coastguard Worker done 33*cc02d7e2SAndroid Build Coastguard Worker} 34*cc02d7e2SAndroid Build Coastguard Worker 35*cc02d7e2SAndroid Build Coastguard Workerif [[ $# == 1 && $1 == '--fix' ]]; then 36*cc02d7e2SAndroid Build Coastguard Worker FIX=true 37*cc02d7e2SAndroid Build Coastguard Workerelse 38*cc02d7e2SAndroid Build Coastguard Worker FIX=false 39*cc02d7e2SAndroid Build Coastguard Workerfi 40*cc02d7e2SAndroid Build Coastguard Worker 41*cc02d7e2SAndroid Build Coastguard WorkerERRORS=$(find_without_newline $FIX) 42*cc02d7e2SAndroid Build Coastguard Workerif [[ "$ERRORS" != '' ]]; then 43*cc02d7e2SAndroid Build Coastguard Worker echo "$ERRORS" 44*cc02d7e2SAndroid Build Coastguard Worker if ! $FIX; then 45*cc02d7e2SAndroid Build Coastguard Worker exit 1 46*cc02d7e2SAndroid Build Coastguard Worker fi 47*cc02d7e2SAndroid Build Coastguard Workerfi 48