@@ -136,8 +136,17 @@ func run(ctx context.Context, buildURL, name, category, userProvidedImage string
136136 gitURL += ":" + directory
137137 }
138138
139- cmd := exec .CommandContext (ctx , "docker" , "buildx" , "build" , "--secret" , "id=GIT_AUTH_TOKEN" , "-t" , "check" , "-t" , tag , "--label" , "org.opencontainers.image.revision=" + sha , gitURL )
140- cmd .Env = []string {"GIT_AUTH_TOKEN=" + os .Getenv ("GITHUB_TOKEN" ), "PATH=" + os .Getenv ("PATH" )}
139+ var cmd * exec.Cmd
140+ token := os .Getenv ("GITHUB_TOKEN" )
141+
142+ if token != "" {
143+ cmd = exec .CommandContext (ctx , "docker" , "buildx" , "build" , "--secret" , "id=GIT_AUTH_TOKEN" , "-t" , "check" , "-t" , tag , "--label" , "org.opencontainers.image.revision=" + sha , gitURL )
144+ cmd .Env = []string {"GIT_AUTH_TOKEN=" + token , "PATH=" + os .Getenv ("PATH" )}
145+ } else {
146+ cmd = exec .CommandContext (ctx , "docker" , "buildx" , "build" , "-t" , "check" , "-t" , tag , "--label" , "org.opencontainers.image.revision=" + sha , gitURL )
147+ cmd .Env = []string {"PATH=" + os .Getenv ("PATH" )}
148+ }
149+
141150 cmd .Dir = os .TempDir ()
142151 cmd .Stdout = os .Stdout
143152 cmd .Stderr = os .Stderr
@@ -154,76 +163,75 @@ func run(ctx context.Context, buildURL, name, category, userProvidedImage string
154163 return fmt .Errorf ("getting working directory: %w\n %s" , err , out )
155164 }
156165
157-
158- var (
159- secrets []servers.Secret
160- env []servers.Env
161- command []string
162- )
163- for i := 0 ; i < len (args ); i += 1 {
164- if args [i ] == "-e" {
165- kv := args [i + 1 ]
166- parts := strings .SplitN (kv , "=" , 2 )
167-
168- if strings .HasSuffix (parts [0 ], "_TOKEN" ) || strings .HasSuffix (parts [0 ], "_KEY" ) || strings .HasSuffix (parts [0 ], "_PASSWORD" ){
169- secrets = append (secrets , servers.Secret {
170- Name : secretName (name , parts [0 ]),
171- Env : parts [0 ],
172- Example : "<" + parts [0 ] + ">" ,
173- })
174- } else {
175- env = append (env , servers.Env {
176- Name : parts [0 ],
177- Example : parts [1 ],
178- })
179- }
180- i += 1
166+ var (
167+ secrets []servers.Secret
168+ env []servers.Env
169+ command []string
170+ )
171+ for i := 0 ; i < len (args ); i += 1 {
172+ if args [i ] == "-e" {
173+ kv := args [i + 1 ]
174+ parts := strings .SplitN (kv , "=" , 2 )
175+
176+ if strings .HasSuffix (parts [0 ], "_TOKEN" ) || strings .HasSuffix (parts [0 ], "_KEY" ) || strings .HasSuffix (parts [0 ], "_PASSWORD" ) {
177+ secrets = append (secrets , servers.Secret {
178+ Name : secretName (name , parts [0 ]),
179+ Env : parts [0 ],
180+ Example : "<" + parts [0 ] + ">" ,
181+ })
181182 } else {
182- command = append (command , args [i ])
183+ env = append (env , servers.Env {
184+ Name : parts [0 ],
185+ Example : parts [1 ],
186+ })
183187 }
188+ i += 1
189+ } else {
190+ command = append (command , args [i ])
184191 }
192+ }
185193
186- icon , err := client .FindIcon (ctx , refProjectURL )
187- if err != nil {
188- return err
189- }
194+ icon , err := client .FindIcon (ctx , refProjectURL )
195+ if err != nil {
196+ return err
197+ }
190198
191- if branch == "main" {
192- branch = ""
193- }
199+ if branch == "main" {
200+ branch = ""
201+ }
194202
195- env , schema := servers .CreateSchema (name , env )
196-
197- server := servers.Server {
198- Name : name ,
199- Image : tag ,
200- Type : "server" ,
201- Meta : servers.Meta {
202- Category : category ,
203- Tags : tags ,
204- },
205- About : servers.About {
206- Icon : icon ,
207- Title : title ,
208- Description : "TODO (only to provide a better description than the upstream project)" ,
209- },
210- Source : servers.Source {
211- Project : projectURL ,
212- Upstream : upstream ,
213- Branch : branch ,
214- Directory : directory ,
215- },
216- Run : servers.Run {
217- Command : command ,
218- },
219- Config : servers.Config {
220- Description : "Configure the connection to TODO" ,
221- Secrets : secrets ,
222- Env : env ,
223- Parameters : schema ,
224- },
225- }
226- if listTools {
203+ env , schema := servers .CreateSchema (name , env )
204+
205+ server := servers.Server {
206+ Name : name ,
207+ Image : tag ,
208+ Type : "server" ,
209+ Meta : servers.Meta {
210+ Category : category ,
211+ Tags : tags ,
212+ },
213+ About : servers.About {
214+ Icon : icon ,
215+ Title : title ,
216+ Description : "TODO (only to provide a better description than the upstream project)" ,
217+ },
218+ Source : servers.Source {
219+ Project : projectURL ,
220+ Upstream : upstream ,
221+ Branch : branch ,
222+ Directory : directory ,
223+ },
224+ Run : servers.Run {
225+ Command : command ,
226+ },
227+ Config : servers.Config {
228+ Description : "Configure the connection to TODO" ,
229+ Secrets : secrets ,
230+ Env : env ,
231+ Parameters : schema ,
232+ },
233+ }
234+ if listTools {
227235 tools , err := mcp .Tools (ctx , server , false , false , false )
228236 if err != nil {
229237 return err
@@ -239,31 +247,31 @@ func run(ctx context.Context, buildURL, name, category, userProvidedImage string
239247
240248 fmt .Printf ("\n -----------------------------------------\n \n " )
241249 }
242- if exists , err := checkLocalServerExists (name ); err != nil {
243- return err
244- } else if exists {
245- fmt .Printf ("[WARNING] Server for %s already exists, overwriting...\n " , name )
246- }
250+ if exists , err := checkLocalServerExists (name ); err != nil {
251+ return err
252+ } else if exists {
253+ fmt .Printf ("[WARNING] Server for %s already exists, overwriting...\n " , name )
254+ }
247255
248- serverDir := filepath .Join ("servers" , server .Name )
249- _ = os .Mkdir (serverDir , 0755 )
256+ serverDir := filepath .Join ("servers" , server .Name )
257+ _ = os .Mkdir (serverDir , 0755 )
250258
251- serverFile := filepath .Join (serverDir , "server.yaml" )
259+ serverFile := filepath .Join (serverDir , "server.yaml" )
252260
253- var buf bytes.Buffer
254- encoder := yaml .NewEncoder (& buf )
255- encoder .SetIndent (2 )
256- if err := encoder .Encode (server ); err != nil {
257- return err
258- }
261+ var buf bytes.Buffer
262+ encoder := yaml .NewEncoder (& buf )
263+ encoder .SetIndent (2 )
264+ if err := encoder .Encode (server ); err != nil {
265+ return err
266+ }
259267
260- if err := os .WriteFile (serverFile , buf .Bytes (), 0644 ); err != nil {
261- return fmt .Errorf ("writing server config: %w" , err )
262- }
268+ if err := os .WriteFile (serverFile , buf .Bytes (), 0644 ); err != nil {
269+ return fmt .Errorf ("writing server config: %w" , err )
270+ }
263271
264- fmt .Printf ("Server definition written to %s.\n " , serverFile )
272+ fmt .Printf ("Server definition written to %s.\n " , serverFile )
265273
266- fmt .Printf (`
274+ fmt .Printf (`
267275-----------------------------------------
268276
269277What to do next?
@@ -283,7 +291,6 @@ What to do next?
283291
284292 5. Open a Pull Request with the %[2]s file.
285293` , name , serverFile )
286-
287294
288295 return nil
289296}
0 commit comments