(command.CommandList children: [ (C {<Id.KW_Set set>} {<-e>}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<id>} {<-u>}))} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ) (BraceGroup children: [ (command.Simple words: [{<printf>} {(SQ <'%s requires root\\n'>)} {(DQ ($ Id.VSub_Number '$0'))}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] ) ] ) (command.ShFunction name: usage body: (BraceGroup children: [ (command.Simple words: [ {<printf>} {(SQ <'%s: [-r release] [-m mirror] [-s] [-c additional repository] [-a arch]\\n'>)} {(DQ ($ Id.VSub_Number '$0'))} ] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] ) ) (command.ShFunction name: tmp body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TMP) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<mktemp>} {<-d>} { (braced_var_sub token: <Id.VSub_Name TMPDIR> suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {<Id.Lit_Slash '/'> <var> <Id.Lit_Slash '/'> <tmp>} ) ) <'/alpine-docker-XXXXXXXXXX'> } ) ) } spids: [84] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROOTFS) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<mktemp>} {<-d>} { (braced_var_sub token: <Id.VSub_Name TMPDIR> suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {<Id.Lit_Slash '/'> <var> <Id.Lit_Slash '/'> <tmp>} ) ) <'/alpine-docker-rootfs-XXXXXXXXXX'> } ) ) } spids: [102] ) ] ) (C {<trap>} {(DQ <'rm -rf '> ($ Id.VSub_DollarName '$TMP') <' '> ($ Id.VSub_DollarName '$ROOTFS'))} {<EXIT>} {<TERM>} {<INT>} ) ] ) ) (command.ShFunction name: apkv body: (BraceGroup children: [ (command.Pipeline children: [ (C {<curl>} {<-sSL>} {($ Id.VSub_DollarName '$MAINREPO') <'/'> ($ Id.VSub_DollarName '$ARCH') <'/APKINDEX.tar.gz'> } ) (C {<tar>} {<-Oxz>}) (C {<grep>} {<--text>} {(SQ <'^P:apk-tools-static$'>)} {<-A1>}) (C {<tail>} {<-n1>}) (C {<cut>} {<-d> <Id.Lit_Colon ':'>} {<-f2>}) ] negated: F ) ] ) ) (command.ShFunction name: getapk body: (BraceGroup children: [ (command.Pipeline children: [ (C {<curl>} {<-sSL>} {($ Id.VSub_DollarName '$MAINREPO') <'/'> ($ Id.VSub_DollarName '$ARCH') <'/apk-tools-static-'> (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<apkv>})) <.apk> } ) (C {<tar>} {<-xz>} {<-C>} {($ Id.VSub_DollarName '$TMP')} {<'sbin/apk.static'>}) ] negated: F ) ] ) ) (command.ShFunction name: mkbase body: (BraceGroup children: [ (C {($ Id.VSub_DollarName '$TMP') <'/sbin/apk.static'>} {<--repository>} {($ Id.VSub_DollarName '$MAINREPO')} {<--update-cache>} {<--allow-untrusted>} {<--root>} {($ Id.VSub_DollarName '$ROOTFS')} {<--initdb>} {<add>} {<alpine-base>} ) ] ) ) (command.ShFunction name: conf body: (BraceGroup children: [ (command.Simple words: [{<printf>} {(SQ <'%s\\n'>)} {($ Id.VSub_DollarName '$MAINREPO')}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$ROOTFS') <'/etc/apk/repositories'>} ) ] do_fork: T ) (command.Simple words: [{<printf>} {(SQ <'%s\\n'>)} {($ Id.VSub_DollarName '$ADDITIONALREPO')}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$ROOTFS') <'/etc/apk/repositories'>} ) ] do_fork: T ) ] ) ) (command.ShFunction name: pack body: (BraceGroup children: [ (C {<local>} {<id>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:id) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<tar>} {<--numeric-owner>} {<-C>} {($ Id.VSub_DollarName '$ROOTFS')} {<-c>} {<.>} ) (C {<docker>} {<import>} {<->} {<alpine> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName '$REL')} ) ] negated: F ) ) } spids: [309] ) ] ) (C {<docker>} {<tag>} {($ Id.VSub_DollarName '$id')} {<alpine> <Id.Lit_Colon ':'> <latest>}) (C {<docker>} {<run>} {<-i>} {<-t>} {<--rm>} {<alpine>} {<printf>} {(SQ <'alpine:%s with id=%s created!\\n'>)} {($ Id.VSub_DollarName '$REL')} {($ Id.VSub_DollarName '$id')} ) ] ) ) (command.ShFunction name: save body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$SAVE')} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (command.Pipeline children: [ (C {<tar>} {<--numeric-owner>} {<-C>} {($ Id.VSub_DollarName '$ROOTFS')} {<-c>} {<.>}) (command.Simple words: [{<xz>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<rootfs.tar.xz>} ) ] do_fork: T ) ] negated: F ) ] ) ) (command.WhileUntil keyword: <Id.KW_While while> cond: [ (command.Sentence child: (C {<getopts>} {(DQ <'hr:m:sc:a:'>)} {<opt>}) terminator: <Id.Op_Semi _> ) ] body: (command.DoGroup children: [ (command.Case to_match: {($ Id.VSub_DollarName '$opt')} arms: [ (case_arm pat_list: [{<r>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:REL) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$OPTARG')} spids: [447] ) ] ) ] spids: [443 444 451 -1] ) (case_arm pat_list: [{<m>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MIRROR) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$OPTARG')} spids: [458] ) ] ) ] spids: [454 455 462 -1] ) (case_arm pat_list: [{<s>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SAVE) op: assign_op.Equal rhs: {<1>} spids: [469] ) ] ) ] spids: [465 466 473 -1] ) (case_arm pat_list: [{<c>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ADDITIONALREPO) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$OPTARG')} spids: [480] ) ] ) ] spids: [476 477 484 -1] ) (case_arm pat_list: [{<a>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ARCH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$OPTARG')} spids: [491] ) ] ) ] spids: [487 488 495 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [(C {<usage>})] spids: [498 499 505 -1] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:REL) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name REL> suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{<edge>}) ) } spids: [513] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MIRROR) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name MIRROR> suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {<'http:'> <Id.Lit_Slash '/'> <Id.Lit_Slash '/'> <nl.alpinelinux.org> <Id.Lit_Slash '/'> <alpine> } ) ) } spids: [520] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SAVE) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name SAVE> suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{<0>}) ) } spids: [532] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MAINREPO) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$MIRROR') <'/'> ($ Id.VSub_DollarName '$REL') <'/main'>} spids: [539] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ADDITIONALREPO) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$MIRROR') <'/'> ($ Id.VSub_DollarName '$REL') <'/'> (braced_var_sub token: <Id.VSub_Name ADDITIONALREPO> suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{<community>}) ) } spids: [545] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ARCH) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name ARCH> suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<uname>} {<-m>}))} ) ) } spids: [556] ) ] ) (C {<tmp>}) (C {<getapk>}) (C {<mkbase>}) (C {<conf>}) (C {<pack>}) (C {<save>}) ] )