Input and CLI Arguments
Programs receive argv-style args and can read interactive input as Option[String].
Argv Shape
main receives List[String] argv: index 0 is the program entry, and user arguments start at index 1.
func main(args: List[String]) -> Void:
user_args: List[String] = args.drop(1)
print(user_args.length())
Input
input(prompt) prints a prompt and returns Option[String].
match input("name> "):
Some(name): print(name)
None: print("bye")
EOF As None
Ctrl-D or EOF returns None instead of a null string.
match input("name> "):
None: print("no input")
Some(name): print(name)
Stderr
print_error writes a line to stderr.
print_error("missing file")
Exit Codes
Return Int from main when the program needs success or failure status.
func main(args: List[String]) -> Int:
print("ok")
0
Example
greeter.brp
func main(args: List[String]) -> Int:
user_args: List[String] = args.drop(1)
shout: Bool = user_args.contains("--shout")
match input("name> "):
Some(name):
text: String = if shout:
name.upper()
else:
name
print("Hello, " + text.trim()) -- with stdin "Ada" and --shout, prints: name> Hello, ADA
0
None:
print_error("no input")
0
Try it
terminal
blorp run greeter.brp -- --shout