#!/bin/bash # 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. # Common utility functions for build scripts global KUBE_ROOT := "$[dirname $(BASH_SOURCE)]/.." proc kube::release::semantic_version { # This takes: # Client Version: version.Info{Major:"1", Minor:"1+", GitVersion:"v1.1.0-alpha.0.2328+3c0a05de4a38e3", GitCommit:"3c0a05de4a38e355d147dbfb4d85bad6d2d73bb9", GitTreeState:"clean"} # and spits back the GitVersion piece in a way that is somewhat # resilient to the other fields changing (we hope) $(KUBE_ROOT)/cluster/kubectl.sh version --client | sed "s/, */\\ /g" | egrep "^GitVersion:" | cut -f2 -d: | cut -f2 -d'"' } proc kube::release::semantic_image_tag_version { printf $[kube::release::semantic_version] | tr + _ } (CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:KUBE_ROOT) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(dirname)} {(DQ (${ VSub_Name BASH_SOURCE))})] ) left_token: spids: [49 57] ) (/..) } spids: [48] ) ] spids: [48] ) (FuncDef name: "kube::release::semantic_version" body: (BraceGroup children: [ (Pipeline children: [ (C {(${ VSub_Name KUBE_ROOT) (/cluster/kubectl.sh)} {(version)} {(--client)}) (C {(sed)} {(DQ ("s/, */") (EscapedLiteralPart token:) ("\n") (/g))} ) (C {(egrep)} {(DQ ("^GitVersion:"))}) (C {(cut)} {(-f2)} {(-d) (Lit_Other ":")}) (C {(cut)} {(-f2)} {(-d) (EscapedLiteralPart token:)}) ] negated: False ) ] spids: [73] ) spids: [61 72] ) (FuncDef name: "kube::release::semantic_image_tag_version" body: (BraceGroup children: [ (Pipeline children: [ (C {(printf)} { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(kube) (Lit_Other ":") (Lit_Other ":") (release) (Lit_Other ":") (Lit_Other ":") (semantic_version) } ) ] ) left_token: spids: [159 167] ) ) } ) (C {(tr)} {(Lit_Other "+")} {(_)}) ] negated: False ) ] spids: [153] ) spids: [141 152] ) ] )