mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
cli: add Command.setup() (#7850)
This commit is contained in:
parent
a8741fdced
commit
e19277352b
30
vlib/cli/README.md
Normal file
30
vlib/cli/README.md
Normal file
@ -0,0 +1,30 @@
|
||||
Usage example:
|
||||
|
||||
```v
|
||||
module main
|
||||
|
||||
import os
|
||||
import cli
|
||||
|
||||
fn main() {
|
||||
mut app := cli.Command{
|
||||
name: 'example-app'
|
||||
description: 'example-app'
|
||||
execute: fn (cmd cli.Command) ? {
|
||||
println('hello app')
|
||||
return
|
||||
}
|
||||
commands: [
|
||||
cli.Command{
|
||||
name: 'sub'
|
||||
execute: fn (cmd cli.Command) ? {
|
||||
println('hello subcommand')
|
||||
return
|
||||
}
|
||||
},
|
||||
]
|
||||
}
|
||||
app.setup()
|
||||
app.parse(os.args)
|
||||
}
|
||||
```
|
@ -89,6 +89,13 @@ pub fn (mut cmd Command) add_command(command Command) {
|
||||
cmd.commands << subcmd
|
||||
}
|
||||
|
||||
pub fn (mut cmd Command) setup() {
|
||||
for mut subcmd in cmd.commands {
|
||||
subcmd.parent = cmd
|
||||
subcmd.setup()
|
||||
}
|
||||
}
|
||||
|
||||
pub fn (mut cmd Command) add_flags(flags []Flag) {
|
||||
for flag in flags {
|
||||
cmd.add_flag(flag)
|
||||
|
@ -145,6 +145,27 @@ fn test_if_global_flag_gets_set_in_subcommand() {
|
||||
cmd.parse(['command', '-flag', 'value', 'subcommand'])
|
||||
}
|
||||
|
||||
fn test_command_setup() {
|
||||
mut cmd := cli.Command{
|
||||
name: 'root'
|
||||
commands: [
|
||||
cli.Command{
|
||||
name: 'child'
|
||||
commands: [
|
||||
cli.Command{
|
||||
name: 'child-child'
|
||||
},
|
||||
]
|
||||
},
|
||||
]
|
||||
}
|
||||
assert isnil(cmd.commands[0].parent)
|
||||
assert isnil(cmd.commands[0].commands[0].parent)
|
||||
cmd.setup()
|
||||
assert cmd.commands[0].parent.name == 'root'
|
||||
assert cmd.commands[0].commands[0].parent.name == 'child'
|
||||
}
|
||||
|
||||
// helper functions
|
||||
fn empty_func(cmd cli.Command) ? {
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user