(command.CommandList children: [ (C {(Id.KW_Set set)} {(-o)} {(errexit)}) (C {(Id.KW_Set set)} {(-o)} {(nounset)}) (C {(Id.KW_Set set)} {(-o)} {(pipefail)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:KUBE_ROOT) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:125) command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(cd)} { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:128) command_list: (command.CommandList children: [(C {(dirname)} {(DQ (${ Id.VSub_Name BASH_SOURCE))})] ) ) (/..) } ) (C {(pwd)}) ] ) ] ) ) } spids: [124] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:KUBERNETES_RELEASE_URL) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:KUBERNETES_RELEASE_URL span_id:148) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {('https:') (Id.Lit_Slash /) (Id.Lit_Slash /) (dl.k8s.io)} ) ) ) } spids: [145] ) ] ) (command.ShFunction name: detect_kube_release body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:KUBE_VERSION span_id:175) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty)) ) ) } ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:181) ) ] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:186) arg_word: {(0)} ) ] spids: [167 183] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.Unary op_id: Id.BoolUnary_e child: {(DQ (${ Id.VSub_Name KUBE_ROOT) (/version))} ) ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:214) ) ] action: [ (command.Simple words: [{(echo)} {(DQ ("Can't determine Kubernetes release."))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:225) fd: -1 arg_word: {(2)} ) ] ) (command.Simple words: [ {(echo)} { (DQ (${ Id.VSub_Name BASH_SOURCE) (' should only be run from a prebuilt Kubernetes release.') ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:238) fd: -1 arg_word: {(2)} ) ] ) (command.Simple words: [{(echo)} {(DQ ('Did you mean to use get-kube.sh instead?'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:248) fd: -1 arg_word: {(2)} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:252) arg_word: {(1)} ) ] spids: [198 216] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:KUBE_VERSION) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:262) command_list: (command.CommandList children: [(C {(cat)} {(DQ (${ Id.VSub_Name KUBE_ROOT) (/version))})] ) ) } spids: [261] ) ] ) ] ) ) (command.ShFunction name: detect_client_info body: (command.BraceGroup children: [ (C {(local)} {(Id.Lit_VarLike 'kernel=') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:288) command_list: (command.CommandList children:[(C {(uname)} {(-s)})]) ) } ) (command.Case to_match: {(DQ (${ Id.VSub_Name kernel))} arms: [ (case_arm pat_list: [{(Darwin)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CLIENT_PLATFORM) op: assign_op.Equal rhs: {(DQ (darwin))} spids: [310] ) ] ) ] spids: [306 307 316 -1] ) (case_arm pat_list: [{(Linux)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CLIENT_PLATFORM) op: assign_op.Equal rhs: {(DQ (linux))} spids: [323] ) ] ) ] spids: [319 320 329 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.Simple words: [ {(echo)} {(DQ ('Unknown, unsupported platform: ') (${ Id.VSub_Name kernel) (.))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:346) fd: -1 arg_word: {(2)} ) ] ) (command.Simple words: [{(echo)} {(DQ ('Supported platforms: Linux, Darwin.'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:356) fd: -1 arg_word: {(2)} ) ] ) (command.Simple words: [{(echo)} {(DQ ('Bailing out.'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:366) fd: -1 arg_word: {(2)} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:370) arg_word: {(2)} ) ] spids: [332 333 -1 375] ) ] ) (C {(local)} {(Id.Lit_VarLike 'machine=') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:390) command_list: (command.CommandList children:[(C {(uname)} {(-m)})]) ) } ) (command.Case to_match: {(DQ (${ Id.VSub_Name machine))} arms: [ (case_arm pat_list: [ {(x86_64) (Id.Lit_Star '*')} {(i) (Id.Lit_QMark '?') (86_64) (Id.Lit_Star '*')} {(amd64) (Id.Lit_Star '*')} ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CLIENT_ARCH) op: assign_op.Equal rhs: {(DQ (amd64))} spids: [421] ) ] ) ] spids: [408 418 427 -1] ) (case_arm pat_list: [{(aarch64) (Id.Lit_Star '*')} {(arm64) (Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CLIENT_ARCH) op: assign_op.Equal rhs: {(DQ (arm64))} spids: [438] ) ] ) ] spids: [430 435 444 -1] ) (case_arm pat_list: [{(arm) (Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CLIENT_ARCH) op: assign_op.Equal rhs: {(DQ (arm))} spids: [452] ) ] ) ] spids: [447 449 458 -1] ) (case_arm pat_list: [{(i) (Id.Lit_QMark '?') (86) (Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CLIENT_ARCH) op: assign_op.Equal rhs: {(DQ (386))} spids: [468] ) ] ) ] spids: [461 465 474 -1] ) (case_arm pat_list: [{(s390x) (Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CLIENT_ARCH) op: assign_op.Equal rhs: {(DQ (s390x))} spids: [482] ) ] ) ] spids: [477 479 488 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.Simple words: [ {(echo)} { (DQ ('Unknown, unsupported architecture (') (${ Id.VSub_Name machine) (').')) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:506) fd: -1 arg_word: {(2)} ) ] ) (command.Simple words: [ {(echo)} {(DQ ('Supported architectures x86_64, i686, arm, arm64, s390x.'))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:516) fd: -1 arg_word: {(2)} ) ] ) (command.Simple words: [{(echo)} {(DQ ('Bailing out.'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:526) fd: -1 arg_word: {(2)} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:530) arg_word: {(3)} ) ] spids: [492 493 535 -1] ) ] ) ] ) ) (command.ShFunction name: md5sum_file body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Simple words: [{(which)} {(md5)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:558) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:561) fd: 2 arg_word: {(1)} ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:563) ) ] action: [(C {(md5)} {(-q)} {(DQ ($ Id.VSub_Number '$1'))})] spids: [552 565] ) ] else_action: [ (command.Pipeline children: [ (C {(md5sum)} {(DQ ($ Id.VSub_Number '$1'))}) (C {(awk)} {(SQ (Token id:Id.Lit_Chars val:'{ print $1 }' span_id:591))}) ] negated: F ) ] ) ] ) ) (command.ShFunction name: sha1sum_file body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Simple words: [{(which)} {(sha1sum)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:615) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:618) fd: 2 arg_word: {(1)} ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:620) ) ] action: [ (command.Pipeline children: [ (C {(sha1sum)} {(DQ ($ Id.VSub_Number '$1'))}) (C {(awk)} {(SQ (Token id:Id.Lit_Chars val:'{ print $1 }' span_id:636))}) ] negated: F ) ] spids: [609 622] ) ] else_action: [ (command.Pipeline children: [ (C {(shasum)} {(-a1)} {(DQ ($ Id.VSub_Number '$1'))}) (C {(awk)} {(SQ (Token id:Id.Lit_Chars val:'{ print $1 }' span_id:656))}) ] negated: F ) ] ) ] ) ) (command.ShFunction name: download_tarball body: (command.BraceGroup children: [ (C {(local)} {(-r)} {(Id.Lit_VarLike 'download_path=') (DQ ($ Id.VSub_Number '$1'))}) (C {(local)} {(-r)} {(Id.Lit_VarLike 'file=') (DQ ($ Id.VSub_Number '$2'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:url) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name DOWNLOAD_URL_PREFIX) (/) (${ Id.VSub_Name file))} spids: [694] ) ] ) (C {(mkdir)} {(-p)} {(DQ (${ Id.VSub_Name download_path))}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.WordTest w: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:721) command_list: (command.CommandList children: [(C {(which)} {(curl)})] ) ) } ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:728) ) ] action: [ (C {(curl)} {(-fL)} {(--retry)} {(3)} {(--keepalive-time)} {(2)} {(DQ (${ Id.VSub_Name url))} {(-o)} {(DQ (${ Id.VSub_Name download_path) (/) (${ Id.VSub_Name file))} ) ] spids: [717 730] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.WordTest w: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:768) command_list: (command.CommandList children: [(C {(which)} {(wget)})] ) ) } ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:775) ) ] action: [ (C {(wget)} {(DQ (${ Id.VSub_Name url))} {(-O)} {(DQ (${ Id.VSub_Name download_path) (/) (${ Id.VSub_Name file))} ) ] spids: [764 777] ) ] else_action: [ (command.Simple words: [{(echo)} {(DQ ("Couldn't find curl or wget. Bailing out."))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:810) fd: -1 arg_word: {(2)} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:814) arg_word: {(4)} ) ] ) (C {(echo)}) (C {(local)} {(Id.Lit_VarLike 'md5sum=') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:828) command_list: (command.CommandList children: [ (C {(md5sum_file)} {(DQ (${ Id.VSub_Name download_path) (/) (${ Id.VSub_Name file))} ) ] ) ) } ) (C {(echo)} {(DQ ('md5sum(') (${ Id.VSub_Name file) (')=') (${ Id.VSub_Name md5sum))}) (C {(local)} {(Id.Lit_VarLike 'sha1sum=') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:860) command_list: (command.CommandList children: [ (C {(sha1sum_file)} {(DQ (${ Id.VSub_Name download_path) (/) (${ Id.VSub_Name file))} ) ] ) ) } ) (C {(echo)} {(DQ ('sha1sum(') (${ Id.VSub_Name file) (')=') (${ Id.VSub_Name sha1sum))}) (C {(echo)}) ] ) ) (command.ShFunction name: extract_arch_tarball body: (command.BraceGroup children: [ (C {(local)} {(-r)} {(Id.Lit_VarLike 'tarfile=') (DQ ($ Id.VSub_Number '$1'))}) (C {(local)} {(-r)} {(Id.Lit_VarLike 'platform=') (DQ ($ Id.VSub_Number '$2'))}) (C {(local)} {(-r)} {(Id.Lit_VarLike 'arch=') (DQ ($ Id.VSub_Number '$3'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:platforms_dir) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name KUBE_ROOT) (/platforms/) (${ Id.VSub_Name platform) (/) (${ Id.VSub_Name arch) ) } spids: [938] ) ] ) (C {(echo)} { (DQ ('Extracting ') (${ Id.VSub_Name tarfile) (' into ') (${ Id.VSub_Name platforms_dir)) } ) (C {(mkdir)} {(-p)} {(DQ (${ Id.VSub_Name platforms_dir))}) (C {(tar)} {(-xzf)} {(DQ (${ Id.VSub_Name tarfile))} {(--strip-components)} {(3)} {(-C)} {(DQ (${ Id.VSub_Name platforms_dir))} ) (C {(ln)} {(-sf)} {(DQ (${ Id.VSub_Name platforms_dir))} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1021) command_list: (command.CommandList children: [(C {(dirname)} {(${ Id.VSub_Name tarfile)})] ) ) (/bin) ) } ) (C {(echo)} { (DQ ("Add '") (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1036) command_list: (command.CommandList children: [(C {(dirname)} {(${ Id.VSub_Name tarfile)})] ) ) ("/bin' to your PATH to use newly-installed binaries.") ) } ) ] ) ) (C {(detect_kube_release)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DOWNLOAD_URL_PREFIX) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name KUBERNETES_RELEASE_URL) (/) (${ Id.VSub_Name KUBE_VERSION))} spids: [1051] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SERVER_PLATFORM) op: assign_op.Equal rhs: {(DQ (linux))} spids: [1063] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SERVER_ARCH) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:KUBERNETES_SERVER_ARCH span_id:1071) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(amd64)}) ) ) } spids: [1068] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SERVER_TAR) op: assign_op.Equal rhs: { (DQ (kubernetes-server-) (${ Id.VSub_Name SERVER_PLATFORM) (-) (${ Id.VSub_Name SERVER_ARCH) (.tar.gz) ) } spids: [1077] ) ] ) (C {(detect_client_info)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CLIENT_TAR) op: assign_op.Equal rhs: { (DQ (kubernetes-client-) (${ Id.VSub_Name CLIENT_PLATFORM) (-) (${ Id.VSub_Name CLIENT_ARCH) (.tar.gz) ) } spids: [1093] ) ] ) (C {(echo)} {(DQ ('Kubernetes release: ') (${ Id.VSub_Name KUBE_VERSION))}) (C {(echo)} { (DQ ('Server: ') (${ Id.VSub_Name SERVER_PLATFORM) (/) (${ Id.VSub_Name SERVER_ARCH) (' (to override, set KUBERNETES_SERVER_ARCH)') ) } ) (C {(echo)} { (DQ ('Client: ') (${ Id.VSub_Name CLIENT_PLATFORM) (/) (${ Id.VSub_Name CLIENT_ARCH) (' (autodetected)') ) } ) (C {(echo)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DOWNLOAD_SERVER_TAR) op: assign_op.Equal rhs: {(false)} spids: [1153] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket 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))} ) ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1175) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DOWNLOAD_SERVER_TAR) op: assign_op.Equal rhs: {(true)} spids: [1180] ) ] ) (C {(echo)} { (DQ ('Will download ') (${ Id.VSub_Name SERVER_TAR) (' from ') (${ Id.VSub_Name DOWNLOAD_URL_PREFIX) ) } ) ] spids: [1156 1177] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DOWNLOAD_CLIENT_TAR) op: assign_op.Equal rhs: {(false)} spids: [1206] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket 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) ) } ) ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1233) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DOWNLOAD_CLIENT_TAR) op: assign_op.Equal rhs: {(true)} spids: [1238] ) ] ) (C {(echo)} { (DQ ('Will download and extract ') (${ Id.VSub_Name CLIENT_TAR) (' from ') (${ Id.VSub_Name DOWNLOAD_URL_PREFIX) ) } ) ] spids: [1209 1235] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TESTS_TAR) op: assign_op.Equal rhs: {(DQ (kubernetes-test.tar.gz))} spids: [1258] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DOWNLOAD_TESTS_TAR) op: assign_op.Equal rhs: {(false)} spids: [1263] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (DQ (braced_var_sub token: (Token id: Id.VSub_Name val: KUBERNETES_DOWNLOAD_TESTS span_id: 1274 ) suffix_op: (suffix_op.Unary op_id:Id.VTest_Hyphen arg_word:(word.Empty)) ) ) } ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1280) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DOWNLOAD_TESTS_TAR) op: assign_op.Equal rhs: {(true)} spids: [1285] ) ] ) (C {(echo)} { (DQ ('Will download and extract ') (${ Id.VSub_Name TESTS_TAR) (' from ') (${ Id.VSub_Name DOWNLOAD_URL_PREFIX) ) } ) ] spids: [1266 1282] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket 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)} ) ) ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1348) ) ] action: [ (C {(echo)} {(DQ ('Nothing additional to download.'))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:1360) arg_word: {(0)} ) ] spids: [1305 1350] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:KUBERNETES_SKIP_CONFIRM span_id:1375) suffix_op: (suffix_op.Unary op_id:Id.VTest_Hyphen arg_word:(word.Empty)) ) ) } ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1381) ) ] action: [ (C {(echo)} {(DQ ('Is this ok? [Y]/n'))}) (C {(read)} {(confirm)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket 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 '$') } ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1417) ) ] action: [ (C {(echo)} {(DQ (Aborting.))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:1429) arg_word: {(1)} ) ] spids: [1398 1419] ) ] ) ] spids: [1367 1383] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(DQ (${ Id.VSub_Name DOWNLOAD_SERVER_TAR))}) terminator: (Token id:Id.Op_Semi val:';' span_id:1446) ) ] action: [ (C {(download_tarball)} {(DQ (${ Id.VSub_Name KUBE_ROOT) (/server))} {(DQ (${ Id.VSub_Name SERVER_TAR))} ) ] spids: [1439 1448] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(DQ (${ Id.VSub_Name DOWNLOAD_CLIENT_TAR))}) terminator: (Token id:Id.Op_Semi val:';' span_id:1476) ) ] action: [ (C {(download_tarball)} {(DQ (${ Id.VSub_Name KUBE_ROOT) (/client))} {(DQ (${ Id.VSub_Name CLIENT_TAR))} ) (C {(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))} ) ] spids: [1469 1478] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(DQ (${ Id.VSub_Name DOWNLOAD_TESTS_TAR))}) terminator: (Token id:Id.Op_Semi val:';' span_id:1531) ) ] action: [ (C {(download_tarball)} {(DQ (${ Id.VSub_Name KUBE_ROOT) (/test))} {(DQ (${ Id.VSub_Name TESTS_TAR))} ) (C {(echo)} { (DQ ('Extracting ') (${ Id.VSub_Name TESTS_TAR) (' into ') (${ Id.VSub_Name KUBE_ROOT)) } ) (C {(tar)} {(-xzf)} {(DQ (${ Id.VSub_Name KUBE_ROOT) (/test/) (${ Id.VSub_Name TESTS_TAR))} {(--strip-components)} {(1)} {(-C)} {(DQ (${ Id.VSub_Name KUBE_ROOT))} ) ] spids: [1524 1533] ) ] ) ] )