package command
import (
"context"
"time"
"gitoa.ru/go-4devs/config"
"gitoa.ru/go-4devs/config/definition/option"
"gitoa.ru/go-4devs/console"
"gitoa.ru/go-4devs/console/command"
"gitoa.ru/go-4devs/console/output"
)
func Args() command.Command {
return command.New(
"fdevs:console:arg",
"Understanding how Console Arguments and Options Are Handled",
ArgExecute,
command.Configure(ArgConfigure),
)
}
func ArgConfigure(_ context.Context, def config.Definition) error {
def.Add(
option.Bool("foo", "foo option", option.Short('f')),
option.String("bar", "required bar option", option.Required, option.Short('b')),
option.String("cat", "cat option", option.Short('c')),
option.Time("time", "time example"),
option.Time("hidden", "hidden time example", option.Hidden),
)
return nil
}
func ArgExecute(ctx context.Context, in config.Provider, out output.Output) error {
out.Println(ctx, "foo: ", console.ReadValue(ctx, in, "foo").Bool(), "")
out.Println(ctx, "bar: ", console.ReadValue(ctx, in, "bar").String(), "")
out.Println(ctx, "cat: ", console.ReadValue(ctx, in, "cat").String(), "")
out.Println(ctx, "time: ", console.ReadValue(ctx, in, "time").Time().Format(time.RFC3339), "")
out.Println(ctx, "hidden: ", console.ReadValue(ctx, in, "hidden").Time().Format(time.RFC3339), "")
return nil
}