#!/usr/bin/env sh

# Description: Fuzzy list and kill a (zombie) process by name
#
# Dependencies: fzf, ps
#
# Note: To kill a zombie process enter "zombie"
#
# Shell: POSIX compliant
# Author: Arun Prakash Jana

printf "Enter process name ['defunct' for zombies]: "
read -r psname

# shellcheck disable=SC2009
if [ -n "$psname" ]; then
    if type sudo >/dev/null 2>&1; then
        sucmd=sudo
    elif type doas >/dev/null 2>&1; then
        sucmd=doas
    else
        sucmd=: # noop
    fi

    if type fzf >/dev/null 2>&1; then
        fuzzy=fzf
    else
        exit 1
    fi

    cmd="$(ps -ax | grep -iw "$psname" | "$fuzzy" | sed -e 's/^[ \t]*//' | cut -d' ' -f1)"
    if [ -n "$cmd" ]; then
        $sucmd kill -9 "$cmd"
    fi
fi