| 1 | module main |
| 2 | |
| 3 | import cli { Command, Flag } |
| 4 | import os |
| 5 | |
| 6 | fn main() { |
| 7 | mut cmd := Command{ |
| 8 | name: 'cli' |
| 9 | description: 'An example of the cli library.' |
| 10 | version: '1.0.0' |
| 11 | } |
| 12 | mut greet_cmd := Command{ |
| 13 | name: 'greet' |
| 14 | description: 'Prints greeting in different languages.' |
| 15 | usage: '<name>' |
| 16 | required_args: 1 |
| 17 | pre_execute: greet_pre_func |
| 18 | execute: greet_func |
| 19 | post_execute: greet_post_func |
| 20 | } |
| 21 | greet_cmd.add_flag(Flag{ |
| 22 | flag: .string |
| 23 | required: true |
| 24 | name: 'language' |
| 25 | abbrev: 'l' |
| 26 | description: 'Language of the message.' |
| 27 | }) |
| 28 | greet_cmd.add_flag(Flag{ |
| 29 | flag: .int |
| 30 | name: 'times' |
| 31 | default_value: ['3'] |
| 32 | description: 'Number of times the message gets printed.' |
| 33 | }) |
| 34 | greet_cmd.add_flag(Flag{ |
| 35 | flag: .string_array |
| 36 | name: 'fun' |
| 37 | description: 'Just a dumby flags to show multiple.' |
| 38 | }) |
| 39 | cmd.add_command(greet_cmd) |
| 40 | cmd.setup() |
| 41 | cmd.parse(os.args) |
| 42 | } |
| 43 | |
| 44 | fn greet_func(cmd Command) ! { |
| 45 | language := cmd.flags.get_string('language') or { |
| 46 | panic('Failed to get `language` flag: ${err}') |
| 47 | } |
| 48 | times := cmd.flags.get_int('times') or { panic('Failed to get `times` flag: ${err}') } |
| 49 | name := cmd.args[0] |
| 50 | for _ in 0 .. times { |
| 51 | match language { |
| 52 | 'english', 'en' { |
| 53 | println('Welcome ${name}') |
| 54 | } |
| 55 | 'german', 'de' { |
| 56 | println('Willkommen ${name}') |
| 57 | } |
| 58 | 'dutch', 'nl' { |
| 59 | println('Welkom ${name}') |
| 60 | } |
| 61 | else { |
| 62 | println('Unsupported language') |
| 63 | println('Supported languages are `english`, `german` and `dutch`.') |
| 64 | break |
| 65 | } |
| 66 | } |
| 67 | } |
| 68 | fun := cmd.flags.get_strings('fun') or { panic('Failed to get `fun` flag: ${err}') } |
| 69 | for f in fun { |
| 70 | println('fun: ${f}') |
| 71 | } |
| 72 | } |
| 73 | |
| 74 | fn greet_pre_func(_cmd Command) ! { |
| 75 | println('This is a function running before the main function.\n') |
| 76 | } |
| 77 | |
| 78 | fn greet_post_func(_cmd Command) ! { |
| 79 | println('\nThis is a function running after the main function.') |
| 80 | } |
| 81 | |