(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TOOL_MODE) op: assign_op.Equal rhs: {(diff)} spids: [19] ) ] ) (C {(.)} {(git-mergetool--lib)}) (command.ShFunction name: should_prompt body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prompt_merge) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:42) command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(git)} {(config)} {(--bool)} {(mergetool.prompt)}) (C {(echo)} {(true)}) ] ) ] ) ) } spids: [41] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prompt) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:60) command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(git)} {(config)} {(--bool)} {(difftool.prompt)}) (C {(echo)} {($ Id.VSub_DollarName '$prompt_merge')}) ] ) ] ) ) } spids: [59] ) ] ) (command.If arms: [ (if_arm cond: [ (C {(test)} {(DQ ($ Id.VSub_DollarName '$prompt'))} {(Id.Lit_Equals '=')} {(true)}) ] action: [(C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$GIT_DIFFTOOL_NO_PROMPT'))})] spids: [77 90] ) ] else_action: [(C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$GIT_DIFFTOOL_PROMPT'))})] ) ] ) ) (command.ShFunction name: use_ext_cmd body: (command.BraceGroup children: [(C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$GIT_DIFFTOOL_EXTCMD'))})] ) ) (command.ShFunction name: launch_merge_tool body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MERGED) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [165] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LOCAL) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$2'))} spids: [171] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:REMOTE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$3'))} spids: [177] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BASE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [183] ) ] ) (command.If arms: [ (if_arm cond: [(C {(should_prompt)})] action: [ (C {(printf)} {(DQ (Id.Lit_Other '\\') ("nViewing (%s/%s): '%s'") (Id.Lit_Other '\\') (n))} {(DQ ($ Id.VSub_DollarName '$GIT_DIFF_PATH_COUNTER'))} {(DQ ($ Id.VSub_DollarName '$GIT_DIFF_PATH_TOTAL'))} {(DQ ($ Id.VSub_DollarName '$MERGED'))} ) (command.If arms: [ (if_arm cond: [(C {(use_ext_cmd)})] action: [ (C {(printf)} {(DQ ("Launch '%s' [Y/n]? "))} {(DQ ($ Id.VSub_DollarName '$GIT_DIFFTOOL_EXTCMD'))} ) ] spids: [230 235] ) ] else_action: [ (C {(printf)} {(DQ ("Launch '%s' [Y/n]? "))} {(DQ ($ Id.VSub_DollarName '$merge_tool'))} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(read)} {(ans)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:274) ) ] ) (command.If arms: [ (if_arm cond: [ (C {(test)} {(DQ ($ Id.VSub_DollarName '$ans'))} {(Id.Lit_Equals '=')} {(n)}) ] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:293) ) ] spids: [277 290] ) ] ) ] spids: [198 203] ) ] ) (command.If arms: [ (if_arm cond: [(C {(use_ext_cmd)})] action: [ (C {(export)} {(BASE)}) (C {(eval)} {($ Id.VSub_DollarName '$GIT_DIFFTOOL_EXTCMD')} {(SQ (Token id:Id.Lit_Chars val:'"$LOCAL"' span_id:321))} {(SQ (Token id:Id.Lit_Chars val:'"$REMOTE"' span_id:325))} ) ] spids: [303 308] ) ] else_action: [(C {(run_merge_tool)} {(DQ ($ Id.VSub_DollarName '$merge_tool'))})] ) ] ) ) (command.If arms: [ (if_arm cond: [(command.Pipeline children:[(C {(use_ext_cmd)})] negated:T)] action: [ (command.If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$GIT_DIFF_TOOL'))})] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:merge_tool) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$GIT_DIFF_TOOL'))} spids: [367] ) ] ) ] spids: [353 364] ) ] else_action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:merge_tool) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:378) command_list: (command.CommandList children: [(C {(get_merge_tool)})] ) ) ) } spids: [376] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:385) ) ] ) ] ) ] spids: [344 350] ) ] ) (command.If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$GIT_DIFFTOOL_DIRDIFF'))})] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LOCAL) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [406] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:REMOTE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$2'))} spids: [412] ) ] ) (C {(run_merge_tool)} {(DQ ($ Id.VSub_DollarName '$merge_tool'))} {(false)}) ] spids: [393 403] ) ] else_action: [ (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:433) cond: [(C {(test)} {($ Id.VSub_Pound '$#')} {(-gt)} {(6)})] body: (command.DoGroup children: [ (C {(launch_merge_tool)} {(DQ ($ Id.VSub_Number '$1'))} {(DQ ($ Id.VSub_Number '$2'))} {(DQ ($ Id.VSub_Number '$5'))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:status) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [462] ) ] ) (command.If arms: [ (if_arm cond: [(C {(test)} {($ Id.VSub_DollarName '$status')} {(-ge)} {(126)})] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:488) arg_word: {($ Id.VSub_DollarName '$status')} ) ] spids: [466 477] ) ] ) (command.If arms: [ (if_arm cond: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(test)} {(DQ ($ Id.VSub_DollarName '$status'))} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(0)} ) (C {(test)} {(DQ ($ Id.VSub_DollarName '$GIT_DIFFTOOL_TRUST_EXIT_CODE'))} {(Id.Lit_Equals '=')} {(true)} ) ] ) ] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:527) arg_word: {($ Id.VSub_DollarName '$status')} ) ] spids: [497 524] ) ] ) (C {(shift)} {(7)}) ] ) ) ] ) (command.ControlFlow token:(Token id:Id.ControlFlow_Exit val:exit span_id:545) arg_word:{(0)}) ] )