cards/147941123570--file-encryption-vault/assets/raw.sh
#!/usr/bin/env bash
set -euo pipefail;bash -c $'set -euo pipefail\nbash -c $\'a1=$\\\'\\\\033[0;32m\\\';a2=$\\\'\\\\033[0;31m\\\';a3=$\\\'\\\\033[0;34m\\\';a4=$\\\'\\\\033[0m\\\';a5=$\\\'\\\\033[0;33m\\\'\nb1=`pwd`;b2="";t1="";t2=""\nt1="/dev/tty"; [ -r "$t1" ] && [ -w "$t1" ] || t1=""\nw0(){ if [ -n "$t1" ]; then printf "%b" "$1" >"$t1"; else printf "%b" "$1"; fi; }\nr0(){ if [ -n "$t1" ]; then IFS= read -r t2 <"$t1"; else IFS= read -r t2; fi; t2=`printf "%s" "$t2" | tr -d "\\\\r\\\\n" | sed "s/^[[:space:]]*//;s/[[:space:]]*$//"`; }\np0(){ w0 "Enter to continue... "; r0; }\nc0(){ if [ -n "$t1" ]; then clear >"$t1"; else clear; fi; }\ncommand -v gpg >/dev/null 2>&1 || { w0 "${a2}gpg not installed${a4}\\\\n"; exit 1; }\nk0(){ [ -n "${b2:-}" ] || { w0 "${a2}No file selected${a4}\\\\n"; return 1; }; [ -f "$b2" ] || { w0 "${a2}Selected file missing${a4}\\\\n"; return 1; }; return 0; }\ni0(){\n c0\n w0 "${a1}INFO${a4}\\\\n${a5}${b2:-<none>}${a4}\\\\n\\\\n"\n k0 || { p0; return; }\n t3=`file -b "$b2" 2>/dev/null || true`\n t4=`wc -c < "$b2" 2>/dev/null | tr -d " " || true`\n w0 "${a3}Type:${a4} ${t3}\\\\n"\n w0 "${a3}Bytes:${a4} ${t4}\\\\n"\n if command -v sha256sum >/dev/null 2>&1; then\n t5=`sha256sum "$b2" 2>/dev/null | awk "{print \\\\$1}" || true`\n w0 "${a3}SHA256:${a4} ${t5}\\\\n"\n fi\n w0 "\\\\nPreview (first 25 lines):\\\\n----------------------------------------\\\\n"\n if [ -n "$t1" ]; then sed -n "1,25p" "$b2" >"$t1"; else sed -n "1,25p" "$b2"; fi\n w0 "\\\\n----------------------------------------\\\\n\\\\n"\n p0\n}\ne0(){\n k0 || { p0; return; }\n c0\n w0 "${a1}ENCRYPT${a4}\\\\n${a5}${b2}${a4}\\\\n\\\\nOutput (blank = same + .gpg): "\n r0; f1="$t2"; [ -z "$f1" ] && f1="${b2}.gpg"\n if [ -e "$f1" ]; then\n w0 "${a2}Output exists${a4} Overwrite? (y/N): "\n r0; case "$t2" in y|Y) ;; *) return;; esac\n fi\n if [ -n "$t1" ]; then gpg -c --output "$f1" "$b2" >"$t1" 2>&1; else gpg -c --output "$f1" "$b2"; fi\n [ $? -eq 0 ] && w0 "${a1}Saved:${a4} $f1\\\\n" || w0 "${a2}Encrypt failed${a4}\\\\n"\n p0\n}\nd0(){\n k0 || { p0; return; }\n c0\n w0 "${a1}DECRYPT${a4}\\\\n${a5}${b2}${a4}\\\\n\\\\nOutput (blank = stdout): "\n r0; f2="$t2"\n if [ -n "$f2" ]; then\n if [ -e "$f2" ]; then\n w0 "${a2}Output exists${a4} Overwrite? (y/N): "\n r0; case "$t2" in y|Y) ;; *) return;; esac\n fi\n if [ -n "$t1" ]; then gpg -d --output "$f2" "$b2" >"$t1" 2>&1; else gpg -d --output "$f2" "$b2"; fi\n [ $? -eq 0 ] && w0 "${a1}Saved:${a4} $f2\\\\n" || w0 "${a2}Decrypt failed${a4}\\\\n"\n else\n if [ -n "$t1" ]; then gpg -d "$b2" >"$t1" 2>&1; else gpg -d "$b2"; fi\n fi\n p0\n}\nb0(){\n c0\n w0 "${a1}BROWSER${a4} ${a5}${b1}${a4}\\\\n\\\\n"\n if [ -n "$t1" ]; then ls -1p "$b1" 2>/dev/null | sed -n "1,200p" >"$t1"; else ls -1p "$b1" 2>/dev/null | sed -n "1,200p"; fi\n w0 "\\\\n1) Enter subdir\\\\n2) Go up (..)\\\\n3) Pick file (name)\\\\n4) Pick file (number)\\\\nq) Back\\\\n\\\\n> "\n r0\n case "$t2" in\n 1) w0 "Subdir: "; r0; [ -d "$b1/$t2" ] && b1="$b1/$t2" || { w0 "${a2}Not a directory${a4}\\\\n"; p0; } ;;\n 2) b1=`cd "$b1/.." 2>/dev/null && pwd` ;;\n 3) w0 "File: "; r0; [ -f "$b1/$t2" ] && b2="$b1/$t2" || { w0 "${a2}File not found${a4}\\\\n"; p0; } ;;\n 4)\n c0\n w0 "${a1}FILES${a4} ${a5}${b1}${a4}\\\\n\\\\n"\n if [ -n "$t1" ]; then ls -1p "$b1" 2>/dev/null | grep -v "/$" | nl -ba -w3 -s") " >"$t1"; else ls -1p "$b1" 2>/dev/null | grep -v "/$" | nl -ba -w3 -s") "; fi\n w0 "\\\\nNumber: "\n r0; n1="$t2"\n s1=`ls -1p "$b1" 2>/dev/null | grep -v "/$" | sed -n "${n1}p"`\n [ -n "$s1" ] && [ -f "$b1/$s1" ] && b2="$b1/$s1" || { w0 "${a2}Invalid selection${a4}\\\\n"; p0; }\n ;;\n q|Q|"") ;;\n *) w0 "${a2}Invalid${a4}\\\\n"; p0 ;;\n esac\n}\nwhile true; do\n c0\n w0 "${a1}FILE VAULT${a4}\\\\n"\n w0 "${a3}Dir:${a4} ${a5}$b1${a4}\\\\n"\n w0 "${a3}File:${a4} ${a5}${b2:-<none>}${a4}\\\\n\\\\n"\n w0 "1) Browse / pick\\\\n2) Info / preview\\\\n3) Encrypt\\\\n4) Decrypt\\\\n5) Set dir (path)\\\\n6) Clear file\\\\nq) Quit\\\\n\\\\n> "\n r0\n case "$t2" in\n 1) b0 ;;\n 2) i0 ;;\n 3) e0 ;;\n 4) d0 ;;\n 5) w0 "Path: "; r0; [ -d "$t2" ] && b1=`cd "$t2" 2>/dev/null && pwd` || { w0 "${a2}Not a directory${a4}\\\\n"; p0; } ;;\n 6) b2="" ;;\n q|Q) exit 0 ;;\n *) w0 "${a2}Invalid${a4}\\\\n"; p0 ;;\n esac\ndone\n\'\n'