cdk initで生成されるcdk.jsonのcontextオブジェクトの値が文字列からboolになったタイミングを知る
npx cdk --version
2.15.0 (build 151055e)
npx cdk init app --language=typescript
で生成した cdk.json
を眺める。
{
"app": "npx ts-node --prefer-ts-exts bin/foo.ts",
"watch": {
"include": ["**"],
"exclude": [
"README.md",
"cdk*.json",
"**/*.d.ts",
"**/*.js",
"tsconfig.json",
"package*.json",
"yarn.lock",
"node_modules",
"test"
]
},
"context": {
"@aws-cdk/aws-apigateway:usagePlanKeyOrderInsensitiveId": true,
"@aws-cdk/core:stackRelativeExports": true,
"@aws-cdk/aws-rds:lowercaseDbIdentifier": true,
"@aws-cdk/aws-lambda:recognizeVersionProps": true,
"@aws-cdk/aws-cloudfront:defaultSecurityPolicyTLSv1.2_2021": true,
"@aws-cdk-containers/ecs-service-extensions:enableDefaultLogDriver": true,
"@aws-cdk/aws-ec2:uniqueImdsv2TemplateName": true,
"@aws-cdk/core:target-partitions": ["aws", "aws-cn"]
}
}
@aws-cdk/aws-apigateway:usagePlanKeyOrderInsensitiveId
の値は true
と bool 値になっている。ふつうだ。実はこの値は以前 'true'
という文字列であらわされていた。
それを修正するための PR を作ったことがある。その PR は取り込まれなかったのだが、結果としては私の願う方向に進んでいて喜ばしい。当時どのような形にしていれば、うまく取り込んでもらえたのかなあというのを知るために、この変更がどのタイミングで行われたかを調べた。
ある値が変化したコミットをみるには git log のオプション -S
を使うと便利だ。余談だが -S と -G のオプションについては日本語だとつるはしで過去を発掘する が私にはとてもわかりやすかった。
git clone https://github.com/aws/aws-cdk.git
でリポジトリをクローンして
git log -S "'true'" -p -- packages/@aws-cdk/cx-api/lib/features.ts
で結果を眺めると
commit 999e99924804d8ee2c2962fa7ed86023b3f7d590
Author: Rico Huijbers <rix0rrr@gmail.com>
Date: Mon Oct 18 11:10:24 2021 +0200
chore(pipelines): deprecate legacy API (#17034)
The presence of the legacy API for CDK Pipelines confuses people who
didn't read the README or the blog post, but go from a copy/pasted
example they found on the internet and then proceed to explore the API.
Clearly deprecate the legacy classes to avoid confusion.
----
*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
diff --git a/packages/@aws-cdk/cx-api/lib/features.ts b/packages/@aws-cdk/cx-api/lib/features.ts
index 554c41929..986be7f4e 100644
--- a/packages/@aws-cdk/cx-api/lib/features.ts
+++ b/packages/@aws-cdk/cx-api/lib/features.ts
@@ -175,9 +175,9 @@ export const CLOUDFRONT_DEFAULT_SECURITY_POLICY_TLS_V1_2_2021 = '@aws-cdk/aws-cl
*/
export const FUTURE_FLAGS: { [key: string]: any } = {
[APIGATEWAY_USAGEPLANKEY_ORDERINSENSITIVE_ID]: true,
- [ENABLE_STACK_NAME_DUPLICATES_CONTEXT]: 'true',
- [ENABLE_DIFF_NO_FAIL_CONTEXT]: 'true',
- [STACK_RELATIVE_EXPORTS_CONTEXT]: 'true',
+ [ENABLE_STACK_NAME_DUPLICATES_CONTEXT]: true,
+ [ENABLE_DIFF_NO_FAIL_CONTEXT]: true,
+ [STACK_RELATIVE_EXPORTS_CONTEXT]: true,
[DOCKER_IGNORE_SUPPORT]: true,
[SECRETS_MANAGER_PARSE_OWNED_SECRET_NAME]: true,
[KMS_DEFAULT_KEY_POLICIES]: true,
という差分をみつけた。こちらが対象のコミットのようだ。コミットログからは PR #17034 を辿れる。PR に書いてある文はコミットログの
The presence of the legacy API for CDK Pipelines confuses people who
didn't read the README or the blog post, but go from a copy/pasted
example they found on the internet and then proceed to explore the API.Clearly deprecate the legacy classes to avoid confusion.
と同じだ。「レガシーな API を depricated にする」というコミットのときに行っていた。
おやっ、コメントとコミットの内容は一致していない気がするな。これでよかったのかな?
まあ、いいか……
Discussion