(command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {($ Id.VSub_DollarName '$_Dbg_requires')} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShFunction name: _Dbg_expand_filename body: (BraceGroup children: [ (C {<typeset>} {<-r>} {<Id.Lit_VarLike 'filename='> (DQ ($ Id.VSub_Number '$1'))}) (C {<typeset>} {<Id.Lit_VarLike 'basename='> (DQ (braced_var_sub token: <Id.VSub_Name filename> suffix_op: (suffix_op.Unary tok: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>} ) ) ) } ) (C {<typeset>} {<-x>} {<Id.Lit_VarLike 'dirname='> (DQ (braced_var_sub token: <Id.VSub_Name filename> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) ) ) } ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$dirname')} right: {($ Id.VSub_DollarName '$basename')} ) ) (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName '$filename')} right: {(SQ <'/'>)} ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dirname) op: assign_op.Equal rhs: {(SQ <.>)} spids: [144] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dirname) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name dirname> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {<Id.Lit_Slash '/'>} ) ) } spids: [155] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dirname) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<echo>} {($ Id.VSub_DollarName '$dirname')}) ) } spids: [168] ) ] ) (C {<typeset>} {<long_path>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:long_path) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Subshell child: (command.CommandList children: [ (command.Sentence child: (C {<cd>} {(DQ ($ Id.VSub_DollarName '$dirname'))} ) terminator: <Id.Op_Semi _> ) (C {<pwd>}) ] ) redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] ) ) } spids: [185] ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName '$long_path'))} right: {(SQ <'/'>)} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<echo>} {(DQ <'/'> ($ Id.VSub_DollarName '$basename'))})] spids: [210 228] ) ] else_action: [ (C {<echo>} { (DQ ($ Id.VSub_DollarName '$long_path') <'/'> ($ Id.VSub_DollarName '$basename') ) } ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [183 207] ) ] else_action: [ (C {<echo>} {($ Id.VSub_DollarName '$filename')}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) ] ) ) (C {<typeset>} {<-A>} {<_Dbg_requires>}) (command.ShFunction name: require body: (BraceGroup children: [ (C {<typeset>} {<file>}) (C {<typeset>} {<expanded_file>}) (C {<typeset>} {<source_dir>}) (C {<typeset>} {<orig_dir>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:orig_dir) op: assign_op.Equal rhs: {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<pwd>}))} spids: [313] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:source_dir) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name BASH_SOURCE> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>}) suffix_op: (suffix_op.Unary tok: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) ) } spids: [319] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName '$source_dir')} right: { (braced_var_sub token: <Id.VSub_Name BASH_SOURCE> bracket_op: (bracket_op.ArrayIndex expr: {<Id.Lit_Digits 1>} ) ) } ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<builtin>} {<cd>} {($ Id.VSub_DollarName '$source_dir')})] spids: [331 350] ) ] ) (command.ForEach iter_name: file iter_words: [{(DQ ($ Id.VSub_At '$@'))}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:expanded_file) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<_Dbg_expand_filename>} {(DQ ($ Id.VSub_DollarName '$file'))}) ) } spids: [378] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.Unary op_id: Id.BoolUnary_z child: { (braced_var_sub token: <Id.VSub_Name _Dbg_requires> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$file')} ) ) } ) right: (bool_expr.Unary op_id: Id.BoolUnary_z child: { (braced_var_sub token: <Id.VSub_Name _Dbg_requires> bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName '$expanded_file' ) } ) ) } ) ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<source>} {($ Id.VSub_DollarName '$expanded_file')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: _Dbg_requires index: {($ Id.VSub_DollarName '$file')} ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$expanded_file')} spids: [426] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: _Dbg_requires index: {($ Id.VSub_DollarName '$expanded_file')} ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$expanded_file')} spids: [434] ) ] ) ] spids: [388 418] ) ] ) ] ) ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName '$orig_dir')} ) ) (C {<builtin>} {<cd>} {($ Id.VSub_DollarName '$orig_dir')}) ] ) ] ) ) ] spids: [48 60] ) ] )