package command import ( "context" "fmt" "gitoa.ru/go-4devs/console" "gitoa.ru/go-4devs/console/input" "gitoa.ru/go-4devs/console/input/argument" "gitoa.ru/go-4devs/console/input/option" "gitoa.ru/go-4devs/console/output" "gitoa.ru/go-4devs/mime/scripts/mime" ) const ( ArgFile = "file" OptExtTpl = "ext-tpl" OptExtPackage = "ext-package" OptExtResult = "ext-result" OptMimeTpl = "mime-tpl" OptMimePackage = "mime-package" OptMimeResult = "mime-result" ) func Mime() *console.Command { return &console.Command{ Name: "mime", Description: "generate mime from file", Configure: func(ctx context.Context, cfg *input.Definition) error { cfg.SetArgument(ArgFile, "yaml file", argument.Required) cfg.SetOptions( option.String(OptExtTpl, "extension template", option.Default("mime/tpl/extension.text.tmpl")), option.String(OptExtPackage, "extension package", option.Default("mime")), option.String(OptExtResult, "extension result", option.Default("../extension.go")), option.String(OptMimeTpl, "mime template", option.Default("mime/tpl/mime.text.tmpl")), option.String(OptMimePackage, "mime package", option.Default("mime")), option.String(OptMimeResult, "mime result", option.Default("../mime.go")), ) return nil }, Execute: func(ctx context.Context, input input.Input, output output.Output) error { file := input.Argument(ctx, ArgFile).String() opts := []mime.Option{ mime.WithExtTpl(input.Option(ctx, OptExtTpl).String()), mime.WithExtPacakge(input.Option(ctx, OptExtPackage).String()), mime.WithExtResult(input.Option(ctx, OptExtResult).String()), mime.WithMimeTpl(input.Option(ctx, OptMimeTpl).String()), mime.WithMimePackage(input.Option(ctx, OptMimePackage).String()), mime.WithMimeResult(input.Option(ctx, OptMimeResult).String()), } if err := mime.Generate(file, opts...); err != nil { return fmt.Errorf("generate:%w", err) } return nil }, } }