mirror of
https://github.com/vlang/v.git
synced 2025-08-03 17:57:59 -04:00
42 lines
946 B
V
42 lines
946 B
V
module cli
|
|
|
|
fn version_flag(with_abbrev bool) Flag {
|
|
sabbrev := if with_abbrev { 'v' } else { '' }
|
|
return Flag{
|
|
flag: .bool
|
|
name: 'version'
|
|
abbrev: sabbrev
|
|
description: 'Prints version information.'
|
|
}
|
|
}
|
|
|
|
fn version_cmd() Command {
|
|
return Command{
|
|
name: 'version'
|
|
description: 'Prints version information.'
|
|
execute: print_version_for_command
|
|
}
|
|
}
|
|
|
|
fn print_version_for_command(cmd Command) ! {
|
|
if cmd.args.len > 0 {
|
|
for sub_cmd in cmd.commands {
|
|
if sub_cmd.name == cmd.args[0] {
|
|
version_cmd := unsafe { &sub_cmd }
|
|
print(version_cmd.version())
|
|
return
|
|
}
|
|
}
|
|
println('Invalid command: ${cmd.args.join(' ')}')
|
|
} else if cmd.parent != unsafe { nil } {
|
|
println(cmd.parent.version())
|
|
} else {
|
|
println(cmd.version())
|
|
}
|
|
}
|
|
|
|
// version returns a generated version `string` for the `Command`.
|
|
pub fn (cmd &Command) version() string {
|
|
return '${cmd.name} version ${cmd.version}'
|
|
}
|