diff --git a/cmd/fn/main.go b/cmd/fn/main.go index 79094ea5..9ad95e89 100644 --- a/cmd/fn/main.go +++ b/cmd/fn/main.go @@ -35,6 +35,8 @@ func main() { cmdProposal(os.Args[2:]) case "run": cmdRun(os.Args[2:]) + case "check": + cmdCheck(os.Args[2:]) case "app": cmdApp(os.Args[2:]) case "analysis": @@ -58,6 +60,7 @@ Usage: fn show Muestra entrada completa fn add [-k kind] Abre $EDITOR con template fn run [args...] Ejecuta funcion/pipeline (go/py/bash) + fn check params Lista funciones sin params_schema fn ops Gestiona operations.db (fn ops help) fn proposal Gestiona proposals fn app Gestiona apps externas (Gitea) @@ -387,6 +390,9 @@ func printFunction(f *registry.Function) { if len(f.Imports) > 0 { fmt.Printf("Imports: %s\n", strings.Join(f.Imports, ", ")) } + if f.ParamsSchema != "" { + fmt.Printf("Params: %s\n", f.ParamsSchema) + } if f.Example != "" { fmt.Printf("\nExample:\n%s\n", f.Example) } @@ -512,6 +518,53 @@ func printAnalysisEntry(a *registry.Analysis) { } } +// --- check --- + +func cmdCheck(args []string) { + if len(args) < 1 { + fmt.Fprintln(os.Stderr, "usage: fn check \n\nSubcommands:\n params Lista funciones sin params_schema documentado") + os.Exit(1) + } + switch args[0] { + case "params": + cmdCheckParams() + default: + fmt.Fprintf(os.Stderr, "unknown check subcommand: %s\n", args[0]) + os.Exit(1) + } +} + +func cmdCheckParams() { + db := openDB() + defer db.Close() + + fns, err := db.SearchFunctions("", "", "", "", "") + if err != nil { + fmt.Fprintf(os.Stderr, "error: %v\n", err) + os.Exit(1) + } + + var missing []registry.Function + for _, f := range fns { + if f.ParamsSchema == "" { + missing = append(missing, f) + } + } + + if len(missing) == 0 { + fmt.Printf("All %d functions have params_schema documented.\n", len(fns)) + return + } + + fmt.Printf("%d/%d functions missing params_schema:\n\n", len(missing), len(fns)) + w := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0) + fmt.Fprintln(w, "ID\tLANG\tDOMAIN\tKIND") + for _, f := range missing { + fmt.Fprintf(w, "%s\t%s\t%s\t%s\n", f.ID, f.Lang, f.Domain, f.Kind) + } + w.Flush() +} + // --- add --- func cmdAdd(args []string) {