(command.CommandList children: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-o>} {<errexit>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-o>} {<nounset>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-o>} {<pipefail>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'KUBE_ROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KUBE_ROOT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KUBE_ROOT='> name:KUBE_ROOT) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.AndOr children: [ (command.Simple blame_tok: <cd> more_env: [] words: [ {<cd>} { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <dirname> more_env: [] words: [{<dirname>} {(DQ (${ Id.VSub_Name BASH_SOURCE))}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) <'/..'> } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <pwd> more_env: [] words: [{<pwd>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'KUBERNETES_RELEASE_URL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KUBERNETES_RELEASE_URL='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'KUBERNETES_RELEASE_URL='> name: KUBERNETES_RELEASE_URL ) op: assign_op.Equal rhs: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name KUBERNETES_RELEASE_URL> var_name: KUBERNETES_RELEASE_URL suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {<'https:'> <Id.Lit_Slash '/'> <Id.Lit_Slash '/'> <dl.k8s.io>} ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] redirects: [] ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <detect_kube_release> name: detect_kube_release body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name KUBE_VERSION> var_name: KUBE_VERSION suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty)) right: <Id.Right_DollarBrace '}'> ) ) } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})] spids: [167 183] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.Unary op_id: Id.BoolUnary_e child: {(DQ (${ Id.VSub_Name KUBE_ROOT) <'/version'>)} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Can\'t determine Kubernetes release.'>)}] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ (${ Id.VSub_Name BASH_SOURCE) <' should only be run from a prebuilt Kubernetes release.'> ) } ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Did you mean to use get-kube.sh instead?'>)}] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [198 216] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'KUBE_VERSION='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KUBE_VERSION='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KUBE_VERSION='> name:KUBE_VERSION) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {(DQ (${ Id.VSub_Name KUBE_ROOT) <'/version'>)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <detect_client_info> name: detect_client_info body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'kernel='> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <uname> more_env: [] words: [{<uname>} {<-s>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name kernel))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Darwin> pattern: (pat.Words words:[{<Darwin>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'CLIENT_PLATFORM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CLIENT_PLATFORM='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'CLIENT_PLATFORM='> name: CLIENT_PLATFORM ) op: assign_op.Equal rhs: {(DQ <darwin>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Linux> pattern: (pat.Words words:[{<Linux>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'CLIENT_PLATFORM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CLIENT_PLATFORM='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'CLIENT_PLATFORM='> name: CLIENT_PLATFORM ) op: assign_op.Equal rhs: {(DQ <linux>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'Unknown, unsupported platform: '> (${ Id.VSub_Name kernel) <.>)} ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Supported platforms: Linux, Darwin.'>)}] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Bailing out.'>)}] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'machine='> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <uname> more_env: [] words: [{<uname>} {<-m>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name machine))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <x86_64> pattern: (pat.Words words: [ {<x86_64> <Id.Lit_Star '*'>} {<i> <Id.Lit_QMark '?'> <86_64> <Id.Lit_Star '*'>} {<amd64> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'CLIENT_ARCH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CLIENT_ARCH='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'CLIENT_ARCH='> name: CLIENT_ARCH ) op: assign_op.Equal rhs: {(DQ <amd64>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <aarch64> pattern: (pat.Words words: [{<aarch64> <Id.Lit_Star '*'>} {<arm64> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'CLIENT_ARCH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CLIENT_ARCH='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'CLIENT_ARCH='> name: CLIENT_ARCH ) op: assign_op.Equal rhs: {(DQ <arm64>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <arm> pattern: (pat.Words words:[{<arm> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'CLIENT_ARCH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CLIENT_ARCH='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'CLIENT_ARCH='> name: CLIENT_ARCH ) op: assign_op.Equal rhs: {(DQ <arm>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <i> pattern: (pat.Words words:[{<i> <Id.Lit_QMark '?'> <86> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'CLIENT_ARCH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CLIENT_ARCH='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'CLIENT_ARCH='> name: CLIENT_ARCH ) op: assign_op.Equal rhs: {(DQ <386>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <s390x> pattern: (pat.Words words:[{<s390x> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'CLIENT_ARCH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CLIENT_ARCH='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'CLIENT_ARCH='> name: CLIENT_ARCH ) op: assign_op.Equal rhs: {(DQ <s390x>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'Unknown, unsupported architecture ('> (${ Id.VSub_Name machine) <').'>) } ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'Supported architectures x86_64, i686, arm, arm64, s390x.'>)} ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Bailing out.'>)}] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<3>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <md5sum_file> name: md5sum_file body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <which> more_env: [] words: [{<which>} {<md5>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <md5> more_env: [] words: [{<md5>} {<-q>} {(DQ ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) ] spids: [552 565] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Pipeline children: [ (command.Simple blame_tok: <md5sum> more_env: [] words: [{<md5sum>} {(DQ ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <awk> more_env: [] words: [{<awk>} {(SQ <'{ print $1 }'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <sha1sum_file> name: sha1sum_file body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <which> more_env: [] words: [{<which>} {<sha1sum>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Pipeline children: [ (command.Simple blame_tok: <sha1sum> more_env: [] words: [{<sha1sum>} {(DQ ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <awk> more_env: [] words: [{<awk>} {(SQ <'{ print $1 }'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] spids: [609 622] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Pipeline children: [ (command.Simple blame_tok: <shasum> more_env: [] words: [{<shasum>} {<-a1>} {(DQ ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <awk> more_env: [] words: [{<awk>} {(SQ <'{ print $1 }'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <download_tarball> name: download_tarball body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<-r>} {<Id.Lit_VarLike 'download_path='> (DQ ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<-r>} {<Id.Lit_VarLike 'file='> (DQ ($ Id.VSub_Number 2))}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'url='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'url='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'url='> name:url) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name DOWNLOAD_URL_PREFIX) <'/'> (${ Id.VSub_Name file))} ) ] redirects: [] ) (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {(DQ (${ Id.VSub_Name download_path))}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <which> more_env: [] words: [{<which>} {<curl>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <curl> more_env: [] words: [ {<curl>} {<-fL>} {<--retry>} {<3>} {<--keepalive-time>} {<2>} {(DQ (${ Id.VSub_Name url))} {<-o>} {(DQ (${ Id.VSub_Name download_path) <'/'> (${ Id.VSub_Name file))} ] redirects: [] do_fork: T ) ] spids: [717 730] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <which> more_env: [] words: [{<which>} {<wget>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <wget> more_env: [] words: [ {<wget>} {(DQ (${ Id.VSub_Name url))} {<-O>} {(DQ (${ Id.VSub_Name download_path) <'/'> (${ Id.VSub_Name file))} ] redirects: [] do_fork: T ) ] spids: [764 777] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Couldn\'t find curl or wget. Bailing out.'>)}] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<4>}) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'md5sum='> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <md5sum_file> more_env: [] words: [ {<md5sum_file>} {(DQ (${ Id.VSub_Name download_path) <'/'> (${ Id.VSub_Name file))} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'md5sum('> (${ Id.VSub_Name file) <')='> (${ Id.VSub_Name md5sum))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'sha1sum='> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <sha1sum_file> more_env: [] words: [ {<sha1sum_file>} {(DQ (${ Id.VSub_Name download_path) <'/'> (${ Id.VSub_Name file))} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'sha1sum('> (${ Id.VSub_Name file) <')='> (${ Id.VSub_Name sha1sum))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <extract_arch_tarball> name: extract_arch_tarball body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<-r>} {<Id.Lit_VarLike 'tarfile='> (DQ ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<-r>} {<Id.Lit_VarLike 'platform='> (DQ ($ Id.VSub_Number 2))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<-r>} {<Id.Lit_VarLike 'arch='> (DQ ($ Id.VSub_Number 3))}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'platforms_dir='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'platforms_dir='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'platforms_dir='> name:platforms_dir) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name KUBE_ROOT) <'/platforms/'> (${ Id.VSub_Name platform) <'/'> (${ Id.VSub_Name arch) ) } ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'Extracting '> (${ Id.VSub_Name tarfile) <' into '> (${ Id.VSub_Name platforms_dir) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {(DQ (${ Id.VSub_Name platforms_dir))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <tar> more_env: [] words: [ {<tar>} {<-xzf>} {(DQ (${ Id.VSub_Name tarfile))} {<--strip-components>} {<3>} {<-C>} {(DQ (${ Id.VSub_Name platforms_dir))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <ln> more_env: [] words: [ {<ln>} {<-sf>} {(DQ (${ Id.VSub_Name platforms_dir))} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <dirname> more_env: [] words: [{<dirname>} {(${ Id.VSub_Name tarfile)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) <'/bin'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'Add \''> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <dirname> more_env: [] words: [{<dirname>} {(${ Id.VSub_Name tarfile)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) <'/bin\' to your PATH to use newly-installed binaries.'> ) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <detect_kube_release> more_env: [] words: [{<detect_kube_release>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'DOWNLOAD_URL_PREFIX='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'DOWNLOAD_URL_PREFIX='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DOWNLOAD_URL_PREFIX='> name: DOWNLOAD_URL_PREFIX ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name KUBERNETES_RELEASE_URL) <'/'> (${ Id.VSub_Name KUBE_VERSION))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SERVER_PLATFORM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SERVER_PLATFORM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SERVER_PLATFORM='> name:SERVER_PLATFORM) op: assign_op.Equal rhs: {(DQ <linux>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SERVER_ARCH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SERVER_ARCH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SERVER_ARCH='> name:SERVER_ARCH) op: assign_op.Equal rhs: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name KUBERNETES_SERVER_ARCH> var_name: KUBERNETES_SERVER_ARCH suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{<amd64>}) right: <Id.Right_DollarBrace '}'> ) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SERVER_TAR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SERVER_TAR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SERVER_TAR='> name:SERVER_TAR) op: assign_op.Equal rhs: { (DQ <kubernetes-server-> (${ Id.VSub_Name SERVER_PLATFORM) <-> (${ Id.VSub_Name SERVER_ARCH) <.tar.gz> ) } ) ] redirects: [] ) (command.Simple blame_tok: <detect_client_info> more_env: [] words: [{<detect_client_info>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'CLIENT_TAR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CLIENT_TAR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CLIENT_TAR='> name:CLIENT_TAR) op: assign_op.Equal rhs: { (DQ <kubernetes-client-> (${ Id.VSub_Name CLIENT_PLATFORM) <-> (${ Id.VSub_Name CLIENT_ARCH) <.tar.gz> ) } ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Kubernetes release: '> (${ Id.VSub_Name KUBE_VERSION))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'Server: '> (${ Id.VSub_Name SERVER_PLATFORM) <'/'> (${ Id.VSub_Name SERVER_ARCH) <' (to override, set KUBERNETES_SERVER_ARCH)'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'Client: '> (${ Id.VSub_Name CLIENT_PLATFORM) <'/'> (${ Id.VSub_Name CLIENT_ARCH) <' (autodetected)'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>}] redirects:[] do_fork:T) (command.ShAssignment left: <Id.Lit_VarLike 'DOWNLOAD_SERVER_TAR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'DOWNLOAD_SERVER_TAR='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DOWNLOAD_SERVER_TAR='> name: DOWNLOAD_SERVER_TAR ) op: assign_op.Equal rhs: {<false>} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.Unary op_id: Id.BoolUnary_e child: { (DQ (${ Id.VSub_Name KUBE_ROOT) <'/server/'> (${ Id.VSub_Name SERVER_TAR) ) } ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'DOWNLOAD_SERVER_TAR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'DOWNLOAD_SERVER_TAR='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DOWNLOAD_SERVER_TAR='> name: DOWNLOAD_SERVER_TAR ) op: assign_op.Equal rhs: {<true>} ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'Will download '> (${ Id.VSub_Name SERVER_TAR) <' from '> (${ Id.VSub_Name DOWNLOAD_URL_PREFIX) ) } ] redirects: [] do_fork: T ) ] spids: [1156 1177] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'DOWNLOAD_CLIENT_TAR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'DOWNLOAD_CLIENT_TAR='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DOWNLOAD_CLIENT_TAR='> name: DOWNLOAD_CLIENT_TAR ) op: assign_op.Equal rhs: {<false>} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.Unary op_id: Id.BoolUnary_x child: { (DQ (${ Id.VSub_Name KUBE_ROOT) <'/platforms/'> (${ Id.VSub_Name CLIENT_PLATFORM) <'/'> (${ Id.VSub_Name CLIENT_ARCH) <'/kubectl'> ) } ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'DOWNLOAD_CLIENT_TAR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'DOWNLOAD_CLIENT_TAR='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DOWNLOAD_CLIENT_TAR='> name: DOWNLOAD_CLIENT_TAR ) op: assign_op.Equal rhs: {<true>} ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'Will download and extract '> (${ Id.VSub_Name CLIENT_TAR) <' from '> (${ Id.VSub_Name DOWNLOAD_URL_PREFIX) ) } ] redirects: [] do_fork: T ) ] spids: [1209 1235] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'TESTS_TAR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TESTS_TAR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TESTS_TAR='> name:TESTS_TAR) op: assign_op.Equal rhs: {(DQ <kubernetes-test.tar.gz>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'DOWNLOAD_TESTS_TAR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'DOWNLOAD_TESTS_TAR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DOWNLOAD_TESTS_TAR='> name:DOWNLOAD_TESTS_TAR) op: assign_op.Equal rhs: {<false>} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name KUBERNETES_DOWNLOAD_TESTS> var_name: KUBERNETES_DOWNLOAD_TESTS suffix_op: (suffix_op.Unary op:<Id.VTest_Hyphen _> arg_word:(rhs_word__Empty)) right: <Id.Right_DollarBrace '}'> ) ) } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'DOWNLOAD_TESTS_TAR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'DOWNLOAD_TESTS_TAR='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DOWNLOAD_TESTS_TAR='> name: DOWNLOAD_TESTS_TAR ) op: assign_op.Equal rhs: {<true>} ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'Will download and extract '> (${ Id.VSub_Name TESTS_TAR) <' from '> (${ Id.VSub_Name DOWNLOAD_URL_PREFIX) ) } ] redirects: [] do_fork: T ) ] spids: [1266 1282] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ (${ Id.VSub_Name DOWNLOAD_CLIENT_TAR))} right: {<false>} ) right: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ (${ Id.VSub_Name DOWNLOAD_SERVER_TAR))} right: {<false>} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ (${ Id.VSub_Name DOWNLOAD_TESTS_TAR))} right: {<false>} ) ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Nothing additional to download.'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] spids: [1305 1350] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name KUBERNETES_SKIP_CONFIRM> var_name: KUBERNETES_SKIP_CONFIRM suffix_op: (suffix_op.Unary op:<Id.VTest_Hyphen _> arg_word:(rhs_word__Empty)) right: <Id.Right_DollarBrace '}'> ) ) } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Is this ok? [Y]/n'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<confirm>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(DQ (${ Id.VSub_Name confirm))} right: {<Id.Lit_Other '^'> <Id.Lit_Other '['> <nN> <Id.Lit_Other ']'> <Id.Lit_Other '$'> } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <Aborting.>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [1398 1419] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [1367 1383] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Left_DoubleQuote '"'> more_env: [] words: [{(DQ (${ Id.VSub_Name DOWNLOAD_SERVER_TAR))}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <download_tarball> more_env: [] words: [ {<download_tarball>} {(DQ (${ Id.VSub_Name KUBE_ROOT) <'/server'>)} {(DQ (${ Id.VSub_Name SERVER_TAR))} ] redirects: [] do_fork: T ) ] spids: [1439 1448] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Left_DoubleQuote '"'> more_env: [] words: [{(DQ (${ Id.VSub_Name DOWNLOAD_CLIENT_TAR))}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <download_tarball> more_env: [] words: [ {<download_tarball>} {(DQ (${ Id.VSub_Name KUBE_ROOT) <'/client'>)} {(DQ (${ Id.VSub_Name CLIENT_TAR))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <extract_arch_tarball> more_env: [] words: [ {<extract_arch_tarball>} {(DQ (${ Id.VSub_Name KUBE_ROOT) <'/client/'> (${ Id.VSub_Name CLIENT_TAR))} {(DQ (${ Id.VSub_Name CLIENT_PLATFORM))} {(DQ (${ Id.VSub_Name CLIENT_ARCH))} ] redirects: [] do_fork: T ) ] spids: [1469 1478] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Left_DoubleQuote '"'> more_env: [] words: [{(DQ (${ Id.VSub_Name DOWNLOAD_TESTS_TAR))}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <download_tarball> more_env: [] words: [ {<download_tarball>} {(DQ (${ Id.VSub_Name KUBE_ROOT) <'/test'>)} {(DQ (${ Id.VSub_Name TESTS_TAR))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'Extracting '> (${ Id.VSub_Name TESTS_TAR) <' into '> (${ Id.VSub_Name KUBE_ROOT)) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <tar> more_env: [] words: [ {<tar>} {<-xzf>} {(DQ (${ Id.VSub_Name KUBE_ROOT) <'/test/'> (${ Id.VSub_Name TESTS_TAR))} {<--strip-components>} {<1>} {<-C>} {(DQ (${ Id.VSub_Name KUBE_ROOT))} ] redirects: [] do_fork: T ) ] spids: [1524 1533] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] )