Skip to content

Commit

Permalink
chore(aws-cdk): correct construct-versions for v2 init templates (#16578
Browse files Browse the repository at this point in the history
)

When the constructs compatibility layer was removed on the v2 branch (#12054), a
change was made to the init templates to support a flexible constructs version
(either ^3 or ^10). These changes were never back-ported to v1, leading to the
situation where there are (unnecessary) differences on the v2 templates between
the v1 and v2 branches.

Backported these changes manually (for package.json and init.ts), and then by
diffing the init templates directory between master and v2-main.


----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
  • Loading branch information
njlynch committed Sep 21, 2021
1 parent 3af95bf commit f12168a
Show file tree
Hide file tree
Showing 27 changed files with 61 additions and 36 deletions.
Expand Up @@ -10,6 +10,7 @@
<ItemGroup>
<!-- CDK Construct Library dependencies -->
<PackageReference Include="Amazon.CDK.Lib" Version="%cdk-version%" />
<PackageReference Include="Constructs" Version="%constructs-version%" />

<!-- jsii Roslyn analyzers (un-comment to obtain compile-time checks for missing required props
<PackageReference Include="Amazon.Jsii.Analyzers" Version="*" PrivateAssets="all" />
Expand Down
Expand Up @@ -15,6 +15,7 @@
<ItemGroup>
<!-- CDK Construct Library dependencies -->
<PackageReference Include="Amazon.CDK.Lib" Version="%cdk-version%" />
<PackageReference Include="Constructs" Version="%constructs-version%" />

<!-- jsii Roslyn analyzers (un-comment to obtain compile-time checks for missing required props
<PackageReference Include="Amazon.Jsii.Analyzers" Version="*" PrivateAssets="all" />
Expand Down
Expand Up @@ -10,6 +10,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<cdk.version>%cdk-version%</cdk.version>
<constructs.version>%constructs-version%</constructs.version>
<junit.version>5.7.1</junit.version>
</properties>

Expand Down Expand Up @@ -44,6 +45,12 @@
<version>${cdk.version}</version>
</dependency>

<dependency>
<groupId>software.constructs</groupId>
<artifactId>constructs</artifactId>
<version>${constructs.version}</version>
</dependency>

<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
Expand Down
@@ -1,8 +1,8 @@
package com.myorg;

import software.amazon.awscdk.lib.Construct;
import software.amazon.awscdk.lib.Stack;
import software.amazon.awscdk.lib.StackProps;
import software.constructs.Construct;
import software.amazon.awscdk.Stack;
import software.amazon.awscdk.StackProps;

public class %name.PascalCased%Stack extends Stack {
public %name.PascalCased%Stack(final Construct scope, final String id) {
Expand Down
@@ -1,6 +1,6 @@
package com.myorg;

import software.amazon.awscdk.lib.App;
import software.amazon.awscdk.App;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
Expand Down
@@ -1,11 +1,11 @@
const cdk = require('aws-cdk-lib');
const { Stack } = require('aws-cdk-lib');

class %name.PascalCased%Stack extends cdk.Stack {
class %name.PascalCased%Stack extends Stack {
/**
*
* @param {cdk.Construct} scope
* @param {Construct} scope
* @param {string} id
* @param {cdk.StackProps=} props
* @param {StackProps=} props
*/
constructor(scope, id, props) {
super(scope, id, props);
Expand Down
Expand Up @@ -15,6 +15,6 @@
},
"dependencies": {
"aws-cdk-lib": "%cdk-version%",
"constructs": "^3.0.4"
"constructs": "%constructs-version%"
}
}
@@ -1,10 +1,9 @@
from aws_cdk import Stack
from constructs import Construct

class %name.PascalCased%Stack(Stack):

class %name.PascalCased%Stack(core.Stack):

def __init__(self, scope: core.Construct, construct_id: str, **kwargs) -> None:
def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
super().__init__(scope, construct_id, **kwargs)

# The code that defines your stack goes here
Expand Up @@ -20,6 +20,7 @@

install_requires=[
"aws-cdk-lib==%cdk-version%",
"constructs%constructs-version%",
],

python_requires=">=3.6",
Expand Down
@@ -1,7 +1,8 @@
import * as cdk from 'aws-cdk-lib';
import { Stack, StackProps } from 'aws-cdk-lib';
import { Construct } from 'constructs';

export class %name.PascalCased%Stack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
export class %name.PascalCased%Stack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);

// The code that defines your stack goes here
Expand Down
Expand Up @@ -21,7 +21,7 @@
},
"dependencies": {
"aws-cdk-lib": "%cdk-version%",
"constructs": "^3.0.4",
"constructs": "%constructs-version%",
"source-map-support": "^0.5.16"
}
}
@@ -1,12 +1,12 @@
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';

export interface %name.PascalCased%Props {
// Define construct properties here
}

export class %name.PascalCased% extends cdk.Construct {
export class %name.PascalCased% extends Construct {

constructor(scope: cdk.Construct, id: string, props: %name.PascalCased%Props = {}) {
constructor(scope: Construct, id: string, props: %name.PascalCased%Props = {}) {
super(scope, id);

// Define construct contents here
Expand Down
Expand Up @@ -17,10 +17,10 @@
},
"peerDependencies": {
"aws-cdk-lib": "%cdk-version%",
"constructs": "^3.0.4"
"constructs": "%constructs-version%"
},
"dependencies": {
"aws-cdk-lib": "%cdk-version%",
"constructs": "^3.0.4"
"constructs": "%constructs-version%"
}
}
Expand Up @@ -10,6 +10,7 @@
<ItemGroup>
<!-- CDK Construct Library dependencies -->
<PackageReference Include="Amazon.CDK.Lib" Version="%cdk-version%" />
<PackageReference Include="Constructs" Version="%constructs-version%" />

<!-- jsii Roslyn analyzers (un-comment to obtain compile-time checks for missing required props
<PackageReference Include="Amazon.Jsii.Analyzers" Version="*" PrivateAssets="all" />
Expand Down
Expand Up @@ -2,6 +2,7 @@
using Amazon.CDK.AWS.SNS;
using Amazon.CDK.AWS.SNS.Subscriptions;
using Amazon.CDK.AWS.SQS;
using Constructs;

namespace %name.PascalCased%
{
Expand Down
Expand Up @@ -15,6 +15,7 @@
<ItemGroup>
<!-- CDK Construct Library dependencies -->
<PackageReference Include="Amazon.CDK.Lib" Version="%cdk-version%" />
<PackageReference Include="Constructs" Version="%constructs-version%" />

<!-- jsii Roslyn analyzers (un-comment to obtain compile-time checks for missing required props
<PackageReference Include="Amazon.Jsii.Analyzers" Version="*" PrivateAssets="all" />
Expand Down
Expand Up @@ -8,6 +8,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<cdk.version>%cdk-version%</cdk.version>
<constructs.version>%constructs-version%</constructs.version>
<junit.version>5.7.1</junit.version>
</properties>
<build>
Expand Down Expand Up @@ -38,6 +39,11 @@
<artifactId>aws-cdk-lib</artifactId>
<version>${cdk.version}</version>
</dependency>
<dependency>
<groupId>software.constructs</groupId>
<artifactId>constructs</artifactId>
<version>${constructs.version}</version>
</dependency>

<dependency>
<groupId>org.junit.jupiter</groupId>
Expand Down
@@ -1,6 +1,6 @@
package com.myorg;

import software.amazon.awscdk.lib.App;
import software.amazon.awscdk.App;

public final class %name.PascalCased%App {
public static void main(final String[] args) {
Expand Down
@@ -1,9 +1,9 @@
package com.myorg;

import software.amazon.awscdk.lib.Construct;
import software.amazon.awscdk.lib.Duration;
import software.amazon.awscdk.lib.Stack;
import software.amazon.awscdk.lib.StackProps;
import software.constructs.Construct;
import software.amazon.awscdk.Duration;
import software.amazon.awscdk.Stack;
import software.amazon.awscdk.StackProps;
import software.amazon.awscdk.services.sns.Topic;
import software.amazon.awscdk.services.sns.subscriptions.SqsSubscription;
import software.amazon.awscdk.services.sqs.Queue;
Expand Down
@@ -1,6 +1,6 @@
package com.myorg;

import software.amazon.awscdk.lib.App;
import software.amazon.awscdk.App;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
Expand Down
Expand Up @@ -15,6 +15,6 @@
},
"dependencies": {
"aws-cdk-lib": "%cdk-version%",
"constructs": "^3.0.4"
"constructs": "%constructs-version%"
}
}
Expand Up @@ -9,14 +9,14 @@
)


class %name.PascalCased%Stack(core.Stack):
class %name.PascalCased%Stack(Stack):

def __init__(self, scope: core.Construct, construct_id: str, **kwargs) -> None:
def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
super().__init__(scope, construct_id, **kwargs)

queue = sqs.Queue(
self, "%name.PascalCased%Queue",
visibility_timeout=core.Duration.seconds(300),
visibility_timeout=Duration.seconds(300),
)

topic = sns.Topic(
Expand Down
Expand Up @@ -20,6 +20,7 @@

install_requires=[
"aws-cdk-lib==%cdk-version%",
"constructs%constructs-version%",
],

python_requires=">=3.6",
Expand Down
@@ -1,14 +1,15 @@
import * as cdk from 'aws-cdk-lib';
import { Duration, Stack, StackProps } from 'aws-cdk-lib';
import * as sns from 'aws-cdk-lib/aws-sns';
import * as subs from 'aws-cdk-lib/aws-sns-subscriptions';
import * as sqs from 'aws-cdk-lib/aws-sqs';
import { Construct } from 'constructs';

export class %name.PascalCased%Stack extends cdk.Stack {
constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
export class %name.PascalCased%Stack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);

const queue = new sqs.Queue(this, '%name.PascalCased%Queue', {
visibilityTimeout: cdk.Duration.seconds(300)
visibilityTimeout: Duration.seconds(300)
});

const topic = new sns.Topic(this, '%name.PascalCased%Topic');
Expand Down
Expand Up @@ -21,6 +21,6 @@
},
"dependencies": {
"aws-cdk-lib": "%cdk-version%",
"constructs": "^3.0.4"
"constructs": "%constructs-version%"
}
}
3 changes: 3 additions & 0 deletions packages/aws-cdk/lib/init.ts
Expand Up @@ -159,10 +159,13 @@ export class InitTemplate {
const MATCH_VER_BUILD = /\+[a-f0-9]+$/; // Matches "+BUILD" in "x.y.z-beta+BUILD"
// eslint-disable-next-line @typescript-eslint/no-require-imports
const cdkVersion = require('../package.json').version.replace(MATCH_VER_BUILD, '');
// eslint-disable-next-line @typescript-eslint/no-require-imports
const constructsVersion = require('../package.json').devDependencies.constructs.replace(MATCH_VER_BUILD, '');
return template.replace(/%name%/g, project.name)
.replace(/%name\.camelCased%/g, camelCase(project.name))
.replace(/%name\.PascalCased%/g, camelCase(project.name, { pascalCase: true }))
.replace(/%cdk-version%/g, cdkVersion)
.replace(/%constructs-version%/g, constructsVersion)
.replace(/%cdk-home%/g, cdkHomeDir())
.replace(/%name\.PythonModule%/g, project.name.replace(/-/g, '_'))
.replace(/%python-executable%/g, pythonExecutable())
Expand Down
1 change: 1 addition & 0 deletions packages/aws-cdk/package.json
Expand Up @@ -58,6 +58,7 @@
"@types/yargs": "^15.0.14",
"aws-sdk-mock": "^5.2.1",
"cdk-build-tools": "0.0.0",
"constructs": "^3.3.69",
"jest": "^26.6.3",
"make-runnable": "^1.3.10",
"mockery": "^2.1.0",
Expand Down

0 comments on commit f12168a

Please sign in to comment.