v
Зеркало из https://github.com/vlang/v
1module cli
2
3fn version_flag(with_abbrev bool) Flag {
4sabbrev := if with_abbrev { 'v' } else { '' }
5return Flag{
6flag: .bool
7name: 'version'
8abbrev: sabbrev
9description: 'Prints version information.'
10}
11}
12
13fn version_cmd() Command {
14return Command{
15name: 'version'
16description: 'Prints version information.'
17execute: print_version_for_command
18}
19}
20
21fn print_version_for_command(cmd Command) ! {
22if cmd.args.len > 0 {
23for sub_cmd in cmd.commands {
24if sub_cmd.name == cmd.args[0] {
25version_cmd := unsafe { &sub_cmd }
26print(version_cmd.version())
27return
28}
29}
30println('Invalid command: ${cmd.args.join(' ')}')
31} else if cmd.parent != unsafe { nil } {
32println(cmd.parent.version())
33} else {
34println(cmd.version())
35}
36}
37
38// version returns a generated version `string` for the `Command`.
39pub fn (cmd Command) version() string {
40return '${cmd.name} version ${cmd.version}'
41}
42