From f1274e34c215fd04cafcc72f4ed7914e0f30c5b2 Mon Sep 17 00:00:00 2001 From: Wing-Kam Date: Tue, 10 Mar 2020 23:11:17 +0800 Subject: [PATCH] cli: add pre_execute & post_execute --- examples/cli.v | 10 ++++++++++ vlib/cli/command.v | 12 ++++++++++++ 2 files changed, 22 insertions(+) diff --git a/examples/cli.v b/examples/cli.v index 93a1c4ce4d..844d991fdc 100644 --- a/examples/cli.v +++ b/examples/cli.v @@ -16,7 +16,9 @@ fn main() { mut greet_cmd := cli.Command{ name: 'greet', description: 'Prints greeting in different languages', + pre_execute: greet_pre_func, execute: greet_func, + post_execute: greet_post_func, parent: 0 } greet_cmd.add_flag(cli.Flag{ @@ -50,3 +52,11 @@ fn greet_func(cmd cli.Command) { } } } + +fn greet_pre_func(cmd cli.Command) { + println('This is a function running before the main function') +} + +fn greet_post_func(cmd cli.Command) { + println('This is a function running after the main function') +} \ No newline at end of file diff --git a/vlib/cli/command.v b/vlib/cli/command.v index 63fc36f3e4..880ae86da5 100644 --- a/vlib/cli/command.v +++ b/vlib/cli/command.v @@ -5,7 +5,9 @@ pub mut: name string description string version string + pre_execute fn(cmd Command) execute fn(cmd Command) + post_execute fn(cmd Command) disable_help bool disable_version bool @@ -126,8 +128,18 @@ fn (cmd &Command) parse_commands() { } else { cmd.check_required_flags() + if int(cmd.pre_execute) > 0 { + pre_execute := cmd.pre_execute + pre_execute(cmd) + } + execute := cmd.execute execute(cmd) // TODO: fix once higher order function can be execute on struct variable + + if int(cmd.post_execute) > 0 { + post_execute := cmd.post_execute + post_execute(cmd) + } } }