From 56f36c7f3ba83bf842be7eeee2a39432795cea8f Mon Sep 17 00:00:00 2001 From: majiayu000 <1835304752@qq.com> Date: Sun, 28 Dec 2025 22:24:17 +0800 Subject: [PATCH] fix(publisher): support --file flag in publish command Added proper flag parsing using the flag package so that 'mcp-publisher publish --file path/to/server.json' works correctly. Also improved error messages to show the actual file path when a custom file is specified but not found. Fixes #767 Signed-off-by: majiayu000 <1835304752@qq.com> --- cmd/publisher/commands/publish.go | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/cmd/publisher/commands/publish.go b/cmd/publisher/commands/publish.go index 6a42c943..7a2773ca 100644 --- a/cmd/publisher/commands/publish.go +++ b/cmd/publisher/commands/publish.go @@ -5,6 +5,7 @@ import ( "context" "encoding/json" "errors" + "flag" "fmt" "io" "net/http" @@ -17,19 +18,34 @@ import ( ) func PublishCommand(args []string) error { - // Check for server.json file + // Parse flags + publishFlags := flag.NewFlagSet("publish", flag.ContinueOnError) + fileFlag := publishFlags.String("file", "", "Path to server.json file") + + // Parse the flags + if err := publishFlags.Parse(args); err != nil { + return err + } + + // Determine server file path serverFile := "server.json" - if len(args) > 0 && !strings.HasPrefix(args[0], "-") { - serverFile = args[0] + if *fileFlag != "" { + serverFile = *fileFlag + } else if publishFlags.NArg() > 0 { + // Support positional argument for backward compatibility + serverFile = publishFlags.Arg(0) } // Read server.json serverData, err := os.ReadFile(serverFile) if err != nil { if os.IsNotExist(err) { - return fmt.Errorf("server.json not found. Run 'mcp-publisher init' to create one") + if serverFile == "server.json" { + return fmt.Errorf("server.json not found. Run 'mcp-publisher init' to create one") + } + return fmt.Errorf("file not found: %s", serverFile) } - return fmt.Errorf("failed to read server.json: %w", err) + return fmt.Errorf("failed to read %s: %w", serverFile, err) } // Validate JSON