diff --git a/environment.c b/environment.c index 9f230cd..8567752 100644 --- a/environment.c +++ b/environment.c @@ -585,7 +585,7 @@ env_t *global_env(void) {"random", "default_rng", "RNG"}, {"say", "say", "func(text:Text, newline=yes)"}, {"print", "say", "func(text:Text, newline=yes)"}, - {"ask", "ask", "func(prompt:Text, bold=yes, force_tty=yes -> Text)"}, + {"ask", "ask", "func(prompt:Text, bold=yes, force_tty=yes -> Text?)"}, {"exit", "tomo_exit", "func(message=none:Text, code=Int32(1) -> Abort)"}, {"fail", "fail_text", "func(message:Text -> Abort)"}, {"sleep", "sleep_num", "func(seconds:Num)"}, diff --git a/examples/commands/commands.tm b/examples/commands/commands.tm index c70d859..7d2f4a6 100644 --- a/examples/commands/commands.tm +++ b/examples/commands/commands.tm @@ -33,6 +33,12 @@ struct ProgramResult(stdout:[Byte], stderr:[Byte], exit_type:ExitType): else: return none return none + func succeeded(r:ProgramResult -> Bool): + when r.exit_type is Exited(status): + return (status == 0) + else: + return no + struct Command(command:Text, args=[:Text], env={:Text,Text}): func from_path(path:Path, args=[:Text], env={:Text,Text} -> Command): return Command(Text(path), args, env) diff --git a/stdlib/stdlib.c b/stdlib/stdlib.c index 9103e4d..d09488d 100644 --- a/stdlib/stdlib.c +++ b/stdlib/stdlib.c @@ -646,7 +646,7 @@ public _Noreturn void tomo_exit(Text_t text, int32_t status) _exit(status); } -public Text_t ask(Text_t prompt, bool bold, bool force_tty) +public OptionalText_t ask(Text_t prompt, bool bold, bool force_tty) { OptionalText_t ret = NONE_TEXT; FILE *out = stdout;