mirror of
https://github.com/goharbor/harbor.git
synced 2024-11-05 18:20:37 +01:00
commit
08d30777ad
13
tools/copyright/copyright
Normal file
13
tools/copyright/copyright
Normal file
@ -0,0 +1,13 @@
|
||||
// Copyright (c) 2017 VMware, Inc. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
187
tools/copyright/header-check.sh
Executable file
187
tools/copyright/header-check.sh
Executable file
@ -0,0 +1,187 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2016-2017 VMware, Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# Simple script that will check files of type .go, .sh, .bash or Makefile
|
||||
# for the copyright header.
|
||||
#
|
||||
# This will be called by the CI system (with no args) to perform checking and
|
||||
# fail the job if headers are not correctly set. It can also be called with the
|
||||
# 'fix' argument to automatically add headers to the missing files.
|
||||
#
|
||||
# Check if headers are fine:
|
||||
# $ ./scripts/header-check.sh
|
||||
# Check and fix headers:
|
||||
# All changes must be committed for fix to work
|
||||
# $ ./scripts/header-check.sh fix
|
||||
|
||||
set -e -o pipefail
|
||||
|
||||
# These header variables MUST match the first two lines of the
|
||||
# VMware-copyright file in the scripts directory.
|
||||
#
|
||||
# These will be evaluated as a regex against the target file
|
||||
HEADER_OLD[1]="^\/\*$"
|
||||
HEADER_OLD[2]="^\s*Copyright \(c\) [0-9]{4} VMware, Inc\. All Rights Reserved\.$"
|
||||
|
||||
HEADER_NEW[1]="^\/\/ Copyright \(c\) [0-9]{4} VMware, Inc\. All Rights Reserved\.$"
|
||||
HEADER_NEW[2]="^\/\/$"
|
||||
|
||||
# Initialize vars
|
||||
ERR=false
|
||||
FAIL=false
|
||||
OLD_MATCHED=false
|
||||
|
||||
all-files() {
|
||||
git ls-files |\
|
||||
# Check .go files, Makefile, sh files, bash files, and robot files
|
||||
# grep -e "\.go$" -e "\.ts$" -e "\.css$" -e "Makefile$" -e "\.sh$" -e "\.bash$" -e "\.robot$" |\
|
||||
grep -e "\.sh$" |\
|
||||
# Ignore vendor/
|
||||
grep -v vendor |\
|
||||
# Ignore api test
|
||||
grep -v apitests
|
||||
# / |\
|
||||
# # Ignore files marked as deleted in git
|
||||
# grep -v "$(git status -s | grep -e "^\sD" | cut -d' ' -f3)"
|
||||
}
|
||||
|
||||
for file in $(all-files); do
|
||||
ext=${file##*.}
|
||||
if [[ $ext == "go" ]]; then
|
||||
echo -n "Header check: $file... "
|
||||
# get the file extension / type
|
||||
OLD_MATCHED=false
|
||||
|
||||
# match the old style header
|
||||
for count in $(seq 1 ${#HEADER_OLD[@]}); do
|
||||
text=${HEADER_OLD[$count]}
|
||||
if [[ "$increment" = true ]]; then
|
||||
line=$((count + 1))
|
||||
else
|
||||
line=$count
|
||||
fi
|
||||
# do we have a header match?
|
||||
if [[ $(sed ${line}q\;d ${file}) =~ ${text} ]]; then
|
||||
OLD_MATCHED=true
|
||||
fi
|
||||
done
|
||||
|
||||
# add header if there isn't.
|
||||
if [ $OLD_MATCHED == true ]; then
|
||||
# is there is a fix argument and are all changes committed
|
||||
if [ "$(uname -s)" = "Darwin" ]; then
|
||||
permissions=$(stat -f "%OLp" ${file})
|
||||
else
|
||||
permissions=$(stat --format '%a' ${file})
|
||||
fi
|
||||
|
||||
# make it writable
|
||||
chmod 755 ${file}
|
||||
|
||||
# remove the old header.
|
||||
tail -n +15 ${file} > ${file}.new
|
||||
|
||||
mv ${file}.new ${file}
|
||||
|
||||
# make permissions the same
|
||||
chmod $permissions ${file}
|
||||
echo "$(tput -T xterm setaf 3)REMOVING OLD HEADER $(tput -T xterm sgr0)"
|
||||
else
|
||||
echo "$(tput -T xterm setaf 3)NO OLD HEADER $(tput -T xterm sgr0)"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
sleep 2
|
||||
|
||||
for file in $(all-files); do
|
||||
echo -n "Header check: $file... "
|
||||
# get the file extension / type
|
||||
ext=${file##*.}
|
||||
|
||||
# increment line count in certain cases
|
||||
increment=false
|
||||
|
||||
# should we be incrementing the line count
|
||||
if [[ $ext == "sh" ]]; then
|
||||
increment=true
|
||||
fi
|
||||
|
||||
# match the new style header
|
||||
for count in $(seq 1 ${#HEADER_NEW[@]}); do
|
||||
text=${HEADER_NEW[$count]}
|
||||
|
||||
if [[ "$increment" = true ]]; then
|
||||
line=$((count + 1))
|
||||
else
|
||||
line=$count
|
||||
fi
|
||||
# do we have a header match?
|
||||
if [[ ! $(sed ${line}q\;d ${file}) =~ ${text} ]]; then
|
||||
ERR=true
|
||||
fi
|
||||
done
|
||||
|
||||
# add header if there isn't.
|
||||
if [ $ERR == true ]; then
|
||||
# is there is a fix argument and are all changes committed
|
||||
if [[ $# -gt 0 && $1 =~ [[:upper:]fix] ]]; then
|
||||
if [ "$(uname -s)" = "Darwin" ]; then
|
||||
permissions=$(stat -f "%OLp" ${file})
|
||||
else
|
||||
permissions=$(stat --format '%a' ${file})
|
||||
fi
|
||||
|
||||
# make it writable
|
||||
chmod 755 ${file}
|
||||
|
||||
# based on file type fix the copyright
|
||||
case "$ext" in
|
||||
go)
|
||||
cat ./tools/copyright/copyright ${file} > ${file}.new
|
||||
;;
|
||||
ts)
|
||||
cat ./tools/copyright/copyright ${file} > ${file}.new
|
||||
;;
|
||||
sh)
|
||||
head -1 ${file} > ${file}.new
|
||||
cat ./tools/copyright/copyright | sed 's/\/\//\#/1' >> ${file}.new
|
||||
tail -n +2 ${file} >> ${file}.new
|
||||
;;
|
||||
*)
|
||||
cat ./tools/copyright/copyright | sed 's/\/\//\#/1' > ${file}.new
|
||||
cat ${file} >> ${file}.new
|
||||
;;
|
||||
esac
|
||||
|
||||
mv ${file}.new ${file}
|
||||
|
||||
# make permissions the same
|
||||
chmod $permissions ${file}
|
||||
|
||||
echo "$(tput -T xterm setaf 3)FIXING$(tput -T xterm sgr0)"
|
||||
ERR=false
|
||||
else
|
||||
echo "$(tput -T xterm setaf 1)FAIL$(tput -T xterm sgr0)"
|
||||
ERR=false
|
||||
FAIL=true
|
||||
fi
|
||||
else
|
||||
echo "$(tput -T xterm setaf 2)OK$(tput -T xterm sgr0)"
|
||||
fi
|
||||
done
|
||||
|
||||
# If we failed one check, return 1
|
||||
[ $FAIL == true ] && exit 1 || exit 0
|
Loading…
Reference in New Issue
Block a user