(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.ShFunction keyword: <Id.KW_Function function> name_tok: <check_for_ppa> name: check_for_ppa body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'repo='> (DQ ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-qsw>} {($ Id.VSub_DollarName repo)} {<'/etc/apt/sources.list'>} {<'/etc/apt/sources.list.d/'> <Id.Lit_Star '*'>} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <package_status> name: package_status body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'pkgname='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<pkgstatus>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'pkgstatus='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pkgstatus='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pkgstatus='> name:pkgstatus) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <dpkg-query> more_env: [] words: [ {<dpkg-query>} {<-W>} {<--showformat> <Id.Lit_Equals '='> (SQ <'${Status}\\n'>)} {(DQ (${ Id.VSub_Name pkgname))} ] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ (${ Id.VSub_Name pkgstatus))} right: {(DQ <'install ok installed'>)} ) 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 <'Missing package '> (${ Id.VSub_Name pkgname))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sudo> more_env: [] words: [ {<sudo>} {<apt-get>} {<--force-yes>} {<--yes>} {<install>} {(${ Id.VSub_Name pkgname)} ] redirects: [] do_fork: T ) ] spids: [136 155] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <gather_installation_reqs> name: gather_installation_reqs 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.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <check_for_ppa> more_env: [] words: [{<check_for_ppa>} {(DQ <juju>)}] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'... Detected missing dependencies.. running'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'... add-apt-repository ppa:juju/stable'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sudo> more_env: [] words: [ {<sudo>} {<add-apt-repository>} {<-y>} {<ppa> <Id.Lit_Colon ':'> <'juju/stable'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sudo> more_env: [] words: [{<sudo>} {<apt-get>} {<update>}] redirects: [] do_fork: T ) ] spids: [197 208] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <package_status> more_env: [] words: [{<package_status>} {(SQ <juju>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <package_status> more_env: [] words: [{<package_status>} {(SQ <charm-tools>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) ] )