(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 'KUBERNETES_CI_RELEASE_URL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KUBERNETES_CI_RELEASE_URL='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'KUBERNETES_CI_RELEASE_URL='> name: KUBERNETES_CI_RELEASE_URL ) op: assign_op.Equal rhs: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name KUBERNETES_CI_RELEASE_URL> var_name: KUBERNETES_CI_RELEASE_URL suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: { (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> <Id.Lit_Slash '/'> <ci> } ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] 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.ShAssignment left: <Id.Lit_VarLike 'KUBE_RELEASE_VERSION_REGEX='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KUBE_RELEASE_VERSION_REGEX='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'KUBE_RELEASE_VERSION_REGEX='> name: KUBE_RELEASE_VERSION_REGEX ) op: assign_op.Equal rhs: { (DQ <'^v(0|[1-9][0-9]*)'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'.(0|[1-9][0-9]*)'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'.(0|[1-9][0-9]*)(-([a-zA-Z0-9]+)'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'.(0|[1-9][0-9]*))?'> <Id.Lit_Dollar '$'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'KUBE_CI_VERSION_REGEX='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KUBE_CI_VERSION_REGEX='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'KUBE_CI_VERSION_REGEX='> name: KUBE_CI_VERSION_REGEX ) op: assign_op.Equal rhs: { (DQ <'^v(0|[1-9][0-9]*)'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'.(0|[1-9][0-9]*)'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'.(0|[1-9][0-9]*)-([a-zA-Z0-9]+)'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'.(0|[1-9][0-9]*)('> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'.(0|[1-9][0-9]*)'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'+[-0-9a-z]*)?'> <Id.Lit_Dollar '$'> ) } ) ] redirects: [] ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <set_binary_version> name: set_binary_version 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.Binary op_id: Id.BoolBinary_EqualTilde left: {(DQ (${ Id.VSub_Number 1))} right: {(DQ <'/'>)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <export> more_env: [] words: [ {<export>} {<Id.Lit_VarLike 'KUBE_VERSION='> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <curl> more_env: [] words: [ {<curl>} {<-fsSL>} {<--retry>} {<5>} {(DQ <'https://dl.k8s.io/'> (${ Id.VSub_Number 1) <.txt>)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) ] spids: [298 317] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<Id.Lit_VarLike 'KUBE_VERSION='> (${ Id.VSub_Number 1)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <download_kube_binaries> name: download_kube_binaries body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {<kubernetes>}] 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.Unary op_id: Id.BoolUnary_x child: {<'./cluster/get-kube-binaries.sh'>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <'./cluster/get-kube-binaries.sh'> more_env: [ (EnvPair left: <Id.Lit_VarLike 'KUBERNETES_RELEASE_URL='> name: KUBERNETES_RELEASE_URL val: {(DQ (${ Id.VSub_Name KUBERNETES_RELEASE_URL))} ) ] words: [{<'./cluster/get-kube-binaries.sh'>}] redirects: [] do_fork: T ) ] spids: [379 390] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] ) right: <Id.Right_Subshell _> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <create_cluster> name: create_cluster 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 KUBERNETES_SKIP_CREATE_CLUSTER> var_name: KUBERNETES_SKIP_CREATE_CLUSTER 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.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>})] spids: [424 440] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'Creating a kubernetes on '> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name KUBERNETES_PROVIDER> var_name: KUBERNETES_PROVIDER suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{<gce>}) right: <Id.Right_DollarBrace '}'> ) <...> ) } ] redirects: [] do_fork: T ) (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {<kubernetes>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <'./cluster/kube-up.sh'> more_env: [] words: [{<'./cluster/kube-up.sh'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'Kubernetes binaries at '> (${ Id.VSub_Name PWD) <'/cluster/'>)} ] 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_GlobNEqual left: {(DQ <':'> ($ Id.VSub_DollarName PATH) <':'>)} right: {<Id.Lit_Other '*'> (DQ <':'> (${ Id.VSub_Name PWD) <'/cluster:'>) <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 <'You may want to add this directory to your PATH in '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'HOME/.profile'> ) } ] redirects: [] do_fork: T ) ] spids: [486 511] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Installation successful!'>)}] redirects: [] do_fork: T ) ] ) right: <Id.Right_Subshell _> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (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_SKIP_DOWNLOAD> var_name: KUBERNETES_SKIP_DOWNLOAD 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: <create_cluster> more_env: [] words: [{<create_cluster>}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] spids: [539 555] ) ] 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_d child:{(DQ <'./kubernetes'>)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (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 < '\'kubernetes\' directory already exist. Should we skip download step and start to create cluster based on it? [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.LogicalNot child: (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 <'Skipping download step.'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <create_cluster> more_env: [] words: [{<create_cluster>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<0>} ) ] spids: [615 638] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [584 600] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [568 581] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'kernel='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'kernel='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'kernel='> name:kernel) op: assign_op.Equal rhs: { (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: [] ) (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 'platform='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'platform='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'platform='> name: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 'platform='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'platform='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'platform='> name: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.ShAssignment left: <Id.Lit_VarLike 'machine='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'machine='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'machine='> name:machine) op: assign_op.Equal rhs: { (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: [] ) (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 'arch='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'arch='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'arch='> name: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 'arch='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'arch='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'arch='> name: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 'arch='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'arch='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'arch='> name: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 'arch='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'arch='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'arch='> name:arch) op: assign_op.Equal rhs: {(DQ <386>)} ) ] 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.'>)}] 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: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'file='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'file='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file='> name:file) op: assign_op.Equal rhs: {<kubernetes.tar.gz>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'release='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'release='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'release='> name:release) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name KUBERNETES_RELEASE> var_name: KUBERNETES_RELEASE suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {(DQ <'release/stable'>)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <set_binary_version> more_env: [] words: [{<set_binary_version>} {(DQ (${ Id.VSub_Name release))}] 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.Unary op_id: Id.BoolUnary_z child: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name KUBERNETES_SKIP_RELEASE_VALIDATION> var_name: KUBERNETES_SKIP_RELEASE_VALIDATION 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.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: {(${ Id.VSub_Name KUBE_VERSION)} right: {(${ Id.VSub_Name KUBE_CI_VERSION_REGEX)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (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 (${ Id.VSub_Name KUBERNETES_CI_RELEASE_URL))} ) ] redirects: [] ) ] spids: [940 957] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(${ Id.VSub_Name KUBE_VERSION)} right: {(${ Id.VSub_Name KUBE_RELEASE_VERSION_REGEX)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Version doesn\'t match regexp'>)}] 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: [976 995] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [921 937] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'kubernetes_tar_url='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'kubernetes_tar_url='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'kubernetes_tar_url='> name:kubernetes_tar_url) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name KUBERNETES_RELEASE_URL) <'/'> (${ Id.VSub_Name KUBE_VERSION) <'/'> (${ Id.VSub_Name file) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'need_download='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'need_download='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'need_download='> name:need_download) op: assign_op.Equal rhs: {<true>} ) ] 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_r child: {(DQ (${ Id.VSub_Name PWD) <'/'> (${ Id.VSub_Name file))} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'downloaded_version='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'downloaded_version='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'downloaded_version='> name: downloaded_version ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.AndOr children: [ (command.Simple blame_tok: <tar> more_env: [] words: [ {<tar>} {<-xzOf>} {(DQ (${ Id.VSub_Name PWD) <'/'> (${ Id.VSub_Name file))} {<'kubernetes/version'>} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <true> more_env: [] words: [{<true>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'Found preexisting '> (${ Id.VSub_Name file) <', release '> (${ Id.VSub_Name downloaded_version) ) } ] 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_GlobDEqual left: {(DQ (${ Id.VSub_Name downloaded_version))} right: {(DQ (${ Id.VSub_Name KUBE_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 <'Using preexisting kubernetes.tar.gz'>)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'need_download='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'need_download='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'need_download='> name: need_download ) op: assign_op.Equal rhs: {<false>} ) ] redirects: [] ) ] spids: [1099 1120] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [1036 1055] ) ] 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 need_download))}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Downloading kubernetes release '> (${ Id.VSub_Name KUBE_VERSION))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' from '> (${ Id.VSub_Name kubernetes_tar_url))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' to '> (${ Id.VSub_Name PWD) <'/'> (${ Id.VSub_Name file))}] redirects: [] do_fork: T ) ] spids: [1139 1148] ) ] 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_e child: {(DQ (${ Id.VSub_Name PWD) <'/kubernetes'>)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (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_f child: {(DQ (${ Id.VSub_Name PWD) <'/kubernetes/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 (${ Id.VSub_Name PWD) <'/kubernetes exists but does not look like a Kubernetes release.'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Aborting!'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<5>} ) ] spids: [1214 1232] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Will also delete preexisting \'kubernetes\' directory.'>)}] redirects: [] do_fork: T ) ] spids: [1187 1203] ) ] 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: {<0>} ) ] spids: [1300 1321] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [1269 1285] ) ] 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 need_download))}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (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>} {<5>} {<--keepalive-time>} {<2>} {(DQ (${ Id.VSub_Name kubernetes_tar_url))} {<-o>} {(DQ (${ Id.VSub_Name file))} ] redirects: [] do_fork: T ) ] spids: [1353 1366] ) (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 kubernetes_tar_url))}] redirects: [] do_fork: T ) ] spids: [1396 1409] ) ] 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: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [1341 1350] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Unpacking kubernetes release '> (${ Id.VSub_Name KUBE_VERSION))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-rf>} {(DQ (${ Id.VSub_Name PWD) <'/kubernetes'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <tar> more_env: [] words: [{<tar>} {<-xzf>} {(${ Id.VSub_Name file)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <download_kube_binaries> more_env: [] words: [{<download_kube_binaries>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <create_cluster> more_env: [] words: [{<create_cluster>}] redirects: [] do_fork: T ) ] )