mirror of
https://github.com/arthur-pbty/arthur-os.git
synced 2026-08-01 20:28:16 +02:00
59 lines
1.2 KiB
Bash
Executable File
59 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# omarchy:summary=Prompt for text input from a menu
|
|
# omarchy:group=menu
|
|
# omarchy:name=input
|
|
# omarchy:args=prompt [menu args...]
|
|
# omarchy:examples=omarchy menu input Reminder|omarchy-menu-input "Reminder in minutes" --width 400
|
|
|
|
set -euo pipefail
|
|
|
|
prompt="${1:-Input}"
|
|
if (( $# > 0 )); then
|
|
shift
|
|
fi
|
|
|
|
menu_width=""
|
|
|
|
while (( $# > 0 )); do
|
|
case "$1" in
|
|
--width)
|
|
shift
|
|
if (( $# == 0 )); then
|
|
echo "omarchy-menu-input: --width requires a value" >&2
|
|
exit 1
|
|
fi
|
|
menu_width="$1"
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
selection_file=$(mktemp)
|
|
done_file=$(mktemp)
|
|
rm -f "$done_file"
|
|
trap 'rm -f "$selection_file" "$done_file"' EXIT
|
|
|
|
payload=$(perl -MEncode=decode -MJSON::PP=encode_json -e '
|
|
my $payload = {
|
|
mode => "input",
|
|
prompt => decode("UTF-8", $ARGV[0]),
|
|
selectionFile => decode("UTF-8", $ARGV[1]),
|
|
doneFile => decode("UTF-8", $ARGV[2])
|
|
};
|
|
$payload->{width} = int($ARGV[3]) if length($ARGV[3] // "");
|
|
print encode_json($payload)
|
|
' "$prompt" "$selection_file" "$done_file" "$menu_width")
|
|
|
|
omarchy-shell shell summon omarchy.menu "$payload" >/dev/null
|
|
|
|
while [[ ! -e $done_file ]]; do
|
|
sleep 0.05
|
|
done
|
|
|
|
if [[ -s $selection_file ]]; then
|
|
cat "$selection_file"
|
|
else
|
|
exit 1
|
|
fi
|