#!/bin/sh set -e dir="${XDG_DATA_HOME:-$HOME/.local/share}/foo" mkdir -p "$dir" if [ $# -eq 0 ]; then file="$(printf '%s\n' "$dir"/* | fzf --preview='cat {}')" ext="${file##*.}" else ext="$1" if [ $# -eq 1 ]; then name="$(ask 'Name: ')" else name="$2" fi file="$dir/$name.$ext" if ! [ -s "$file" ]; then touch "$file" case $ext in py|python) echo "#!/usr/bin/env python3" >"$file" ;; lua) echo "#!/usr/bin/env lua" >"$file" ;; sh) echo "#!/bin/sh" >"$file" ;; c) cat <<-EOF >"$file" #!/usr/bin/env -S tcc -run #include #include #include #include int main(int argc, char *argv[]) { return 0; } EOF ;; esac chmod +x "$file" fi fi while true; do action="$(printf '%s\n' Edit Run Delete Quit | fzf --height=6)" case $action in Run) "$file" || true ;; Edit) ${EDITOR:-vim} "$file" ;; Delete) bin "$file" && exit 0 ;; Quit) exit 0 ;; esac done