(command.CommandList children: [ (command.CommandList children: [ (command.Sentence child: (C {<Id.KW_Set set>} {<-eo>} {<pipefail>}) terminator: <Id.Op_Semi _> ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr:(bool_expr.WordTest w:{($ Id.VSub_DollarName '$TRACE')})) (C {<Id.KW_Set set>} {<-x>}) ] ) ] ) (command.ShFunction name: ensure-environment body: (command.BraceGroup children: [ (C {<local>} {<FREE_MEMORY>}) (C {<echo>} { (DQ <'Preparing to install '> ($ Id.VSub_DollarName '$DOKKU_TAG') <' from '> ($ Id.VSub_DollarName '$DOKKU_REPO') <...> ) } ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [{<command>} {<-v>} {<apt-get>}] redirects: [ (redir.Redir op: <Id.Redir_AndGreat '&>'> fd: -1 arg_word: {</dev/null>} ) ] ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] action: [ (C {<echo>} { (DQ < 'This installation script requires apt-get. For manual installation instructions, consult http://dokku.viewdocs.io/dokku/advanced-installation/' > ) } ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [72 86] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [{<hostname>} {<-f>}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {</dev/null>} ) (redir.Redir op:<Id.Redir_GreatAnd '2>&'> fd:2 arg_word:{<1>}) ] ) (command.BraceGroup children: [ (C {<echo>} { (DQ < 'This installation script requires that you have a hostname set for the instance. Please set a hostname for 127.0.0.1 in your /etc/hosts' > ) } ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FREE_MEMORY) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {<grep>} {<MemTotal>} {</proc/meminfo>}) (C {<awk>} {(SQ <'{print $2}'>)}) ] negated: F ) ] ) ) } spids: [137] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_lt left: {(DQ ($ Id.VSub_DollarName '$FREE_MEMORY'))} right: {<1003600>} ) ) terminator: <Id.Op_Semi _> ) ] action: [ (C {<echo>} { (DQ < 'For dokku to build containers, it is strongly suggested that you have 1024 megabytes or more of free memory' > ) } ) (C {<echo>} { (DQ < 'If necessary, please consult this document to setup swap: http://dokku.viewdocs.io/dokku/advanced-installation/#vms-with-less-than-1gb-of-memory' > ) } ) ] spids: [155 170] ) ] ) ] ) ) (command.ShFunction name: install-requirements body: (command.BraceGroup children: [ (C {<echo>} {(DQ <'--> Ensuring we have the proper dependencies'>)}) (command.Simple words: [{<apt-get>} {<update>} {<-qq>}] redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{</dev/null>})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [(C {<lsb_release>} {<-sr>})] ) ) } right: {(DQ <12.04>)} ) ) terminator: <Id.Op_Semi _> ) ] action: [(C {<apt-get>} {<-qq>} {<-y>} {<install>} {<python-software-properties>})] spids: [217 236] ) ] ) ] ) ) (command.ShFunction name: install-dokku 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: {($ Id.VSub_DollarName '$DOKKU_BRANCH')} ) ) terminator: <Id.Op_Semi _> ) ] action: [ (C {<install-dokku-from-source>} {(DQ <origin/> ($ Id.VSub_DollarName '$DOKKU_BRANCH'))} ) ] spids: [262 273] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName '$DOKKU_TAG')} ) ) terminator: <Id.Op_Semi _> ) ] action: [ (C {<local>} {<Id.Lit_VarLike 'DOKKU_SEMVER='> (DQ (braced_var_sub token: <Id.VSub_Name DOKKU_TAG> suffix_op: (suffix_op.PatSub pat:{<v>} replace_mode:Id.Lit_Slash) ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:major) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$DOKKU_SEMVER'))}) (C {<awk>} {(SQ <'{split($0,a,"."); print a[1]}'>)}) ] negated: F ) ] ) ) } spids: [311] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:minor) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$DOKKU_SEMVER'))}) (C {<awk>} {(SQ <'{split($0,a,"."); print a[2]}'>)}) ] negated: F ) ] ) ) } spids: [329] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:patch) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$DOKKU_SEMVER'))}) (C {<awk>} {(SQ <'{split($0,a,"."); print a[3]}'>)}) ] negated: F ) ] ) ) } spids: [347] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_eq left: {(DQ ($ Id.VSub_DollarName '$major'))} right: {(DQ <0>)} ) ) (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_eq left: {(DQ ($ Id.VSub_DollarName '$minor'))} right: {(DQ <3>)} ) ) (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_ge left: {(DQ ($ Id.VSub_DollarName '$patch'))} right: {(DQ <13>)} ) ) ] ) terminator: <Id.Op_Semi _> ) ] action: [ (C {<install-dokku-from-package>} {(DQ ($ Id.VSub_DollarName '$DOKKU_SEMVER'))} ) (C {<echo>} {(DQ <'--> Running post-install dependency installation'>)}) (C {<dokku>} {<plugins-install-dependencies>}) ] spids: [370 419] ) (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_eq left: {(DQ ($ Id.VSub_DollarName '$major'))} right: {(DQ <0>)} ) ) (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_ge left: {(DQ ($ Id.VSub_DollarName '$minor'))} right: {(DQ <4>)} ) ) (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_ge left: {(DQ ($ Id.VSub_DollarName '$patch'))} right: {(DQ <0>)} ) ) ] ) terminator: <Id.Op_Semi _> ) ] action: [ (C {<install-dokku-from-package>} {(DQ ($ Id.VSub_DollarName '$DOKKU_SEMVER'))} ) (C {<echo>} {(DQ <'--> Running post-install dependency installation'>)}) (C {<sudo>} {<-E>} {<dokku>} {<plugin> <Id.Lit_Other ':'> <install-dependencies>} {<--core>} ) ] spids: [445 494] ) ] else_action: [ (C {<install-dokku-from-source>} {(DQ ($ Id.VSub_DollarName '$DOKKU_TAG'))}) ] ) ] spids: [284 295] ) ] else_action: [ (C {<install-dokku-from-package>}) (C {<echo>} {(DQ <'--> Running post-install dependency installation'>)}) (C {<sudo>} {<-E>} {<dokku>} {<plugin> <Id.Lit_Other ':'> <install-dependencies>} {<--core>} ) ] ) ] ) ) (command.ShFunction name: install-dokku-from-source body: (command.BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'DOKKU_CHECKOUT='> (DQ ($ Id.VSub_Number '$1'))}) (C {<apt-get>} {<-qq>} {<-y>} {<install>} {<git>} {<make>} {<software-properties-common>}) (C {<cd>} {</root>}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.Unary op_id:Id.BoolUnary_d child:{</root/dokku>}) ) ) terminator: <Id.Op_Semi _> ) ] action: [ (C {<git>} {<clone>} {(DQ ($ Id.VSub_DollarName '$DOKKU_REPO'))} {</root/dokku>}) ] spids: [604 617] ) ] ) (C {<cd>} {</root/dokku>}) (C {<git>} {<fetch>} {<origin>}) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName '$DOKKU_CHECKOUT')} ) ) (C {<git>} {<checkout>} {(DQ ($ Id.VSub_DollarName '$DOKKU_CHECKOUT'))}) ] ) (C {<make>} {<install>}) ] ) ) (command.ShFunction name: install-dokku-from-package body: (command.BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'DOKKU_CHECKOUT='> (DQ ($ Id.VSub_Number '$1'))}) (C {<local>} {<Id.Lit_VarLike 'NO_INSTALL_RECOMMENDS='> (braced_var_sub token: <Id.VSub_Name DOKKU_NO_INSTALL_RECOMMENDS> suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonEquals arg_word:{(DQ )}) ) } ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName '$DOKKU_DOCKERFILE')} ) ) terminator: <Id.Op_Semi _> ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NO_INSTALL_RECOMMENDS) op: assign_op.Equal rhs: {(DQ <' --no-install-recommends '>)} spids: [714] ) ] ) ] spids: [700 711] ) ] ) (C {<echo>} {(DQ <'--> Initial apt-get update'>)}) (command.Simple words: [{<apt-get>} {<update>} {<-qq>}] redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{</dev/null>})] ) (C {<apt-get>} {<-qq>} {<-y>} {<install>} {<apt-transport-https>}) (C {<echo>} {(DQ <'--> Installing docker'>)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [(C {<uname>} {<-r>}) (C {<grep>} {<-q>} {<linode>})] negated: F ) terminator: <Id.Op_Semi _> ) ] action: [ (C {<echo>} { (DQ < '--> NOTE: Using Linode? Docker might complain about missing AUFS support.' > ) } ) (C {<echo>} { (DQ <' See http://dokku.viewdocs.io/dokku/getting-started/install/linode/'> ) } ) (C {<echo>} {(DQ <' Installation will continue in 10 seconds.'>)}) (C {<sleep>} {<10>}) ] spids: [761 776] ) ] ) (command.Pipeline children: [ (C {<wget>} {<-nv>} {<-O>} {<->} {<https> <Id.Lit_Other ':'> <//get.docker.com/>}) (C {<sh>}) ] negated: F ) (C {<echo>} {(DQ <'--> Installing dokku'>)}) (command.Pipeline children: [ (C {<wget>} {<-nv>} {<-O>} {<->} {<https> <Id.Lit_Other ':'> <//packagecloud.io/gpg.key>}) (C {<apt-key>} {<add>} {<->}) ] negated: F ) (command.Pipeline children: [ (C {<echo>} {(DQ <'deb https://packagecloud.io/dokku/dokku/ubuntu/ trusty main'>)}) (C {<tee>} {</etc/apt/sources.list.d/dokku.list>}) ] negated: F ) (command.Simple words: [{<apt-get>} {<update>} {<-qq>}] redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{</dev/null>})] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName '$DOKKU_VHOST_ENABLE')} ) ) (command.Pipeline children: [ (C {<echo>} { (DQ <'dokku dokku/vhost_enable boolean '> ($ Id.VSub_DollarName '$DOKKU_VHOST_ENABLE') ) } ) (C {<sudo>} {<debconf-set-selections>}) ] negated: F ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName '$DOKKU_WEB_CONFIG')} ) ) (command.Pipeline children: [ (C {<echo>} { (DQ <'dokku dokku/web_config boolean '> ($ Id.VSub_DollarName '$DOKKU_WEB_CONFIG') ) } ) (C {<sudo>} {<debconf-set-selections>}) ] negated: F ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName '$DOKKU_HOSTNAME')} ) ) (command.Pipeline children: [ (C {<echo>} {(DQ <'dokku dokku/hostname string '> ($ Id.VSub_DollarName '$DOKKU_HOSTNAME'))} ) (C {<sudo>} {<debconf-set-selections>}) ] negated: F ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName '$DOKKU_SKIP_KEY_FILE')} ) ) (command.Pipeline children: [ (C {<echo>} { (DQ <'dokku dokku/skip_key_file boolean '> ($ Id.VSub_DollarName '$DOKKU_SKIP_KEY_FILE') ) } ) (C {<sudo>} {<debconf-set-selections>}) ] negated: F ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName '$DOKKU_KEY_FILE')} ) ) (command.Pipeline children: [ (C {<echo>} {(DQ <'dokku dokku/key_file string '> ($ Id.VSub_DollarName '$DOKKU_KEY_FILE'))} ) (C {<sudo>} {<debconf-set-selections>}) ] negated: F ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName '$DOKKU_CHECKOUT')} ) ) terminator: <Id.Op_Semi _> ) ] action: [ (C {<apt-get>} {<-qq>} {<-y>} {($ Id.VSub_DollarName '$NO_INSTALL_RECOMMENDS')} {<install>} {(DQ <'dokku='> ($ Id.VSub_DollarName '$DOKKU_CHECKOUT'))} ) ] spids: [1000 1011] ) ] else_action: [ (C {<apt-get>} {<-qq>} {<-y>} {($ Id.VSub_DollarName '$NO_INSTALL_RECOMMENDS')} {<install>} {<dokku>} ) ] ) ] ) ) (command.ShFunction name: main body: (command.BraceGroup children: [ (C {<export>} {<Id.Lit_VarLike 'DEBIAN_FRONTEND='> <noninteractive>}) (C {<export>} {<Id.Lit_VarLike 'DOKKU_REPO='> (braced_var_sub token: <Id.VSub_Name DOKKU_REPO> suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {(DQ <'https://github.com/dokku/dokku.git'>)} ) ) } ) (C {<ensure-environment>}) (C {<install-requirements>}) (C {<install-dokku>}) ] ) ) (C {<main>} {(DQ ($ Id.VSub_At '$@'))}) ] )