TODO #!/bin/bash # Author: Alexander Epstein https://github.com/alexanderepstein declare -a tools = '('currency stocks weather crypt movies taste short geo cheat ytview cloudup qrify) global all := '"1'" proc askUninstall { if [[ -f /usr/local/bin/$1 ]]{ echo -n "Do you wish to uninstall $1 [Y/n]: " read -r answer if [[ "$answer" == "Y" || "$answer" == "y" ]] { cd $1 || return 1 echo -n "Removing $1: " rm -f /usr/local/bin/$1 > /dev/null !2 > !1 || do { echo "Failed" ; echo "Error removing file, try running uninstall script as sudo"; exit 1; } echo "Success" cd .. || return 1 } else { global all := '"0'" } unset answer } } proc removeManpage { rm -f /usr/local/man/man1/bash-snippets.1 !2 > !1 || do { echo "Failed" ; echo "Error removing file, try running uninstall script as sudo"; exit 1; } } for tool in [$(tools[@])] { askUninstall $tool || exit 1 } if [[ $all == "1" ]]{ removeManpage || exit 1;} (CommandList children: [ (Assignment keyword: Assign_Declare flags: ["'-a'"] pairs: [ (assign_pair lhs: (LhsName name:tools) op: Equal rhs: { (ArrayLiteralPart words: [ {(currency)} {(stocks)} {(weather)} {(crypt)} {(movies)} {(taste)} {(short)} {(geo)} {(cheat)} {(ytview)} {(cloudup)} {(qrify)} ] ) } spids: [10] ) ] spids: [6] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:all) op:Equal rhs:{(DQ (1))} spids:[37])] spids: [37] ) (FuncDef name: askUninstall body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolUnary op_id: BoolUnary_f child: {(/usr/local/bin/) ($ VSub_Number "$1")} ) ) terminator: ) ] action: [ (C {(echo)} {(-n)} {(DQ ("Do you wish to uninstall ") ($ VSub_Number "$1") (" [Y/n]: "))} ) (C {(read)} {(-r)} {(answer)}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalOr left: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name "$answer"))} right: {(DQ (Y))} ) right: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name "$answer"))} right: {(DQ (y))} ) ) ) terminator: ) ] action: [ (AndOr children: [ (C {(cd)} {($ VSub_Number "$1")}) (ControlFlow token: arg_word: {(1)} ) ] op_id: Op_DPipe ) (C {(echo)} {(-n)} {(DQ ("Removing ") ($ VSub_Number "$1") (": "))}) (AndOr children: [ (SimpleCommand words: [{(rm)} {(-f)} {(/usr/local/bin/) ($ VSub_Number "$1")}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(/dev/null)} spids: [143] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [147] ) ] ) (BraceGroup children: [ (Sentence child: (C {(echo)} {(DQ (Failed))}) terminator: ) (Sentence child: (C {(echo)} { (DQ ( "Error removing file, try running uninstall script as sudo" ) ) } ) terminator: ) (Sentence child: (C {(exit)} {(1)}) terminator: ) ] spids: [152] ) ] op_id: Op_DPipe ) (C {(echo)} {(DQ (Success))}) (AndOr children: [ (C {(cd)} {(..)}) (ControlFlow token: arg_word: {(1)} ) ] op_id: Op_DPipe ) ] spids: [-1 111] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:all) op: Equal rhs: {(DQ (0))} spids: [198] ) ] spids: [198] ) ] spids: [195 204] ) (C {(unset)} {(answer)}) ] spids: [-1 61] ) ] spids: [-1 212] ) ] spids: [47] ) spids: [43 46] ) (FuncDef name: removeManpage body: (BraceGroup children: [ (AndOr children: [ (SimpleCommand words: [{(rm)} {(-f)} {(/usr/local/man/man1/bash-snippets.1)}] redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[230])] ) (BraceGroup children: [ (Sentence child: (C {(echo)} {(DQ (Failed))}) terminator: ) (Sentence child: (C {(echo)} {(DQ ("Error removing file, try running uninstall script as sudo"))}) terminator: ) (Sentence child:(C {(exit)} {(1)}) terminator:) ] spids: [235] ) ] op_id: Op_DPipe ) ] spids: [221] ) spids: [217 220] ) (ForEach iter_name: tool iter_words: [ { (DQ (BracedVarSub token: bracket_op: (WholeArray op_id:Lit_At) spids: [269 274] ) ) } ] do_arg_iter: False body: (DoGroup children: [ (AndOr children: [(C {(askUninstall)} {($ VSub_Name "$tool")}) (C {(exit)} {(1)})] op_id: Op_DPipe ) ] spids: [277 290] ) spids: [267 -1] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name "$all")} right: {(DQ (1))} ) ) terminator: ) ] action: [ (Sentence child: (AndOr children:[(C {(removeManpage)})(C {(exit)} {(1)})] op_id:Op_DPipe) terminator: ) ] spids: [-1 307] ) ] spids: [-1 317] ) ] )