@@ -77,18 +77,18 @@ func main() {
7777}
7878
7979func  printUsage () {
80- 	fmt .Println ("MCP Registry Publisher Tool" )
81- 	fmt .Println ()
82- 	fmt .Println ("Usage:" )
83- 	fmt .Println ("  mcp-publisher publish [flags]    Publish a server.json file to the registry" )
84- 	fmt .Println ("  mcp-publisher create [flags]     Create a new server.json file" )
85- 	fmt .Println ()
86- 	fmt .Println ("Use 'mcp-publisher <command> --help' for more information about a command." )
80+ 	log .Println ("MCP Registry Publisher Tool" )
81+ 	log .Println ()
82+ 	log .Println ("Usage:" )
83+ 	log .Println ("  mcp-publisher publish [flags]    Publish a server.json file to the registry" )
84+ 	log .Println ("  mcp-publisher create [flags]     Create a new server.json file" )
85+ 	log .Println ()
86+ 	log .Println ("Use 'mcp-publisher <command> --help' for more information about a command." )
8787}
8888
8989func  publishCommand () {
9090	publishFlags  :=  flag .NewFlagSet ("publish" , flag .ExitOnError )
91- 	 
91+ 
9292	var  registryURL  string 
9393	var  mcpFilePath  string 
9494	var  forceLogin  bool 
@@ -100,7 +100,9 @@ func publishCommand() {
100100	publishFlags .BoolVar (& forceLogin , "login" , false , "force a new login even if a token exists" )
101101	publishFlags .StringVar (& authMethod , "auth-method" , "github-oauth" , "authentication method to use (default: github-oauth)" )
102102
103- 	publishFlags .Parse (os .Args [2 :])
103+ 	if  err  :=  publishFlags .Parse (os .Args [2 :]); err  !=  nil  {
104+ 		log .Fatalf ("Error parsing flags: %v" , err )
105+ 	}
104106
105107	if  registryURL  ==  ""  ||  mcpFilePath  ==  ""  {
106108		publishFlags .Usage ()
@@ -153,22 +155,22 @@ func publishCommand() {
153155
154156func  createCommand () {
155157	createFlags  :=  flag .NewFlagSet ("create" , flag .ExitOnError )
156- 	 
158+ 
157159	// Basic server information flags 
158160	var  name  string 
159161	var  description  string 
160162	var  version  string 
161163	var  repoURL  string 
162164	var  repoSource  string 
163165	var  output  string 
164- 	 
166+ 
165167	// Package information flags 
166168	var  registryName  string 
167169	var  packageName  string 
168170	var  packageVersion  string 
169171	var  runtimeHint  string 
170172	var  execute  string 
171- 	 
173+ 
172174	// Repeatable flags 
173175	var  envVars  []string 
174176	var  packageArgs  []string 
@@ -183,27 +185,29 @@ func createCommand() {
183185	createFlags .StringVar (& repoSource , "repo-source" , "github" , "Repository source" )
184186	createFlags .StringVar (& output , "output" , "server.json" , "Output file path" )
185187	createFlags .StringVar (& output , "o" , "server.json" , "Output file path (shorthand)" )
186- 	 
188+ 
187189	createFlags .StringVar (& registryName , "registry" , "npm" , "Package registry name" )
188190	createFlags .StringVar (& packageName , "package-name" , "" , "Package name (defaults to server name)" )
189191	createFlags .StringVar (& packageVersion , "package-version" , "" , "Package version (defaults to server version)" )
190192	createFlags .StringVar (& runtimeHint , "runtime-hint" , "" , "Runtime hint (e.g., docker)" )
191193	createFlags .StringVar (& execute , "execute" , "" , "Command to execute the server" )
192194	createFlags .StringVar (& execute , "e" , "" , "Command to execute the server (shorthand)" )
193- 	 
195+ 
194196	// Custom flag for environment variables 
195197	createFlags .Func ("env-var" , "Environment variable in format NAME:DESCRIPTION (can be repeated)" , func (value  string ) error  {
196198		envVars  =  append (envVars , value )
197199		return  nil 
198200	})
199- 	 
201+ 
200202	// Custom flag for package arguments 
201203	createFlags .Func ("package-arg" , "Package argument in format VALUE:DESCRIPTION (can be repeated)" , func (value  string ) error  {
202204		packageArgs  =  append (packageArgs , value )
203205		return  nil 
204206	})
205207
206- 	createFlags .Parse (os .Args [2 :])
208+ 	if  err  :=  createFlags .Parse (os .Args [2 :]); err  !=  nil  {
209+ 		log .Fatalf ("Error parsing flags: %v" , err )
210+ 	}
207211
208212	// Validate required flags 
209213	if  name  ==  ""  {
@@ -225,7 +229,8 @@ func createCommand() {
225229	}
226230
227231	// Create server structure 
228- 	server  :=  createServerStructure (name , description , version , repoURL , repoSource , registryName , packageName , packageVersion , runtimeHint , execute , envVars , packageArgs )
232+ 	server  :=  createServerStructure (name , description , version , repoURL , repoSource ,
233+ 		registryName , packageName , packageVersion , runtimeHint , execute , envVars , packageArgs )
229234
230235	// Convert to JSON 
231236	jsonData , err  :=  json .MarshalIndent (server , "" , "  " )
@@ -234,7 +239,7 @@ func createCommand() {
234239	}
235240
236241	// Write to file 
237- 	err  =  os .WriteFile (output , jsonData , 0644 )
242+ 	err  =  os .WriteFile (output , jsonData , 0600 )
238243	if  err  !=  nil  {
239244		log .Fatalf ("Error writing file: %v" , err )
240245	}
@@ -300,7 +305,8 @@ func publishToRegistry(registryURL string, mcpData []byte, token string) error {
300305	return  nil 
301306}
302307
303- func  createServerStructure (name , description , version , repoURL , repoSource , registryName , packageName , packageVersion , runtimeHint , execute  string , envVars  []string , packageArgs  []string ) ServerJSON  {
308+ func  createServerStructure (name , description , version , repoURL , repoSource , registryName ,
309+ 	packageName , packageVersion , runtimeHint , execute  string , envVars  []string , packageArgs  []string ) ServerJSON  {
304310	// Parse environment variables 
305311	var  environmentVariables  []EnvironmentVariable 
306312	for  _ , envVar  :=  range  envVars  {
@@ -328,7 +334,7 @@ func createServerStructure(name, description, version, repoURL, repoSource, regi
328334		if  len (parts ) ==  2  {
329335			description  =  parts [1 ]
330336		}
331- 		 
337+ 
332338		packageArguments  =  append (packageArguments , RuntimeArgument {
333339			Description : description ,
334340			IsRequired :  true , // Package arguments are typically required 
@@ -349,15 +355,16 @@ func createServerStructure(name, description, version, repoURL, repoSource, regi
349355			// Skip the first part (command) and add each argument as a runtime argument 
350356			for  i , arg  :=  range  parts [1 :] {
351357				description  :=  fmt .Sprintf ("Runtime argument %d" , i + 1 )
352- 				 
358+ 
353359				// Try to provide better descriptions based on common patterns 
354- 				if  strings .HasPrefix (arg , "--" ) {
360+ 				switch  {
361+ 				case  strings .HasPrefix (arg , "--" ):
355362					description  =  fmt .Sprintf ("Command line flag: %s" , arg )
356- 				}  else   if   strings .HasPrefix (arg , "-" ) &&  len (arg ) ==  2  { 
363+ 				case   strings .HasPrefix (arg , "-" ) &&  len (arg ) ==  2 : 
357364					description  =  fmt .Sprintf ("Command line option: %s" , arg )
358- 				}  else   if   strings .Contains (arg , "=" ) { 
365+ 				case   strings .Contains (arg , "=" ): 
359366					description  =  fmt .Sprintf ("Configuration parameter: %s" , arg )
360- 				}  else   if   i  >  0  &&  strings .HasPrefix (parts [i ], "-" ) { 
367+ 				case   i  >  0  &&  strings .HasPrefix (parts [i ], "-" ): 
361368					description  =  fmt .Sprintf ("Value for %s" , parts [i ])
362369				}
363370
@@ -410,13 +417,14 @@ func smartSplit(command string) []string {
410417	for  _ , char  :=  range  command  {
411418		switch  {
412419		case  char  ==  '"'  ||  char  ==  '\'' :
413- 			if  ! inQuotes  {
420+ 			switch  {
421+ 			case  ! inQuotes :
414422				inQuotes  =  true 
415423				quoteChar  =  char 
416- 			}  else   if   char  ==  quoteChar  { 
424+ 			case   char  ==  quoteChar : 
417425				inQuotes  =  false 
418426				quoteChar  =  0 
419- 			}  else  { 
427+ 			default : 
420428				current .WriteRune (char )
421429			}
422430		case  char  ==  ' '  &&  ! inQuotes :
0 commit comments