cards/521779570045--fresh-forensics-tools/assets/raw.sh
#!/usr/bin/env bash
set -euo pipefail;bash -c $'set -e\nblun=$\'\\033[1;34m\'\ngruv=$\'\\033[1;32m\'\nyenk=$\'\\033[1;33m\'\nrakk=$\'\\033[1;31m\'\nzclr=$\'\\033[0m\'\ntools=(fortune-mod cowsay cowsay-off xcowsay figlet toilet cmatrix oneko espeak libaa-bin bb pv aview x11-apps sysvbanner)\nttyp="/dev/tty"\n[[ -r "$ttyp" && -w "$ttyp" ]] || ttyp=""\noutp(){ [[ -n "$ttyp" ]] && printf "%b" "$1" >"$ttyp" || printf "%b" "$1"; }\ninpt(){ local t=""; [[ -n "$ttyp" ]] && IFS= read -r t <"$ttyp" || IFS= read -r t; printf "%s" "$t"; }\nclear_screen(){ outp $\'\\033[2J\\033[H\'; }\npause(){ outp "\\nEnter to continue... "; inpt >/dev/null; }\napt_cmd(){ command -v apt-get >/dev/null 2>&1 || { printf \'%s\' ""; return; }; [[ "$(id -u)" -eq 0 ]] && printf \'%s\' "apt-get" || printf \'%s\' "sudo apt-get"; }\nis_installed(){\n command -v "$1" >/dev/null 2>&1 && return 0\n dpkg -s "$1" >/dev/null 2>&1 && return 0\n return 1\n}\ninstall_one_by_index(){\n ap="$(apt_cmd)"\n [[ -z "$ap" ]] && { outp "\\n${rakk}apt not available${zclr}\\n"; pause; return; }\n local idx="$1"\n local tool="${tools[$idx]}"\n outp "\\n${yenk}Installing${zclr} $tool\\n"\n $ap -y install "$tool" && outp "${gruv}Done${zclr}\\n" || outp "${rakk}Failed${zclr}\\n"\n pause\n}\nlist_tools(){\n while :; do\n clear_screen\n outp "${blun}LIST TOOLS${zclr}\\n\\n"\n i=1\n for t in "${tools[@]}"; do\n if is_installed "$t"; then\n outp " $i) ${gruv}OK${zclr} $t\\n"\n else\n outp " $i) ${rakk}MISS${zclr} $t\\n"\n fi\n i=$((i+1))\n done\n outp "\\nSelect number to install, or press Enter to go back: "\n sel="$(inpt)"\n [[ -z "$sel" ]] && return\n if [[ "$sel" =~ ^[0-9]+$ ]] && (( sel>=1 && sel<=${#tools[@]} )); then\n idx=$((sel-1))\n tool="${tools[$idx]}"\n if is_installed "$tool"; then\n outp "\\n${gruv}Already installed${zclr}: $tool\\n"\n pause\n else\n install_one_by_index "$idx"\n fi\n else\n outp "\\n${rakk}Invalid selection${zclr}\\n"\n pause\n fi\n done\n}\ninstall_missing(){\n clear_screen\n ap="$(apt_cmd)"\n [[ -z "$ap" ]] && { outp "${rakk}apt not available${zclr}\\n"; pause; return; }\n miss=()\n for t in "${tools[@]}"; do is_installed "$t" || miss+=("$t"); done\n if (( ${#miss[@]} == 0 )); then outp "${gruv}Nothing missing${zclr}\\n"; pause; return; fi\n outp "${blun}INSTALL ALL MISSING${zclr}\\n\\n"\n for t in "${miss[@]}"; do outp "${yenk}Installing${zclr} $t\\n"; $ap -y install "$t" || true; done\n outp "\\n${gruv}Done${zclr}\\n"\n pause\n}\ninstall_all(){\n clear_screen\n ap="$(apt_cmd)"\n [[ -z "$ap" ]] && { outp "${rakk}apt not available${zclr}\\n"; pause; return; }\n outp "${blun}INSTALL ALL${zclr}\\n\\n"\n for t in "${tools[@]}"; do outp "${yenk}Installing${zclr} $t\\n"; $ap -y install "$t" || true; done\n outp "\\n${gruv}All done${zclr}\\n"\n pause\n}\nupdate_system(){\n clear_screen\n ap="$(apt_cmd)"\n [[ -z "$ap" ]] && { outp "${rakk}apt not available${zclr}\\n"; pause; return; }\n outp "${blun}SYSTEM UPDATE${zclr}\\n\\n"\n $ap update && $ap -y upgrade\n pause\n}\nwhile :; do\n clear_screen\n outp "${blun}MENU${zclr}\\n\\n"\n outp " 1) List Tools\\n"\n outp " 2) Install All Missing\\n"\n outp " 3) Install All\\n"\n outp " 4) Update System\\n"\n outp " q) Quit\\n\\n"\n outp "> "\n sel="$(inpt)"\n case "$sel" in\n 1) list_tools ;;\n 2) install_missing ;;\n 3) install_all ;;\n 4) update_system ;;\n q|Q) clear_screen; exit 0 ;;\n *) outp "${rakk}Invalid${zclr}\\n"; pause ;;\n esac\ndone\n'