Skip to content

Commit 190b60c

Browse files
authored
fix: remove github auth token requirement (github#28)
* fix: remove github auth token requirement
1 parent 6717302 commit 190b60c

File tree

2 files changed

+99
-87
lines changed

2 files changed

+99
-87
lines changed

cmd/create/main.go

Lines changed: 93 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -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
269277
What 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
}

pkg/github/github.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,13 @@ func NewFromServer(server servers.Server) *Client {
4545
}
4646

4747
func New() *Client {
48+
token := os.Getenv("GITHUB_TOKEN")
49+
if token == "" {
50+
return NewUnauthenticated()
51+
}
52+
4853
return &Client{
49-
gh: github.NewClient(nil).WithAuthToken(os.Getenv("GITHUB_TOKEN")),
54+
gh: github.NewClient(nil).WithAuthToken(token),
5055
}
5156
}
5257

0 commit comments

Comments
 (0)