(command.CommandList children: [ (command.ShFunction name: _hash body: (BraceGroup children: [ (C {<echo>} {($ Id.VSub_Dollar '$$') <.> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<date>} {<Id.Lit_Other '+'> (SQ <'%s.%N'>)}) ) <.> ($ Id.VSub_DollarName '$RANDOM') } ) ] ) ) (command.ShFunction name: 'balls::server' body: (BraceGroup children: [ (C {<balls> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <load_app>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:http_sock) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$BALLS_TMP') <'/balls.http.'> ($ Id.VSub_Dollar '$$') <.sock> } spids: [45] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {<-p>} {($ Id.VSub_DollarName '$http_sock')} {<Id.Lit_RBracket ']'>} ) (C {<mkfifo>} {($ Id.VSub_DollarName '$http_sock')}) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [(command.Sentence child:(C {<true>}) terminator:<Id.Op_Semi _>)] ) body: (command.DoGroup children: [ (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName '$http_sock')}) (C {<nc>} {<-l>} {<-p>} {($ Id.VSub_DollarName '$BALLS_PORT')}) (command.Subshell child: (command.CommandList children: [ (C {<http> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <parse_request>}) (command.Simple words: [{<balls> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <route>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$http_sock')} ) ] do_fork: T ) ] ) ) ] negated: F ) ] ) ) ] ) ) (command.ShFunction name: cleanup body: (BraceGroup children: [ (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$headers_sock'))} {(DQ ($ Id.VSub_DollarName '$http_sock'))} ) ] ) ) (C {<trap>} {(SQ <'cleanup; exit'>)} {<INT>}) (command.ShFunction name: 'balls::load_app' body: (BraceGroup children: [(C {<.>} {($ Id.VSub_DollarName '$BALLS_ACTIONS') <'/'> <Id.Lit_Star '*'> <.sh>})] ) ) ] )