mirror of
https://codeberg.org/hyperreal/dotfiles
synced 2024-11-01 16:53:07 +01:00
49 lines
854 B
Bash
Executable File
49 lines
854 B
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
user_file="$(eval echo ${1})"
|
|
|
|
if [[ "$user_file" = /* ]]
|
|
then
|
|
config_file="$user_file"
|
|
else
|
|
cwd=$(dirname $0)
|
|
config_file="${cwd}/${user_file}"
|
|
fi
|
|
|
|
json=$(cat ${config_file})
|
|
|
|
if [ $# -eq 1 ]; then
|
|
echo $json | jq -cr '.[] | "\(.name)|\(.command)|\(.icon)"' |
|
|
while IFS="|" read -r name command icon
|
|
do
|
|
if [[ $name == "null" ]]; then
|
|
continue
|
|
fi
|
|
if [[ $icon == "null" ]]; then
|
|
icon="system-run"
|
|
fi
|
|
echo -en "${name}\0icon\x1f${icon}\n"
|
|
done
|
|
exit 1
|
|
fi
|
|
|
|
if [ $# -eq 2 ]; then
|
|
|
|
selected=$2
|
|
task=$(echo $json | jq ".[] | select(.name == \"$selected\")")
|
|
|
|
if [[ $task == "" ]]; then
|
|
exit 1
|
|
fi
|
|
|
|
command=$(echo $task | jq -j ".command")
|
|
|
|
if [[ $command == "null" ]]; then
|
|
command=$(echo $task | jq -j ".name")
|
|
fi
|
|
|
|
coproc bash -c "$command"
|
|
exit
|
|
|
|
fi
|