From 1ab2bd9b32e01c202ca9c01db0f98c5adef915f8 Mon Sep 17 00:00:00 2001 From: karpfediem <11753414+karpfediem@users.noreply.github.com> Date: Tue, 1 Oct 2024 09:47:49 +0200 Subject: [PATCH] feat: add input_hidden function (#492) --- src/std/env.ab | 12 ++++++++++-- src/tests/stdlib/input.ab | 2 +- src/tests/stdlib/input_hidden.ab | 12 ++++++++++++ 3 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 src/tests/stdlib/input_hidden.ab diff --git a/src/std/env.ab b/src/std/env.ab index 76ad198a..dbea4c12 100644 --- a/src/std/env.ab +++ b/src/std/env.ab @@ -64,8 +64,16 @@ pub fun is_command(command: Text): Bool { /// Creates a prompt and returns the value. pub fun input(prompt: Text): Text { - unsafe $printf "\${nameof prompt}"$ - unsafe $read$ + unsafe $read -p "\${nameof prompt}"$ + return "\$REPLY" +} + +/// Creates a prompt, hides any user input and returns the value. +pub fun input_hidden(prompt: Text): Text { + unsafe { + $read -s -p "\${nameof prompt}"$ + $echo "" >&2$ + } return "\$REPLY" } diff --git a/src/tests/stdlib/input.ab b/src/tests/stdlib/input.ab index dfb1cfda..82179442 100644 --- a/src/tests/stdlib/input.ab +++ b/src/tests/stdlib/input.ab @@ -1,7 +1,7 @@ import * from "std/env" // Output -// Please enter your name:Hello, Amber +// Hello, Amber main { unsafe $echo "Amber" >> /tmp/test_input$ diff --git a/src/tests/stdlib/input_hidden.ab b/src/tests/stdlib/input_hidden.ab new file mode 100644 index 00000000..87ca700f --- /dev/null +++ b/src/tests/stdlib/input_hidden.ab @@ -0,0 +1,12 @@ +import * from "std/env" + +// Output +// Hello, Amber + +main { + unsafe $echo "Amber" >> /tmp/test_input$ + unsafe $exec 0< /tmp/test_input$ + let name = input_hidden("Please enter your name:") + echo "Hello, " + name + unsafe $rm /tmp/test_input$ +}