Skip to content

Commit 5f2fbda

Browse files
authored
fix: disallow underscores in deployment target names and sanitize stack names (#412)
1 parent dd17167 commit 5f2fbda

File tree

4 files changed

+16
-5
lines changed

4 files changed

+16
-5
lines changed

src/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,12 @@ function toEnvironment(target: AwsDeploymentTarget): Environment {
5656
};
5757
}
5858
59+
function sanitize(name: string): string {
60+
return name.replace(/_/g, '-');
61+
}
62+
5963
function toStackName(projectName: string, targetName: string): string {
60-
return \`AgentCore-\${projectName}-\${targetName}\`;
64+
return \`AgentCore-\${sanitize(projectName)}-\${sanitize(targetName)}\`;
6165
}
6266
6367
async function main() {

src/assets/cdk/bin/cdk.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,12 @@ function toEnvironment(target: AwsDeploymentTarget): Environment {
1111
};
1212
}
1313

14+
function sanitize(name: string): string {
15+
return name.replace(/_/g, '-');
16+
}
17+
1418
function toStackName(projectName: string, targetName: string): string {
15-
return `AgentCore-${projectName}-${targetName}`;
19+
return `AgentCore-${sanitize(projectName)}-${sanitize(targetName)}`;
1620
}
1721

1822
async function main() {

src/schema/schemas/__tests__/aws-targets.test.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,10 @@ describe('DeploymentTargetNameSchema', () => {
7373
expect(DeploymentTargetNameSchema.safeParse('default').success).toBe(true);
7474
expect(DeploymentTargetNameSchema.safeParse('prod').success).toBe(true);
7575
expect(DeploymentTargetNameSchema.safeParse('dev-us-east').success).toBe(true);
76-
expect(DeploymentTargetNameSchema.safeParse('staging_env').success).toBe(true);
76+
});
77+
78+
it('rejects name with underscores', () => {
79+
expect(DeploymentTargetNameSchema.safeParse('staging_env').success).toBe(false);
7780
});
7881

7982
it('rejects name starting with digit', () => {

src/schema/schemas/aws-targets.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ export const DeploymentTargetNameSchema = z
2727
.min(1)
2828
.max(64)
2929
.regex(
30-
/^[a-zA-Z][a-zA-Z0-9_-]*$/,
31-
'Name must start with a letter and contain only alphanumeric characters, hyphens, and underscores'
30+
/^[a-zA-Z][a-zA-Z0-9-]*$/,
31+
'Name must start with a letter and contain only alphanumeric characters and hyphens'
3232
)
3333
.describe('Unique identifier for the deployment target');
3434

0 commit comments

Comments
 (0)