(command.CommandList children: [ (command.ShAssignment left: <Id.Lit_VarLike 'ATLAS_API_URL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ATLAS_API_URL='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ATLAS_API_URL='> name:ATLAS_API_URL) op: assign_op.Equal rhs: {(SQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ATLAS_UPLOAD_URL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ATLAS_UPLOAD_URL='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ATLAS_UPLOAD_URL='> name:ATLAS_UPLOAD_URL) op: assign_op.Equal rhs: {(SQ <'https://app.vagrantup.com'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'DESCRIPTION='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'DESCRIPTION='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DESCRIPTION='> name:DESCRIPTION) op: assign_op.Equal rhs: {(DQ <'FreeBSD Snapshot Build'>)} ) ] redirects: [] ) (command.ShFunction name_tok: <usage> name: usage body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ (${ Id.VSub_Number 0) <' usage:'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ < '-b box-name -d \'box description\' -f box-to-upload -k api-key -p provider -u user -v version' > ) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <main> name: main body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <getopts> more_env: [] words: [{<getopts>} {(DQ <'b:d:f:k:p:u:v:'>)} {<arg>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name arg))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <b> pattern: (pat.Words words:[{<b>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'BOX='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'BOX='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BOX='> name:BOX) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name OPTARG))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <d> pattern: (pat.Words words:[{<d>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'DESCRIPTION='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'DESCRIPTION='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DESCRIPTION='> name: DESCRIPTION ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name OPTARG))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <f> pattern: (pat.Words words:[{<f>}]) middle: <Id.Right_CasePat _> action: [ (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: {(DQ (${ Id.VSub_Name OPTARG))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <k> pattern: (pat.Words words:[{<k>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'KEY='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KEY='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KEY='> name:KEY) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name OPTARG))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <p> pattern: (pat.Words words:[{<p>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'PROVIDER='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PROVIDER='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PROVIDER='> name: PROVIDER ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name OPTARG))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <u> pattern: (pat.Words words:[{<u>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'USERNAME='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'USERNAME='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'USERNAME='> name: USERNAME ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name OPTARG))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <v> pattern: (pat.Words words:[{<v>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'VERSION='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'VERSION='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'VERSION='> name: VERSION ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name OPTARG))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) 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.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name BOX))} {<-o>} {<-z>} {(DQ (${ Id.VSub_Name FILE))} {<-o>} {<-z>} {(DQ (${ Id.VSub_Name KEY))} {<-o>} {<-z>} {(DQ (${ Id.VSub_Name PROVIDER))} {<-o>} {<-z>} {(DQ (${ Id.VSub_Name USERNAME))} {<-o>} {<-z>} {(DQ (${ Id.VSub_Name VERSION))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<0>} ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [280 356] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'BOXRESULT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'BOXRESULT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BOXRESULT='> name:BOXRESULT) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <'/usr/local/bin/curl'> more_env: [] words: [ {<'/usr/local/bin/curl'>} {<-s>} { (DQ (${ Id.VSub_Name ATLAS_UPLOAD_URL) <'/api/v1/box/'> (${ Id.VSub_Name USERNAME) <'/'> (${ Id.VSub_Name BOX) <'?access_token='> (${ Id.VSub_Name KEY) ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] 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.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ] 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 <'Failed to connect to the API'>)}] redirects: [] do_fork: T ) (command.Sentence child: (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<2>}) terminator: <Id.Op_Semi _> ) ] spids: [402 416] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName BOXRESULT)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} { (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <name> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <':'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') (${ Id.VSub_Name BOX) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (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.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ] 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 <'Creating box: '> (${ Id.VSub_Name BOX))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <'/usr/local/bin/curl'> more_env: [] words: [ {<'/usr/local/bin/curl'>} {<-s>} {(${ Id.VSub_Name ATLAS_UPLOAD_URL) <'/api/v1/boxes'>} {<-X>} {<POST>} {<-d>} {(DQ <'box[name]='> (${ Id.VSub_Name BOX))} {<-d>} {(DQ <'access_token='> (${ Id.VSub_Name KEY))} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <'/usr/local/bin/curl'> more_env: [] words: [ {<'/usr/local/bin/curl'>} {<-s>} {(${ Id.VSub_Name ATLAS_UPLOAD_URL) <'/api/v1/box/'> (${ Id.VSub_Name USERNAME) <'/'> (${ Id.VSub_Name BOX) } {<-X>} {<PUT>} {<-d>} {(DQ <'box[is_private]=false'>)} {<-d>} {(DQ <'access_token='> (${ Id.VSub_Name KEY))} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <'/usr/local/bin/curl'> more_env: [] words: [ {<'/usr/local/bin/curl'>} {<-s>} {(${ Id.VSub_Name ATLAS_UPLOAD_URL) <'/api/v1/box/'> (${ Id.VSub_Name USERNAME) <'/'> (${ Id.VSub_Name BOX) } {<-X>} {<PUT>} {<-d>} {(DQ <'box[description]=\''> (${ Id.VSub_Name DESCRIPTION) <'\''>)} {<-d>} {(DQ <'access_token='> (${ Id.VSub_Name KEY))} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) ] spids: [460 474] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Box already exists'>)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'VERSIONRESULT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'VERSIONRESULT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VERSIONRESULT='> name:VERSIONRESULT) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <'/usr/local/bin/curl'> more_env: [] words: [ {<'/usr/local/bin/curl'>} {<-s>} { (DQ (${ Id.VSub_Name ATLAS_UPLOAD_URL) <'/api/v1/box/'> (${ Id.VSub_Name USERNAME) <'/'> (${ Id.VSub_Name BOX) <'/version/'> (${ Id.VSub_Name VERSION) <'?access_token='> (${ Id.VSub_Name KEY) ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] 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.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ] 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 <'Failed to connect to the API'>)}] redirects: [] do_fork: T ) (command.Sentence child: (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<2>}) terminator: <Id.Op_Semi _> ) ] spids: [655 669] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName VERSIONRESULT)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {(DQ <'version/'> (${ Id.VSub_Name VERSION))}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (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.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ] 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 <'Creating version: '> (${ Id.VSub_Name VERSION))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <'/usr/local/bin/curl'> more_env: [] words: [ {<'/usr/local/bin/curl'>} {<-s>} {(${ Id.VSub_Name ATLAS_UPLOAD_URL) <'/api/v1/box/'> (${ Id.VSub_Name USERNAME) <'/'> (${ Id.VSub_Name BOX) <'/versions'> } {<-X>} {<POST>} {<-d>} {(DQ <'version[version]='> (${ Id.VSub_Name VERSION))} {<-d>} {(DQ <'access_token='> (${ Id.VSub_Name KEY))} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <'/usr/local/bin/curl'> more_env: [] words: [ {<'/usr/local/bin/curl'>} {<-s>} {(${ Id.VSub_Name ATLAS_UPLOAD_URL) <'/api/v1/box/'> (${ Id.VSub_Name USERNAME) <'/'> (${ Id.VSub_Name BOX) <'/version/'> (${ Id.VSub_Name VERSION) } {<-X>} {<PUT>} {<-d>} {(DQ <'version[description]='> (${ Id.VSub_Name DESCRIPTION))} {<-d>} {(DQ <'access_token='> (${ Id.VSub_Name KEY))} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'VERSIONRESULT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'VERSIONRESULT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'VERSIONRESULT='> name: VERSIONRESULT ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <'/usr/local/bin/curl'> more_env: [] words: [ {<'/usr/local/bin/curl'>} {<-s>} { (DQ (${ Id.VSub_Name ATLAS_UPLOAD_URL) <'/api/v1/box/'> (${ Id.VSub_Name USERNAME) <'/'> (${ Id.VSub_Name BOX) <'/version/'> (${ Id.VSub_Name VERSION) <'?access_token='> (${ Id.VSub_Name KEY) ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName VERSIONRESULT)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {(DQ <'version/'> (${ Id.VSub_Name VERSION))}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (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.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ] 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 <'Failed to create version'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] spids: [876 890] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [708 722] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Version already exists'>)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'PROVIDERRESULT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PROVIDERRESULT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROVIDERRESULT='> name:PROVIDERRESULT) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <'/usr/local/bin/curl'> more_env: [] words: [ {<'/usr/local/bin/curl'>} {<-s>} { (DQ (${ Id.VSub_Name ATLAS_UPLOAD_URL) <'/api/v1/box/'> (${ Id.VSub_Name USERNAME) <'/'> (${ Id.VSub_Name BOX) <'/version/'> (${ Id.VSub_Name VERSION) <'/provider/'> (${ Id.VSub_Name PROVIDER) <'?access_token='> (${ Id.VSub_Name KEY) ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] 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.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ] 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 <'Failed to connect to the API'>)}] redirects: [] do_fork: T ) (command.Sentence child: (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<2>}) terminator: <Id.Op_Semi _> ) ] spids: [960 974] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName PROVIDERRESULT)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {(DQ <'provider/'> (${ Id.VSub_Name PROVIDER))}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (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.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ] 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 <'Creating provider: '> (${ Id.VSub_Name PROVIDER))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <'/usr/local/bin/curl'> more_env: [] words: [ {<'/usr/local/bin/curl'>} {<-s>} {(${ Id.VSub_Name ATLAS_UPLOAD_URL) <'/api/v1/box/'> (${ Id.VSub_Name USERNAME) <'/'> (${ Id.VSub_Name BOX) <'/version/'> (${ Id.VSub_Name VERSION) <'/providers'> } {<-X>} {<POST>} {<-d>} {(DQ <'provider[name]='> (${ Id.VSub_Name PROVIDER))} {<-d>} {(DQ <'access_token='> (${ Id.VSub_Name KEY))} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) ] spids: [1013 1027] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Provider already exists'>)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'TOKENRESULT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TOKENRESULT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TOKENRESULT='> name:TOKENRESULT) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <'/usr/local/bin/curl'> more_env: [] words: [ {<'/usr/local/bin/curl'>} {<-s>} { (DQ (${ Id.VSub_Name ATLAS_UPLOAD_URL) <'/api/v1/box/'> (${ Id.VSub_Name USERNAME) <'/'> (${ Id.VSub_Name BOX) <'/version/'> (${ Id.VSub_Name VERSION) <'/provider/'> (${ Id.VSub_Name PROVIDER) <'/upload?access_token='> (${ Id.VSub_Name KEY) ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] 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.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ] 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 <'Failed to get the token from the API'>)}] redirects: [] do_fork: T ) (command.Sentence child: (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<2>}) terminator: <Id.Op_Semi _> ) ] spids: [1140 1154] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name TOKENRESULT)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(DQ <upload_path>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (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.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ] 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 <'No token found from the API'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] spids: [1194 1208] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'TOKEN='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TOKEN='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TOKEN='> name:TOKEN) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName TOKENRESULT)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'s/.*token":"//'>)} {<-e>} {(SQ <'s/.*upload_path":"//'>)} {<-e>} {(SQ <'s/}$//g'>)} {<-e>} {(SQ <'s/"//g'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Uploading to Atlas'>)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'UPLOADRESULT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'UPLOADRESULT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UPLOADRESULT='> name:UPLOADRESULT) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <'/usr/local/bin/curl'> more_env: [] words: [ {<'/usr/local/bin/curl'>} {<-s>} {<-X>} {<PUT>} {<--upload-file>} {(${ Id.VSub_Name FILE)} {(DQ (${ Id.VSub_Name TOKEN))} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <Validating>)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'VALIDRESULT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'VALIDRESULT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VALIDRESULT='> name:VALIDRESULT) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <'/usr/local/bin/curl'> more_env: [] words: [ {<'/usr/local/bin/curl'>} {<-s>} { (DQ (${ Id.VSub_Name ATLAS_UPLOAD_URL) <'/api/v1/box/'> (${ Id.VSub_Name USERNAME) <'/'> (${ Id.VSub_Name BOX) <'/version/'> (${ Id.VSub_Name VERSION) <'/provider/'> (${ Id.VSub_Name PROVIDER) <'?access_token='> (${ Id.VSub_Name KEY) ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'HOSTED_TOKEN='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'HOSTED_TOKEN='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'HOSTED_TOKEN='> name:HOSTED_TOKEN) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName VALIDRESULT)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'s/.*"hosted"://'>)} {<-e>} {(SQ <'s/,.*$//'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } ) ] 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.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} {(${ Id.VSub_Name TOKEN)} {<-a>} {(DQ (${ Id.VSub_Name HOSTED_TOKEN))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <true>)} {<Id.Lit_RBracket ']'>} ] 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 <'Upload failed, try again.'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] spids: [1363 1393] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'Releasing '> (${ Id.VSub_Name VERSION) <' of '> (${ Id.VSub_Name BOX) <' in Atlas'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <'/usr/local/bin/curl'> more_env: [] words: [ {<'/usr/local/bin/curl'>} {<-s>} {(${ Id.VSub_Name ATLAS_UPLOAD_URL) <'/api/v1/box/'> (${ Id.VSub_Name USERNAME) <'/'> (${ Id.VSub_Name BOX) <'/version/'> (${ Id.VSub_Name VERSION) <'/release'> } {<-X>} {<PUT>} {<-d>} {(DQ <'access_token='> (${ Id.VSub_Name KEY))} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <main> more_env: [] words: [{<main>} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] )