(command.CommandList children: [ (command.ShAssignment left: <Id.Lit_VarLike 'OPTIONS_KEEPDASHDASH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'OPTIONS_KEEPDASHDASH='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'OPTIONS_KEEPDASHDASH='> name: OPTIONS_KEEPDASHDASH ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'OPTIONS_STUCKLONG='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'OPTIONS_STUCKLONG='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTIONS_STUCKLONG='> name:OPTIONS_STUCKLONG) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'OPTIONS_SPEC='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'OPTIONS_SPEC='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTIONS_SPEC='> name:OPTIONS_SPEC) op: assign_op.Equal rhs: { (DQ <'git quiltimport [options]\n'> <'--\n'> <'n,dry-run dry run\n'> <'author= author name and email address for patches without any\n'> <'patches= path to the quilt patches\n'> <'series= path to the quilt series file\n'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SUBDIRECTORY_ON='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SUBDIRECTORY_ON='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SUBDIRECTORY_ON='> name:SUBDIRECTORY_ON) op: assign_op.Equal rhs: {<Yes>} ) ] redirects: [] ) (command.Simple blame_tok: <.> more_env: [] words: [{<.>} {<git-sh-setup>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'dry_run='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dry_run='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dry_run='> name:dry_run) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'quilt_author='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'quilt_author='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'quilt_author='> name:quilt_author) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {($ Id.VSub_Pound '#')} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 1))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <--author> pattern: (pat.Words words:[{<--author>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'quilt_author='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'quilt_author='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'quilt_author='> name: quilt_author ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-n> pattern: (pat.Words words:[{<-n>} {<--dry-run>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'dry_run='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dry_run='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dry_run='> name:dry_run) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--patches> pattern: (pat.Words words:[{<--patches>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'QUILT_PATCHES='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'QUILT_PATCHES='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'QUILT_PATCHES='> name: QUILT_PATCHES ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--series> pattern: (pat.Words words:[{<--series>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'QUILT_SERIES='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'QUILT_SERIES='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'QUILT_SERIES='> name: QUILT_SERIES ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--> pattern: (pat.Words words:[{<-->}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Break break>) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName quilt_author))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.ShAssignment left: <Id.Lit_VarLike 'quilt_author_name='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'quilt_author_name='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'quilt_author_name='> name: quilt_author_name ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <expr> more_env: [] words: [ {<expr>} {(DQ <z> ($ Id.VSub_DollarName quilt_author))} {<Id.Lit_Colon ':'>} {(SQ <'z\\(.*[^ ]\\) *<.*'>)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'quilt_author_email='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'quilt_author_email='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'quilt_author_email='> name: quilt_author_email ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <expr> more_env: [] words: [ {<expr>} {(DQ <z> ($ Id.VSub_DollarName quilt_author))} {<Id.Lit_Colon ':'>} {(SQ <'.*<\\([^>]*\\)'>)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(SQ )} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName quilt_author_name))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(SQ )} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName quilt_author_email))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <die> more_env: [] words: [{<die>} {(DQ <'malformed --author parameter'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DPipe _>] ) ] spids: [150 164] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name QUILT_PATCHES> var_name: QUILT_PATCHES suffix_op: (suffix_op.Unary op:<Id.VTest_ColonEquals _> arg_word:{<patches>}) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-d>} {(DQ ($ Id.VSub_DollarName QUILT_PATCHES))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'The '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ($ Id.VSub_DollarName QUILT_PATCHES) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' directory does not exist.'> ) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [255 271] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name QUILT_SERIES> var_name: QUILT_SERIES suffix_op: (suffix_op.Unary op: <Id.VTest_ColonEquals _> arg_word: {($ Id.VSub_DollarName QUILT_PATCHES) <Id.Lit_Slash '/'> <series>} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-e>} {(DQ ($ Id.VSub_DollarName QUILT_SERIES))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'The '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ($ Id.VSub_DollarName QUILT_SERIES) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' file does not exist.'> ) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [305 321] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'tmp_dir='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tmp_dir='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tmp_dir='> name:tmp_dir) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName GIT_DIR)) <'/rebase-apply'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'tmp_msg='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tmp_msg='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tmp_msg='> name:tmp_msg) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName tmp_dir) <'/msg'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'tmp_patch='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tmp_patch='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tmp_patch='> name:tmp_patch) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName tmp_dir) <'/patch'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'tmp_info='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tmp_info='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tmp_info='> name:tmp_info) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName tmp_dir) <'/info'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'commit='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'commit='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'commit='> name:commit) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<rev-parse>} {<HEAD>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {($ Id.VSub_DollarName tmp_dir)}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<2>}) ] ops: [<Id.Op_DPipe _>] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<patch_name>} {<level>} {<garbage>}] redirects: [(Redir op:<Id.Redir_LessAnd '<&'> loc:(redir_loc.Fd fd:0) arg:{<3>})] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName patch_name))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )} {(SQ <'#'>) <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Continue continue>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName level))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-p> pattern: (pat.Words words:[{<-p> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )} {(SQ <'#'>) <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'level='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'level='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'level='> name:level) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'unable to parse patch level, ignoring it.'>)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'level='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'level='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'level='> name:level) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName garbage))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )} {(SQ <'#'>) <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'trailing garbage found in series file: '> ($ Id.VSub_DollarName garbage) ) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} { (DQ ($ Id.VSub_DollarName QUILT_PATCHES) <'/'> ($ Id.VSub_DollarName patch_name) ) } {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ ($ Id.VSub_DollarName patch_name) <' doesn\'t exist. Skipping.'>)} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] spids: [522 540] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName patch_name)}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<mailinfo>} {(DQ ($ Id.VSub_DollarName tmp_msg))} {(DQ ($ Id.VSub_DollarName tmp_patch))} ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: { (DQ ($ Id.VSub_DollarName QUILT_PATCHES) <'/'> ($ Id.VSub_DollarName patch_name) ) } ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName tmp_info))} ) ] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<3>}) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-s>} {(DQ ($ Id.VSub_DollarName tmp_patch))}] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Patch is empty. Was it split wrong?'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'GIT_AUTHOR_NAME='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'GIT_AUTHOR_NAME='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'GIT_AUTHOR_NAME='> name: GIT_AUTHOR_NAME ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-ne>} {(SQ <'s/Author: //p'>)} {(DQ ($ Id.VSub_DollarName tmp_info))} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'GIT_AUTHOR_EMAIL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'GIT_AUTHOR_EMAIL='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'GIT_AUTHOR_EMAIL='> name: GIT_AUTHOR_EMAIL ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-ne>} {(SQ <'s/Email: //p'>)} {(DQ ($ Id.VSub_DollarName tmp_info))} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<GIT_AUTHOR_NAME>} {<GIT_AUTHOR_EMAIL>}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName GIT_AUTHOR_EMAIL))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName GIT_AUTHOR_NAME))}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName quilt_author))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Sentence child: (command.ShAssignment left: <Id.Lit_VarLike 'GIT_AUTHOR_NAME='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'GIT_AUTHOR_NAME='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'GIT_AUTHOR_NAME='> name: GIT_AUTHOR_NAME ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName quilt_author_name))} ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment left: <Id.Lit_VarLike 'GIT_AUTHOR_EMAIL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'GIT_AUTHOR_EMAIL='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'GIT_AUTHOR_EMAIL='> name: GIT_AUTHOR_EMAIL ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName quilt_author_email))} ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) ] spids: [692 706] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName dry_run))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'No author found in '> ($ Id.VSub_DollarName patch_name))} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment left: <Id.Lit_VarLike 'GIT_AUTHOR_NAME='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'GIT_AUTHOR_NAME='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'GIT_AUTHOR_NAME='> name: GIT_AUTHOR_NAME ) op: assign_op.Equal rhs: {(DQ <dry-run-not-found>)} ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment left: <Id.Lit_VarLike 'GIT_AUTHOR_EMAIL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'GIT_AUTHOR_EMAIL='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'GIT_AUTHOR_EMAIL='> name: GIT_AUTHOR_EMAIL ) op: assign_op.Equal rhs: {(DQ <dry-run-not-found>)} ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) ] spids: [723 736] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'No author found in '> ($ Id.VSub_DollarName patch_name))} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <--->)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName tmp_msg)}] redirects: [] do_fork: T ) (command.Sentence child: (command.Simple blame_tok: <printf> more_env: [] words: [{<printf>} {(DQ <'Author: '>)}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<patch_author>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName patch_author))}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.ShAssignment left: <Id.Lit_VarLike 'patch_author_name='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'patch_author_name='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'patch_author_name='> name: patch_author_name ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <expr> more_env: [] words: [ {<expr>} {(DQ <z> ($ Id.VSub_DollarName patch_author))} {<Id.Lit_Colon ':'>} {(SQ <'z\\(.*[^ ]\\) *<.*'>)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'patch_author_email='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'patch_author_email='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'patch_author_email='> name: patch_author_email ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <expr> more_env: [] words: [ {<expr>} {(DQ <z> ($ Id.VSub_DollarName patch_author))} {<Id.Lit_Colon ':'>} {(SQ <'.*<\\([^>]*\\)'>)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(SQ )} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName patch_author_name))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(SQ )} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName patch_author_email))} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'GIT_AUTHOR_NAME='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'GIT_AUTHOR_NAME='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'GIT_AUTHOR_NAME='> name: GIT_AUTHOR_NAME ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName patch_author_name))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'GIT_AUTHOR_EMAIL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'GIT_AUTHOR_EMAIL='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'GIT_AUTHOR_EMAIL='> name: GIT_AUTHOR_EMAIL ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName patch_author_email))} ) ] redirects: [] ) ] ops: [ <Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _> ] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'GIT_AUTHOR_DATE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'GIT_AUTHOR_DATE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'GIT_AUTHOR_DATE='> name: GIT_AUTHOR_DATE ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-ne>} {(SQ <'s/Date: //p'>)} {(DQ ($ Id.VSub_DollarName tmp_info))} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SUBJECT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SUBJECT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SUBJECT='> name:SUBJECT) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-ne>} {(SQ <'s/Subject: //p'>)} {(DQ ($ Id.VSub_DollarName tmp_info))} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<GIT_AUTHOR_DATE>} {<SUBJECT>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName SUBJECT))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'SUBJECT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SUBJECT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SUBJECT='> name:SUBJECT) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName patch_name)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-e>} {(SQ <'s/.patch$//'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) ] spids: [941 955] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName dry_run))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<apply>} {<--index>} {<-C1>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name level> var_name: level suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {(DQ ($ Id.VSub_DollarName level))} ) right: <Id.Right_DollarBrace '}'> ) } {(DQ ($ Id.VSub_DollarName tmp_patch))} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'tree='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tree='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tree='> name:tree) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<write-tree>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'commit='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'commit='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'commit='> name:commit) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ ($ Id.VSub_DollarName SUBJECT))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <cat> more_env: [] words: [ {<cat>} {(DQ ($ Id.VSub_DollarName tmp_msg))} ] redirects: [] do_fork: T ) ] ) right: <Id.Right_Subshell _> redirects: [] ) (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<commit-tree>} {($ Id.VSub_DollarName tree)} {<-p>} {($ Id.VSub_DollarName commit)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<update-ref>} {<-m>} {(DQ <'quiltimport: '> ($ Id.VSub_DollarName patch_name))} {<HEAD>} {($ Id.VSub_DollarName commit)} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<4>} ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DPipe _>] ) ] spids: [980 994] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '3<'> loc: (redir_loc.Fd fd:3) arg: {(DQ ($ Id.VSub_DollarName QUILT_SERIES))} ) ] ) (command.AndOr children: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-rf>} {($ Id.VSub_DollarName tmp_dir)}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<5>}) ] ops: [<Id.Op_DPipe _>] ) ] )