(List (If (Com {[LIT_CHARS test]} {[DQ [LIT_CHARS x][VarSub 1]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS x--uninstall]]}) (List (= scope= flags=0 words=[] bindings=[('UNINSTALL', {[LIT_CHARS true]})]) (= scope= flags=0 words=[] bindings=[('SOURCE', {[VarSub 2]})]) (= scope= flags=0 words=[] bindings=[('TARGET', {[VarSub 3]})]) (Com {[LIT_CHARS shift]} {[LIT_CHARS 3]}) ) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('UNINSTALL', {[LIT_CHARS false]})]) (= scope= flags=0 words=[] bindings=[('SOURCE', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('TARGET', {[VarSub 2]})]) (Com {[LIT_CHARS shift]} {[LIT_CHARS 2]}) ) ) (If (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub SOURCE]]}) (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub TARGET]]}) ) (List (Com {[LIT_CHARS echo]} {[LIT_CHARS Usage] [LIT_OTHER ":"]} {[LIT_CHARS install.sh]} {[LIT_OTHER "["] [LIT_CHARS --uninstall] [LIT_OTHER "]"]} {[LIT_CHARS source]} {[LIT_CHARS target]} {[LIT_OTHER "["] [LIT_CHARS install]} {[LIT_CHARS options] [LIT_OTHER "]"]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (FunctionDef do_install [] (List (= scope= flags=0 words=[] bindings=[('SOURCE', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('TARGET', {[VarSub 2]})]) (= scope= flags=0 words=[] bindings=[('PARAMS', {[VarSub 3]})]) (Com {[LIT_CHARS install]} {[LIT_CHARS -p]} {[LIT_CHARS -D]} {[VarSub PARAMS]} {[VarSub SOURCE]} {[VarSub TARGET]}) ) ) (FunctionDef do_uninstall [] (List (= scope= flags=0 words=[] bindings=[('SOURCE', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('TARGET', {[VarSub 2]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -r]} {[VarSub TARGET]}) (If (Com {[LIT_CHARS diff]} {[VarSub SOURCE]} {[VarSub TARGET]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[VarSub TARGET]}) (ElseTrue) (Com {[LIT_CHARS echo]} {[LIT_CHARS WARNING] [LIT_OTHER ":"]} {[LIT_CHARS Skipping]} {[LIT_CHARS uninstall]} {[LIT_CHARS for]} {[VarSub TARGET]} {[LIT_CHARS -]} {[LIT_CHARS versions]} {[LIT_CHARS differ] [LIT_OTHER "!"]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) (ElseTrue) (Com {[LIT_CHARS echo]} {[LIT_CHARS WARNING] [LIT_OTHER ":"]} {[LIT_CHARS Skipping]} {[LIT_CHARS uninstall]} {[LIT_CHARS for]} {[VarSub TARGET]} {[LIT_CHARS -]} {[LIT_CHARS not]} {[LIT_CHARS installed] [LIT_OTHER "!"]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) ) ) (If (Com {[VarSub UNINSTALL]}) (Com {[LIT_CHARS do_uninstall]} {[VarSub SOURCE]} {[VarSub TARGET]}) (ElseTrue) (Com {[LIT_CHARS do_install]} {[VarSub SOURCE]} {[VarSub TARGET]} {[DQ [VarSub *]]}) ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]}) )