From 706150e36678c48ff7cb79795b37482c3f1dfad2 Mon Sep 17 00:00:00 2001 From: Romain Marcadier Date: Tue, 9 Jun 2020 14:15:08 +0200 Subject: [PATCH] chore: remove awkward cfn2ts script entries (#8231) Packages that are not containers of L1 libraries (`Cfn~` classes) have no point in having a `cfn2ts` script registered. This causes problems when trying to generate L1s across the whole repository using `lerna run cfn2ts`. This adds a `pkglint` rule that mandates the `cfn2ts` script is only present when the related other metadata is also required to be present. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- .../aws-autoscaling-hooktargets/package.json | 1 - .../@aws-cdk/aws-cloudwatch-actions/package.json | 1 - packages/@aws-cdk/aws-docdb/package.json | 2 +- packages/@aws-cdk/aws-dynamodb-global/package.json | 2 -- packages/@aws-cdk/aws-ecs-patterns/package.json | 1 - .../aws-elasticloadbalancingv2-actions/package.json | 1 - .../aws-elasticloadbalancingv2-targets/package.json | 1 - packages/@aws-cdk/aws-events-targets/package.json | 1 - .../@aws-cdk/aws-lambda-destinations/package.json | 1 - packages/@aws-cdk/aws-lambda-nodejs/package.json | 1 - packages/@aws-cdk/aws-logs-destinations/package.json | 1 - packages/@aws-cdk/aws-route53-patterns/package.json | 1 - packages/@aws-cdk/aws-route53-targets/package.json | 1 - packages/@aws-cdk/aws-ses-actions/package.json | 1 - packages/@aws-cdk/aws-sns-subscriptions/package.json | 1 - .../@aws-cdk/aws-stepfunctions-tasks/package.json | 1 - packages/@aws-cdk/custom-resources/package.json | 1 - packages/aws-cdk/package.json | 2 +- packages/cdk-assets/package.json | 1 - tools/pkglint/lib/rules.ts | 10 +++------- tools/pkglint/package.json | 8 ++++---- tools/yarn-cling/.eslintrc.js | 3 +++ tools/yarn-cling/.gitignore | 5 +++++ tools/yarn-cling/.npmignore | 2 ++ tools/yarn-cling/lib/index.ts | 6 +++--- tools/yarn-cling/package.json | 12 ++++++++++-- .../test/test-fixture/.no-packagejson-validator | 1 + 27 files changed, 33 insertions(+), 36 deletions(-) create mode 100644 tools/yarn-cling/.eslintrc.js create mode 100644 tools/yarn-cling/test/test-fixture/.no-packagejson-validator diff --git a/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json b/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json index 6a8d4669fc8fc..fc353a027cd84 100644 --- a/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json +++ b/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json @@ -41,7 +41,6 @@ "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", - "cfn2ts": "cfn2ts", "build+test+package": "npm run build+test && npm run package", "build+test": "npm run build && npm test", "compat": "cdk-compat" diff --git a/packages/@aws-cdk/aws-cloudwatch-actions/package.json b/packages/@aws-cdk/aws-cloudwatch-actions/package.json index 8f8d1edd98766..b0fda2aa4968d 100644 --- a/packages/@aws-cdk/aws-cloudwatch-actions/package.json +++ b/packages/@aws-cdk/aws-cloudwatch-actions/package.json @@ -41,7 +41,6 @@ "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", - "cfn2ts": "cfn2ts", "build+test+package": "npm run build+test && npm run package", "build+test": "npm run build && npm test", "compat": "cdk-compat" diff --git a/packages/@aws-cdk/aws-docdb/package.json b/packages/@aws-cdk/aws-docdb/package.json index cde479290182a..3fa00723a3c94 100644 --- a/packages/@aws-cdk/aws-docdb/package.json +++ b/packages/@aws-cdk/aws-docdb/package.json @@ -51,7 +51,7 @@ "cloudformation": "AWS::DocDB", "jest": true }, -"keywords": [ + "keywords": [ "aws", "cdk", "constructs", diff --git a/packages/@aws-cdk/aws-dynamodb-global/package.json b/packages/@aws-cdk/aws-dynamodb-global/package.json index c280e52d7ffc4..e214cbbbb210c 100644 --- a/packages/@aws-cdk/aws-dynamodb-global/package.json +++ b/packages/@aws-cdk/aws-dynamodb-global/package.json @@ -57,7 +57,6 @@ "@types/nodeunit": "^0.0.31", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", - "cfn2ts": "0.0.0", "nodeunit": "^0.11.3", "pkglint": "0.0.0" }, @@ -77,7 +76,6 @@ "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", - "cfn2ts": "cfn2ts", "build+test+package": "npm run build+test && npm run package", "build+test": "npm run build && npm test", "compat": "cdk-compat" diff --git a/packages/@aws-cdk/aws-ecs-patterns/package.json b/packages/@aws-cdk/aws-ecs-patterns/package.json index 451153745909f..16bcc51f7e25e 100644 --- a/packages/@aws-cdk/aws-ecs-patterns/package.json +++ b/packages/@aws-cdk/aws-ecs-patterns/package.json @@ -41,7 +41,6 @@ "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", - "cfn2ts": "cfn2ts", "build+test+package": "npm run build+test && npm run package", "build+test": "npm run build && npm test", "compat": "cdk-compat" diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json b/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json index c1a5a92fb1053..ba866cf3a4dee 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json @@ -41,7 +41,6 @@ "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", - "cfn2ts": "cfn2ts", "build+test+package": "npm run build+test && npm run package", "build+test": "npm run build && npm test", "compat": "cdk-compat" diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json b/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json index 768f9e7eebc7f..fdef0856ac238 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json @@ -41,7 +41,6 @@ "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", - "cfn2ts": "cfn2ts", "build+test+package": "npm run build+test && npm run package", "build+test": "npm run build && npm test", "compat": "cdk-compat" diff --git a/packages/@aws-cdk/aws-events-targets/package.json b/packages/@aws-cdk/aws-events-targets/package.json index b9f9efad57c95..64b7060517815 100644 --- a/packages/@aws-cdk/aws-events-targets/package.json +++ b/packages/@aws-cdk/aws-events-targets/package.json @@ -41,7 +41,6 @@ "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", - "cfn2ts": "cfn2ts", "build+test+package": "npm run build+test && npm run package", "build+test": "npm run build && npm test", "compat": "cdk-compat" diff --git a/packages/@aws-cdk/aws-lambda-destinations/package.json b/packages/@aws-cdk/aws-lambda-destinations/package.json index 92805e6004bd9..d02ddde7aa635 100644 --- a/packages/@aws-cdk/aws-lambda-destinations/package.json +++ b/packages/@aws-cdk/aws-lambda-destinations/package.json @@ -41,7 +41,6 @@ "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", - "cfn2ts": "cfn2ts", "build+test+package": "npm run build+test && npm run package", "build+test": "npm run build && npm test", "compat": "cdk-compat" diff --git a/packages/@aws-cdk/aws-lambda-nodejs/package.json b/packages/@aws-cdk/aws-lambda-nodejs/package.json index b415c57d92d9e..31995f757c849 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/package.json +++ b/packages/@aws-cdk/aws-lambda-nodejs/package.json @@ -41,7 +41,6 @@ "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", - "cfn2ts": "cfn2ts", "build+test+package": "npm run build+test && npm run package", "build+test": "npm run build && npm test", "compat": "cdk-compat" diff --git a/packages/@aws-cdk/aws-logs-destinations/package.json b/packages/@aws-cdk/aws-logs-destinations/package.json index c7e151e165b6c..bfa6f4a73f371 100644 --- a/packages/@aws-cdk/aws-logs-destinations/package.json +++ b/packages/@aws-cdk/aws-logs-destinations/package.json @@ -41,7 +41,6 @@ "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", - "cfn2ts": "cfn2ts", "build+test+package": "npm run build+test && npm run package", "build+test": "npm run build && npm test", "compat": "cdk-compat" diff --git a/packages/@aws-cdk/aws-route53-patterns/package.json b/packages/@aws-cdk/aws-route53-patterns/package.json index 09de36a416910..56855cc2c70b0 100644 --- a/packages/@aws-cdk/aws-route53-patterns/package.json +++ b/packages/@aws-cdk/aws-route53-patterns/package.json @@ -41,7 +41,6 @@ "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", - "cfn2ts": "cfn2ts", "build+test+package": "npm run build+test && npm run package", "build+test": "npm run build && npm test", "compat": "cdk-compat" diff --git a/packages/@aws-cdk/aws-route53-targets/package.json b/packages/@aws-cdk/aws-route53-targets/package.json index 80d2e61663189..f7ab4f96b29b9 100644 --- a/packages/@aws-cdk/aws-route53-targets/package.json +++ b/packages/@aws-cdk/aws-route53-targets/package.json @@ -41,7 +41,6 @@ "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", - "cfn2ts": "cfn2ts", "build+test+package": "npm run build+test && npm run package", "build+test": "npm run build && npm test", "compat": "cdk-compat" diff --git a/packages/@aws-cdk/aws-ses-actions/package.json b/packages/@aws-cdk/aws-ses-actions/package.json index 92472cec0d6bf..98ceb9b2cd0b6 100644 --- a/packages/@aws-cdk/aws-ses-actions/package.json +++ b/packages/@aws-cdk/aws-ses-actions/package.json @@ -41,7 +41,6 @@ "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", - "cfn2ts": "cfn2ts", "build+test+package": "npm run build+test && npm run package", "build+test": "npm run build && npm test", "compat": "cdk-compat" diff --git a/packages/@aws-cdk/aws-sns-subscriptions/package.json b/packages/@aws-cdk/aws-sns-subscriptions/package.json index 07ea20698e7ed..13535b66faf0a 100644 --- a/packages/@aws-cdk/aws-sns-subscriptions/package.json +++ b/packages/@aws-cdk/aws-sns-subscriptions/package.json @@ -41,7 +41,6 @@ "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", - "cfn2ts": "cfn2ts", "build+test+package": "npm run build+test && npm run package", "build+test": "npm run build && npm test", "compat": "cdk-compat" diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/package.json b/packages/@aws-cdk/aws-stepfunctions-tasks/package.json index 8f62cc2143eb5..7a8d6299c4072 100644 --- a/packages/@aws-cdk/aws-stepfunctions-tasks/package.json +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/package.json @@ -41,7 +41,6 @@ "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", - "cfn2ts": "cfn2ts", "build+test+package": "npm run build+test && npm run package", "build+test": "npm run build && npm test", "compat": "cdk-compat" diff --git a/packages/@aws-cdk/custom-resources/package.json b/packages/@aws-cdk/custom-resources/package.json index 7cd16b421cb1b..561ac6ef58a6f 100644 --- a/packages/@aws-cdk/custom-resources/package.json +++ b/packages/@aws-cdk/custom-resources/package.json @@ -41,7 +41,6 @@ "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", - "cfn2ts": "cfn2ts", "build+test+package": "npm run build+test && npm run package", "build+test": "npm run build && npm test", "compat": "cdk-compat" diff --git a/packages/aws-cdk/package.json b/packages/aws-cdk/package.json index 488b57c0d0a13..1ac487d577742 100644 --- a/packages/aws-cdk/package.json +++ b/packages/aws-cdk/package.json @@ -100,7 +100,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "maturity": "stable" diff --git a/packages/cdk-assets/package.json b/packages/cdk-assets/package.json index eb67aa7d3b6f8..4c8f00e772f30 100644 --- a/packages/cdk-assets/package.json +++ b/packages/cdk-assets/package.json @@ -16,7 +16,6 @@ "pkglint": "pkglint -f", "test": "cdk-test", "watch": "cdk-watch", - "cfn2ts": "cfn2ts", "build+test": "npm run build && npm test", "build+test+package": "npm run build+test && npm run package", "compat": "cdk-compat" diff --git a/tools/pkglint/lib/rules.ts b/tools/pkglint/lib/rules.ts index 48c613758bfee..53bb5e5a894b3 100644 --- a/tools/pkglint/lib/rules.ts +++ b/tools/pkglint/lib/rules.ts @@ -1005,12 +1005,8 @@ export class Cfn2Ts extends ValidationRule { public readonly name = 'cfn2ts'; public validate(pkg: PackageJson) { - if (!isJSII(pkg)) { - return; - } - - if (!isAWS(pkg)) { - return; + if (!isJSII(pkg) || !isAWS(pkg)) { + return expectJSON(this.name, pkg, 'scripts.cfn2ts', undefined); } expectJSON(this.name, pkg, 'scripts.cfn2ts', 'cfn2ts'); @@ -1253,7 +1249,7 @@ function isJSII(pkg: PackageJson): boolean { * @param pkg */ function isAWS(pkg: PackageJson): boolean { - return pkg.json['cdk-build'] && pkg.json['cdk-build'].cloudformation; + return pkg.json['cdk-build']?.cloudformation != null; } /** diff --git a/tools/pkglint/package.json b/tools/pkglint/package.json index 5ce02cb64d1df..2118a2c677bb6 100644 --- a/tools/pkglint/package.json +++ b/tools/pkglint/package.json @@ -17,9 +17,8 @@ }, "scripts": { "build": "tsc -b && tslint -p . && chmod +x bin/pkglint", - "test": "echo success", - "build+test": "npm run build && npm test", - "build+test+package": "npm run build+test", + "build+test": "npm run build", + "build+test+package": "npm run build", "watch": "tsc -b -w", "lint": "tsc -b && tslint -p . --force" }, @@ -37,7 +36,8 @@ "devDependencies": { "@types/fs-extra": "^8.1.0", "@types/semver": "^7.2.0", - "@types/yargs": "^15.0.5" + "@types/yargs": "^15.0.5", + "typescript": "~3.8.3" }, "dependencies": { "case": "^1.6.3", diff --git a/tools/yarn-cling/.eslintrc.js b/tools/yarn-cling/.eslintrc.js new file mode 100644 index 0000000000000..0c60e21090199 --- /dev/null +++ b/tools/yarn-cling/.eslintrc.js @@ -0,0 +1,3 @@ +const baseConfig = require('../tools/cdk-build-tools/config/eslintrc'); +baseConfig.parserOptions.project = __dirname + '/tsconfig.json'; +module.exports = baseConfig; diff --git a/tools/yarn-cling/.gitignore b/tools/yarn-cling/.gitignore index d05ddbf403f73..2d8e8a2d36377 100644 --- a/tools/yarn-cling/.gitignore +++ b/tools/yarn-cling/.gitignore @@ -6,3 +6,8 @@ dist .LAST_BUILD *.snk !jest.config.js + +.nyc_output +coverage +nyc.config.js +!.eslintrc.js \ No newline at end of file diff --git a/tools/yarn-cling/.npmignore b/tools/yarn-cling/.npmignore index e049d31151c8f..af12b026f1401 100644 --- a/tools/yarn-cling/.npmignore +++ b/tools/yarn-cling/.npmignore @@ -8,3 +8,5 @@ coverage .LAST_BUILD *.snk jest.config.js + +.eslintrc.js \ No newline at end of file diff --git a/tools/yarn-cling/lib/index.ts b/tools/yarn-cling/lib/index.ts index 816f55e88e97d..eabbf390c5207 100644 --- a/tools/yarn-cling/lib/index.ts +++ b/tools/yarn-cling/lib/index.ts @@ -31,7 +31,7 @@ export async function generateShrinkwrap(options: ShrinkwrapOptions): Promise { - return JSON.parse(await fs.readFile(fileName, { encoding: 'utf-8' })); + return JSON.parse(await fs.readFile(fileName, { encoding: 'utf8' })); } async function fileExists(fullPath: string): Promise { diff --git a/tools/yarn-cling/package.json b/tools/yarn-cling/package.json index 08403bca30b31..ca172a1fbbead 100644 --- a/tools/yarn-cling/package.json +++ b/tools/yarn-cling/package.json @@ -29,11 +29,19 @@ "organization": true }, "license": "Apache-2.0", + "pkglint": { + "exclude": [ + "dependencies/build-tools", + "package-info/scripts/build", + "package-info/scripts/watch", + "package-info/scripts/test" + ] + }, "devDependencies": { "@types/yarnpkg__lockfile": "^1.1.3", "@types/jest": "^25.2.3", "jest": "^25.5.4", - "@types/node": "^13.9.1", + "@types/node": "^10.17.5", "typescript": "~3.8.3", "pkglint": "0.0.0" }, @@ -46,6 +54,6 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 10.3.0" + "node": ">= 10.13.0 <13 || >=13.7.0" } } diff --git a/tools/yarn-cling/test/test-fixture/.no-packagejson-validator b/tools/yarn-cling/test/test-fixture/.no-packagejson-validator new file mode 100644 index 0000000000000..6824459f6c5e0 --- /dev/null +++ b/tools/yarn-cling/test/test-fixture/.no-packagejson-validator @@ -0,0 +1 @@ +Test fixtures should not be affected.