aboutsummaryrefslogtreecommitdiff
path: root/v_windows/v/examples/cli.v
diff options
context:
space:
mode:
Diffstat (limited to 'v_windows/v/examples/cli.v')
-rw-r--r--v_windows/v/examples/cli.v78
1 files changed, 78 insertions, 0 deletions
diff --git a/v_windows/v/examples/cli.v b/v_windows/v/examples/cli.v
new file mode 100644
index 0000000..9232aac
--- /dev/null
+++ b/v_windows/v/examples/cli.v
@@ -0,0 +1,78 @@
+module main
+
+import cli { Command, Flag }
+import os
+
+fn main() {
+ mut cmd := Command{
+ name: 'cli'
+ description: 'An example of the cli library.'
+ version: '1.0.0'
+ }
+ mut greet_cmd := Command{
+ name: 'greet'
+ description: 'Prints greeting in different languages.'
+ usage: '<name>'
+ required_args: 1
+ pre_execute: greet_pre_func
+ execute: greet_func
+ post_execute: greet_post_func
+ }
+ greet_cmd.add_flag(Flag{
+ flag: .string
+ required: true
+ name: 'language'
+ abbrev: 'l'
+ description: 'Language of the message.'
+ })
+ greet_cmd.add_flag(Flag{
+ flag: .int
+ name: 'times'
+ default_value: ['3']
+ description: 'Number of times the message gets printed.'
+ })
+ greet_cmd.add_flag(Flag{
+ flag: .string_array
+ name: 'fun'
+ description: 'Just a dumby flags to show multiple.'
+ })
+ cmd.add_command(greet_cmd)
+ cmd.setup()
+ cmd.parse(os.args)
+}
+
+fn greet_func(cmd Command) ? {
+ language := cmd.flags.get_string('language') or { panic('Failed to get `language` flag: $err') }
+ times := cmd.flags.get_int('times') or { panic('Failed to get `times` flag: $err') }
+ name := cmd.args[0]
+ for _ in 0 .. times {
+ match language {
+ 'english', 'en' {
+ println('Welcome $name')
+ }
+ 'german', 'de' {
+ println('Willkommen $name')
+ }
+ 'dutch', 'nl' {
+ println('Welkom $name')
+ }
+ else {
+ println('Unsupported language')
+ println('Supported languages are `english`, `german` and `dutch`.')
+ break
+ }
+ }
+ }
+ fun := cmd.flags.get_strings('fun') or { panic('Failed to get `fun` flag: $err') }
+ for f in fun {
+ println('fun: $f')
+ }
+}
+
+fn greet_pre_func(cmd Command) ? {
+ println('This is a function running before the main function.\n')
+}
+
+fn greet_post_func(cmd Command) ? {
+ println('\nThis is a function running after the main function.')
+}