Skip to content

Commit 14d2d4e

Browse files
authored
Merge pull request #386 from docker/profile-special-char-replace
feat: use underscores intead of hyphens in profile id generation
2 parents 26b8a87 + aceb8ce commit 14d2d4e

4 files changed

Lines changed: 22 additions & 22 deletions

File tree

docs/profiles.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ docker mcp profile create --name "My Servers" --id my-servers \
7777

7878
**Notes:**
7979
- `--name` is required and serves as the human-readable name
80-
- `--id` is optional; if not provided, it's generated from the name (lowercase, alphanumeric with hyphens)
80+
- `--id` is optional; if not provided, it's generated from the name (lowercase, alphanumeric with underscores)
8181
- `--server` can be specified multiple times to add multiple servers
8282
- Server references must be either:
8383
- `docker://` prefix for OCI images

pkg/workingset/create_test.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -101,11 +101,11 @@ func TestCreateWithDockerImages(t *testing.T) {
101101
require.NoError(t, err)
102102

103103
// Verify the working set was created
104-
dbSet, err := dao.GetWorkingSet(ctx, "my-test-set")
104+
dbSet, err := dao.GetWorkingSet(ctx, "my_test_set")
105105
require.NoError(t, err)
106106
require.NotNil(t, dbSet)
107107

108-
assert.Equal(t, "my-test-set", dbSet.ID)
108+
assert.Equal(t, "my_test_set", dbSet.ID)
109109
assert.Equal(t, "My Test Set", dbSet.Name)
110110
assert.Len(t, dbSet.Servers, 2)
111111

@@ -127,7 +127,7 @@ func TestCreateWithRegistryServers(t *testing.T) {
127127
require.NoError(t, err)
128128

129129
// Verify the working set was created
130-
dbSet, err := dao.GetWorkingSet(ctx, "registry-set")
130+
dbSet, err := dao.GetWorkingSet(ctx, "registry_set")
131131
require.NoError(t, err)
132132
require.NotNil(t, dbSet)
133133

@@ -151,7 +151,7 @@ func TestCreateWithMixedServers(t *testing.T) {
151151
require.NoError(t, err)
152152

153153
// Verify the working set was created
154-
dbSet, err := dao.GetWorkingSet(ctx, "mixed-set")
154+
dbSet, err := dao.GetWorkingSet(ctx, "mixed_set")
155155
require.NoError(t, err)
156156
require.NotNil(t, dbSet)
157157

@@ -231,9 +231,9 @@ func TestCreateGeneratesUniqueIds(t *testing.T) {
231231
}
232232

233233
// Verify ID pattern
234-
assert.Contains(t, ids, "test-set")
235-
assert.Contains(t, ids, "test-set-2")
236-
assert.Contains(t, ids, "test-set-3")
234+
assert.Contains(t, ids, "test_set")
235+
assert.Contains(t, ids, "test_set_2")
236+
assert.Contains(t, ids, "test_set_3")
237237
}
238238

239239
func TestCreateWithInvalidServerFormat(t *testing.T) {
@@ -266,7 +266,7 @@ func TestCreateWithEmptyServers(t *testing.T) {
266266
require.NoError(t, err)
267267

268268
// Verify the working set was created with no servers
269-
dbSet, err := dao.GetWorkingSet(ctx, "empty-set")
269+
dbSet, err := dao.GetWorkingSet(ctx, "empty_set")
270270
require.NoError(t, err)
271271
require.NotNil(t, dbSet)
272272

@@ -283,7 +283,7 @@ func TestCreateAddsDefaultSecrets(t *testing.T) {
283283
require.NoError(t, err)
284284

285285
// Verify default secrets were added
286-
dbSet, err := dao.GetWorkingSet(ctx, "test-set")
286+
dbSet, err := dao.GetWorkingSet(ctx, "test_set")
287287
require.NoError(t, err)
288288
require.NotNil(t, dbSet)
289289

@@ -301,22 +301,22 @@ func TestCreateNameWithSpecialCharacters(t *testing.T) {
301301
{
302302
name: "name with spaces",
303303
inputName: "My Test Set",
304-
expectedID: "my-test-set",
304+
expectedID: "my_test_set",
305305
},
306306
{
307307
name: "name with special chars",
308308
inputName: "Test@Set#123!",
309-
expectedID: "test-set-123-",
309+
expectedID: "test_set_123_",
310310
},
311311
{
312312
name: "name with multiple spaces",
313313
inputName: "Test Set",
314-
expectedID: "test-set",
314+
expectedID: "test_set",
315315
},
316316
{
317317
name: "name with underscores",
318318
inputName: "Test_Set_Name",
319-
expectedID: "test-set-name",
319+
expectedID: "test_set_name",
320320
},
321321
}
322322

pkg/workingset/workingset.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -349,9 +349,9 @@ func (s *Server) BasicName() string {
349349
}
350350

351351
func createWorkingSetID(ctx context.Context, name string, dao db.DAO) (string, error) {
352-
// Replace all non-alphanumeric characters with a hyphen and make all uppercase lowercase
352+
// Replace all non-alphanumeric characters with an underscore and make all uppercase lowercase
353353
re := regexp.MustCompile("[^a-zA-Z0-9]+")
354-
cleaned := re.ReplaceAllString(name, "-")
354+
cleaned := re.ReplaceAllString(name, "_")
355355
baseName := strings.ToLower(cleaned)
356356

357357
existingSets, err := dao.FindWorkingSetsByIDPrefix(ctx, baseName)
@@ -371,7 +371,7 @@ func createWorkingSetID(ctx context.Context, name string, dao db.DAO) (string, e
371371
// TODO(cody): there are better ways to do this, but this is a simple brute force for now
372372
// Append a number to the base name
373373
for i := 2; i <= 100; i++ {
374-
newName := fmt.Sprintf("%s-%d", baseName, i)
374+
newName := fmt.Sprintf("%s_%d", baseName, i)
375375
if !takenIDs[newName] {
376376
return newName, nil
377377
}

pkg/workingset/workingset_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -911,24 +911,24 @@ func TestCreateWorkingSetID(t *testing.T) {
911911
{
912912
name: "name with spaces",
913913
inputName: "My Working Set",
914-
expectedID: "my-working-set",
914+
expectedID: "my_working_set",
915915
},
916916
{
917917
name: "name with special characters",
918918
inputName: "My@Working#Set!",
919-
expectedID: "my-working-set-",
919+
expectedID: "my_working_set_",
920920
},
921921
{
922922
name: "name with collision",
923923
inputName: "test",
924924
existingIDs: []string{"test"},
925-
expectedID: "test-2",
925+
expectedID: "test_2",
926926
},
927927
{
928928
name: "name with multiple collisions",
929929
inputName: "test",
930-
existingIDs: []string{"test", "test-2", "test-3"},
931-
expectedID: "test-4",
930+
existingIDs: []string{"test", "test_2", "test_3"},
931+
expectedID: "test_4",
932932
},
933933
}
934934

0 commit comments

Comments
 (0)