Files
kustomize/pseudo/init-pseudo-module.sh
Phillip Wittrock 883714e2e5 Scripts for adding psuedo modules
psuedo modules will contain modules copied from k8s where we cannot depend directly on the k8s modules
2019-11-08 12:25:13 -08:00

91 lines
2.5 KiB
Bash
Executable File

#!/bin/bash
set -e
set -o xtrace
function clonePseudoRepo {
git clone -b kubernetes-1.16.2 --depth 1 \
https://github.com/kubernetes/$1.git
rm -rf $1/.git
find $1 -name go.mod | xargs rm
find $1 -name go.sum | xargs rm
find $1 -name OWNERS | xargs rm
}
function replacePseudoModuleName {
find . -name *.go | xargs sed -i -e "s!k8s.io/$1!sigs.k8s.io/kustomize/pseudo/k8s/$1!g"
find . -name *.proto | xargs sed -i -e "s!k8s.io/$1!sigs.k8s.io/kustomize/pseudo/k8s/$1!g"
}
function checkForForbiddenModules {
if find . -name '*.go' | xargs grep "k8s.io/$1" ; then
echo "forbidden dep k8s.io/$1 in *.go"
exit 1
fi
if find . -name 'go.*' | xargs grep "k8s.io/$1" ; then
echo "forbidden dep k8s.io/$1 in go.*"
exit 1
fi
}
# make sure we are running in the right spot
if [ ! -d "pseudo" ]; then
echo "must run script from kustomize root dir"
exit 1
fi
cd pseudo
# make the k8s deps dir
if [ -d "k8s" ]; then
echo "must remove existing k8s dir"
exit 1
fi
mkdir k8s
cd k8s
go mod init sigs.k8s.io/kustomize/pseudo/k8s
# setup the correct set of dependencies -- copied from the client-go repo
go mod edit \
-require=github.com/google/go-cmp@v0.3.1 \
-require=github.com/google/gofuzz@v1.0.0 \
-require=github.com/google/uuid@v1.1.1 \
-require=github.com/imdario/mergo@v0.3.5 \
-require=github.com/json-iterator/go@v1.1.8 \
-require=github.com/modern-go/reflect2@v1.0.1 \
-require=golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2 \
-require=golang.org/x/net@v0.0.0-20190620200207-3b0461eec859 \
-require=golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45 \
-require=golang.org/x/time@v0.0.0-20191024005414-555d28b269f0 \
-require=gopkg.in/yaml.v2@v2.2.4 \
-require=k8s.io/klog@v1.0.0 \
-require=k8s.io/kube-openapi@v0.0.0-20191107075043-30be4d16710a \
-require=k8s.io/utils@v0.0.0-20191030222137-2b95a09bc58d \
-require=sigs.k8s.io/yaml@v1.1.0
# setup the correct set of dependencies -- copied from the client-go repo
go mod edit \
-replace=golang.org/x/sys=golang.org/x/sys@v0.0.0-20190813064441-fde4db37ae7a \
-replace=golang.org/x/tools=golang.org/x/tools@v0.0.0-20190821162956-65e3620a7ae7
# fetch the k8s packages
for item in api apimachinery client-go
do
clonePseudoRepo $item
done
# fixup the package names
for item in api apimachinery client-go
do
replacePseudoModuleName $item
done
# test the pseudo packages
go test ./...
# verify the package dependencies
for item in api apimachinery client-go
do
checkForForbiddenModules $item
done