diff --git a/staging/src/k8s.io/client-go/copy.sh b/staging/src/k8s.io/client-go/copy.sh index f94629b496..d4e9ee9cc7 100755 --- a/staging/src/k8s.io/client-go/copy.sh +++ b/staging/src/k8s.io/client-go/copy.sh @@ -26,6 +26,8 @@ CLIENT_REPO_FROM_SRC="${2:-"k8s.io/client-go/${RELEASE}"}" CLIENT_REPO="${MAIN_REPO}/staging/src/${CLIENT_REPO_FROM_SRC}" CLIENT_REPO_TEMP="${CLIENT_REPO}"/_tmp +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + # working in the ${CLIENT_REPO_TEMP} so 'godep save' won't complain about dirty working tree. echo "creating the _tmp directory" mkdir -p "${CLIENT_REPO_TEMP}" @@ -55,10 +57,10 @@ mkcp "/pkg/client/unversioned/portforward" "/pkg/client/unversioned" # remove this test because it imports the internal clientset rm "${CLIENT_REPO_TEMP}"/pkg/client/unversioned/portforward/portforward_test.go -pushd "${CLIENT_REPO_TEMP}" +pushd "${CLIENT_REPO_TEMP}" > /dev/null echo "generating vendor/" GO15VENDOREXPERIMENT=1 godep save ./... -popd +popd > /dev/null echo "move to the client repo" # clean the ${CLIENT_REPO} @@ -76,6 +78,9 @@ mv "${CLIENT_REPO}"/vendor "${CLIENT_REPO}"/_vendor # TODO: probably we should convert the README.md a doc.go find ./ -name "README.md" -delete +echo "rewriting Godeps.json" +go run "${DIR}/godeps-json-updater.go" --godeps-file="${CLIENT_REPO}/Godeps/Godeps.json" --client-go-import-path="${CLIENT_REPO_FROM_SRC}" + echo "rewriting imports" grep -Rl "\"${MAIN_REPO_FROM_SRC}" ./ | grep ".go" | grep -v "vendor/" | xargs sed -i "s|\"${MAIN_REPO_FROM_SRC}|\"${CLIENT_REPO_FROM_SRC}|g" diff --git a/staging/src/k8s.io/client-go/godeps-json-updater.go b/staging/src/k8s.io/client-go/godeps-json-updater.go new file mode 100644 index 0000000000..a9a66d379f --- /dev/null +++ b/staging/src/k8s.io/client-go/godeps-json-updater.go @@ -0,0 +1,88 @@ +/* +Copyright 2016 The Kubernetes Authors. + +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. +*/ + +package main + +import ( + "encoding/json" + "flag" + "log" + "os" + "strings" +) + +var ( + godepsFile = flag.String("godeps-file", "", "absolute path to Godeps.json") + clientRepoImportPath = flag.String("client-go-import-path", "", "import path to a version of client-go, e.g., k8s.io/client-go/1.4") +) + +type Dependency struct { + ImportPath string + Comment string `json:",omitempty"` + Rev string +} + +type Godeps struct { + ImportPath string + GoVersion string + GodepVersion string + Packages []string `json:",omitempty"` // Arguments to save, if any. + Deps []Dependency +} + +// rewrites the Godeps.ImportPath, removes the Deps whose ImportPath contains "k8s.io/kubernetes" +func main() { + flag.Parse() + var g Godeps + if len(*godepsFile) == 0 { + log.Fatalf("absolute ath to Godeps.json is required") + } + if len(*clientRepoImportPath) == 0 { + log.Fatalf("import path to a version of client-go is required") + } + f, err := os.OpenFile(*godepsFile, os.O_RDWR, 0666) + if err != nil { + log.Fatalf("cannot open file %q: %v", *godepsFile, err) + } + defer f.Close() + err = json.NewDecoder(f).Decode(&g) + if err != nil { + log.Fatalf("Unable to parse %q: %v", *godepsFile, err) + } + // rewrites the Godeps.ImportPath + g.ImportPath = *clientRepoImportPath + // removes the Deps whose ImportPath contains "k8s.io/kubernetes" + i := 0 + for _, dep := range g.Deps { + if strings.Contains(dep.ImportPath, "k8s.io/kubernetes") { + continue + } + g.Deps[i] = dep + i++ + } + g.Deps = g.Deps[:i] + b, err := json.MarshalIndent(g, "", "\t") + if err != nil { + log.Fatal(err) + } + n, err := f.WriteAt(append(b, '\n'), 0) + if err != nil { + log.Fatal(err) + } + if err := f.Truncate(int64(n)); err != nil { + log.Fatal(err) + } +}