@znemz/cfn-include 2.1.23 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +196 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +697 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/cache.d.ts +12 -0
- package/dist/lib/cache.d.ts.map +1 -0
- package/{lib → dist/lib}/cache.js +8 -13
- package/dist/lib/cache.js.map +1 -0
- package/dist/lib/cfnclient.d.ts +17 -0
- package/dist/lib/cfnclient.d.ts.map +1 -0
- package/dist/lib/cfnclient.js +69 -0
- package/dist/lib/cfnclient.js.map +1 -0
- package/dist/lib/include/query.d.ts +4 -0
- package/dist/lib/include/query.d.ts.map +1 -0
- package/dist/lib/include/query.js +14 -0
- package/dist/lib/include/query.js.map +1 -0
- package/dist/lib/internals.d.ts +10 -0
- package/dist/lib/internals.d.ts.map +1 -0
- package/dist/lib/internals.js +145 -0
- package/dist/lib/internals.js.map +1 -0
- package/dist/lib/parselocation.d.ts +3 -0
- package/dist/lib/parselocation.d.ts.map +1 -0
- package/dist/lib/parselocation.js +19 -0
- package/dist/lib/parselocation.js.map +1 -0
- package/dist/lib/promise-utils.d.ts +19 -0
- package/dist/lib/promise-utils.d.ts.map +1 -0
- package/dist/lib/promise-utils.js +36 -0
- package/dist/lib/promise-utils.js.map +1 -0
- package/dist/lib/promise.d.ts +6 -0
- package/dist/lib/promise.d.ts.map +1 -0
- package/dist/lib/promise.js +16 -0
- package/dist/lib/promise.js.map +1 -0
- package/dist/lib/replaceEnv.d.ts +8 -0
- package/dist/lib/replaceEnv.d.ts.map +1 -0
- package/dist/lib/replaceEnv.js +48 -0
- package/dist/lib/replaceEnv.js.map +1 -0
- package/dist/lib/request.d.ts +2 -0
- package/dist/lib/request.d.ts.map +1 -0
- package/dist/lib/request.js +19 -0
- package/dist/lib/request.js.map +1 -0
- package/dist/lib/schema.d.ts +9 -0
- package/dist/lib/schema.d.ts.map +1 -0
- package/dist/lib/schema.js +115 -0
- package/dist/lib/schema.js.map +1 -0
- package/dist/lib/scope.d.ts +23 -0
- package/dist/lib/scope.d.ts.map +1 -0
- package/dist/lib/scope.js +36 -0
- package/dist/lib/scope.js.map +1 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +13 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/yaml.d.ts +8 -0
- package/dist/lib/yaml.d.ts.map +1 -0
- package/dist/lib/yaml.js +74 -0
- package/dist/lib/yaml.js.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/options.d.ts +88 -0
- package/dist/types/options.d.ts.map +1 -0
- package/dist/types/options.js +5 -0
- package/dist/types/options.js.map +1 -0
- package/dist/types/template.d.ts +290 -0
- package/dist/types/template.d.ts.map +1 -0
- package/dist/types/template.js +5 -0
- package/dist/types/template.js.map +1 -0
- package/package.json +23 -10
- package/bin/cli.js +0 -204
- package/index.js +0 -899
- package/lib/cfnclient.js +0 -84
- package/lib/include/api.js +0 -13
- package/lib/include/query.js +0 -16
- package/lib/internals.js +0 -171
- package/lib/parselocation.js +0 -15
- package/lib/promise-utils.js +0 -46
- package/lib/promise.js +0 -18
- package/lib/replaceEnv.js +0 -66
- package/lib/request.js +0 -22
- package/lib/schema.js +0 -117
- package/lib/scope.js +0 -52
- package/lib/utils.js +0 -16
- package/lib/yaml.js +0 -76
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CloudFormation Template Type Definitions
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Any valid template value (recursive)
|
|
6
|
+
*/
|
|
7
|
+
export type TemplateValue = string | number | boolean | null | undefined | TemplateValue[] | TemplateObject | IntrinsicFunction;
|
|
8
|
+
/**
|
|
9
|
+
* Plain template object (not an intrinsic function)
|
|
10
|
+
*/
|
|
11
|
+
export interface TemplateObject {
|
|
12
|
+
[key: string]: TemplateValue;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* CloudFormation template document
|
|
16
|
+
*/
|
|
17
|
+
export interface TemplateDocument {
|
|
18
|
+
AWSTemplateFormatVersion?: '2010-09-09';
|
|
19
|
+
Description?: string;
|
|
20
|
+
Metadata?: TemplateMetadata;
|
|
21
|
+
Parameters?: Record<string, TemplateParameter>;
|
|
22
|
+
Mappings?: Record<string, Record<string, Record<string, TemplateValue>>>;
|
|
23
|
+
Conditions?: Record<string, IntrinsicFunction>;
|
|
24
|
+
Transform?: string | string[];
|
|
25
|
+
Resources?: Record<string, Resource>;
|
|
26
|
+
Outputs?: Record<string, Output>;
|
|
27
|
+
[key: string]: any;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Template metadata section
|
|
31
|
+
*/
|
|
32
|
+
export interface TemplateMetadata {
|
|
33
|
+
CfnInclude?: {
|
|
34
|
+
GitCommit?: string;
|
|
35
|
+
BuildDate?: string;
|
|
36
|
+
};
|
|
37
|
+
[key: string]: unknown;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* CloudFormation parameter definition
|
|
41
|
+
*/
|
|
42
|
+
export interface TemplateParameter {
|
|
43
|
+
Type: string;
|
|
44
|
+
Default?: TemplateValue;
|
|
45
|
+
Description?: string;
|
|
46
|
+
AllowedPattern?: string;
|
|
47
|
+
AllowedValues?: string[];
|
|
48
|
+
ConstraintDescription?: string;
|
|
49
|
+
MaxLength?: number;
|
|
50
|
+
MaxValue?: number;
|
|
51
|
+
MinLength?: number;
|
|
52
|
+
MinValue?: number;
|
|
53
|
+
NoEcho?: boolean;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* CloudFormation resource definition
|
|
57
|
+
*/
|
|
58
|
+
export interface Resource {
|
|
59
|
+
Type: string;
|
|
60
|
+
Condition?: string;
|
|
61
|
+
DependsOn?: string | string[];
|
|
62
|
+
DeletionPolicy?: 'Delete' | 'Retain' | 'Snapshot';
|
|
63
|
+
UpdatePolicy?: Record<string, unknown>;
|
|
64
|
+
UpdateReplacePolicy?: 'Delete' | 'Retain' | 'Snapshot';
|
|
65
|
+
CreationPolicy?: Record<string, unknown>;
|
|
66
|
+
Metadata?: Record<string, unknown>;
|
|
67
|
+
Properties?: Record<string, TemplateValue>;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* CloudFormation output definition
|
|
71
|
+
*/
|
|
72
|
+
export interface Output {
|
|
73
|
+
Value: TemplateValue;
|
|
74
|
+
Description?: string;
|
|
75
|
+
Condition?: string;
|
|
76
|
+
Export?: {
|
|
77
|
+
Name: TemplateValue;
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Union of all intrinsic function types
|
|
82
|
+
*/
|
|
83
|
+
export type IntrinsicFunction = FnInclude | FnMap | FnMerge | FnDeepMerge | FnFlatten | FnFlattenDeep | FnUniq | FnCompact | FnConcat | FnSort | FnSortedUniq | FnSortBy | FnSortObject | FnWithout | FnOmit | FnOmitEmpty | FnLength | FnStringify | FnStringSplit | FnObjectKeys | FnObjectValues | FnFilenames | FnSequence | FnOutputs | FnGetEnv | FnUpperCamelCase | FnLowerCamelCase | FnEval | FnIfEval | FnJoinNow | FnSubNow | FnRefNow | FnApplyTags | FnBase64 | FnFindInMap | FnGetAtt | FnGetAZs | FnImportValue | FnJoin | FnSelect | FnSub | FnSplit | FnRef | FnCidr | FnGetParam | FnAnd | FnEquals | FnIf | FnNot | FnOr | Condition;
|
|
84
|
+
export interface FnInclude {
|
|
85
|
+
'Fn::Include': string | FnIncludeOptions | [string, string?, string?];
|
|
86
|
+
}
|
|
87
|
+
export interface FnIncludeOptions {
|
|
88
|
+
location: string;
|
|
89
|
+
type?: 'json' | 'string' | 'literal';
|
|
90
|
+
query?: string | TemplateValue;
|
|
91
|
+
parser?: 'lodash' | 'jmespath';
|
|
92
|
+
context?: Record<string, TemplateValue>;
|
|
93
|
+
inject?: Record<string, string>;
|
|
94
|
+
isGlob?: boolean;
|
|
95
|
+
ignoreMissingVar?: boolean;
|
|
96
|
+
ignoreMissingFile?: boolean;
|
|
97
|
+
doEnv?: boolean;
|
|
98
|
+
doEval?: boolean;
|
|
99
|
+
doLog?: boolean;
|
|
100
|
+
}
|
|
101
|
+
export interface FnMap {
|
|
102
|
+
'Fn::Map': [TemplateValue, TemplateValue] | [TemplateValue, string | string[], TemplateValue];
|
|
103
|
+
}
|
|
104
|
+
export interface FnMerge {
|
|
105
|
+
'Fn::Merge': TemplateValue[];
|
|
106
|
+
}
|
|
107
|
+
export interface FnDeepMerge {
|
|
108
|
+
'Fn::DeepMerge': TemplateValue[];
|
|
109
|
+
}
|
|
110
|
+
export interface FnFlatten {
|
|
111
|
+
'Fn::Flatten': TemplateValue;
|
|
112
|
+
}
|
|
113
|
+
export interface FnFlattenDeep {
|
|
114
|
+
'Fn::FlattenDeep': TemplateValue;
|
|
115
|
+
}
|
|
116
|
+
export interface FnUniq {
|
|
117
|
+
'Fn::Uniq': TemplateValue;
|
|
118
|
+
}
|
|
119
|
+
export interface FnCompact {
|
|
120
|
+
'Fn::Compact': TemplateValue;
|
|
121
|
+
}
|
|
122
|
+
export interface FnConcat {
|
|
123
|
+
'Fn::Concat': TemplateValue[];
|
|
124
|
+
}
|
|
125
|
+
export interface FnSort {
|
|
126
|
+
'Fn::Sort': TemplateValue;
|
|
127
|
+
}
|
|
128
|
+
export interface FnSortedUniq {
|
|
129
|
+
'Fn::SortedUniq': TemplateValue;
|
|
130
|
+
}
|
|
131
|
+
export interface FnSortBy {
|
|
132
|
+
'Fn::SortBy': {
|
|
133
|
+
list: TemplateValue;
|
|
134
|
+
iteratees: string | string[];
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
export interface FnSortObject {
|
|
138
|
+
'Fn::SortObject': {
|
|
139
|
+
object?: TemplateValue;
|
|
140
|
+
options?: Record<string, unknown>;
|
|
141
|
+
} | TemplateValue;
|
|
142
|
+
}
|
|
143
|
+
export interface FnWithout {
|
|
144
|
+
'Fn::Without': [TemplateValue[], TemplateValue[]] | {
|
|
145
|
+
list: TemplateValue[];
|
|
146
|
+
withouts: TemplateValue[];
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
export interface FnOmit {
|
|
150
|
+
'Fn::Omit': [TemplateObject, string[]] | {
|
|
151
|
+
object: TemplateObject;
|
|
152
|
+
omits: string[];
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
export interface FnOmitEmpty {
|
|
156
|
+
'Fn::OmitEmpty': TemplateObject;
|
|
157
|
+
}
|
|
158
|
+
export interface FnLength {
|
|
159
|
+
'Fn::Length': TemplateValue;
|
|
160
|
+
}
|
|
161
|
+
export interface FnStringify {
|
|
162
|
+
'Fn::Stringify': TemplateValue;
|
|
163
|
+
}
|
|
164
|
+
export interface FnStringSplit {
|
|
165
|
+
'Fn::StringSplit': {
|
|
166
|
+
string: string;
|
|
167
|
+
separator?: string;
|
|
168
|
+
doLog?: boolean;
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
export interface FnObjectKeys {
|
|
172
|
+
'Fn::ObjectKeys': TemplateValue;
|
|
173
|
+
}
|
|
174
|
+
export interface FnObjectValues {
|
|
175
|
+
'Fn::ObjectValues': TemplateValue;
|
|
176
|
+
}
|
|
177
|
+
export interface FnFilenames {
|
|
178
|
+
'Fn::Filenames': string | {
|
|
179
|
+
location: string;
|
|
180
|
+
omitExtension?: boolean;
|
|
181
|
+
doLog?: boolean;
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
export interface FnSequence {
|
|
185
|
+
'Fn::Sequence': [number | string, number | string, number?];
|
|
186
|
+
}
|
|
187
|
+
export interface FnOutputs {
|
|
188
|
+
'Fn::Outputs': Record<string, TemplateValue>;
|
|
189
|
+
}
|
|
190
|
+
export interface FnGetEnv {
|
|
191
|
+
'Fn::GetEnv': string | [string, TemplateValue];
|
|
192
|
+
}
|
|
193
|
+
export interface FnUpperCamelCase {
|
|
194
|
+
'Fn::UpperCamelCase': string;
|
|
195
|
+
}
|
|
196
|
+
export interface FnLowerCamelCase {
|
|
197
|
+
'Fn::LowerCamelCase': string;
|
|
198
|
+
}
|
|
199
|
+
export interface FnEval {
|
|
200
|
+
'Fn::Eval': {
|
|
201
|
+
state?: unknown;
|
|
202
|
+
script: string;
|
|
203
|
+
inject?: Record<string, string>;
|
|
204
|
+
doLog?: boolean;
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
export interface FnIfEval {
|
|
208
|
+
'Fn::IfEval': {
|
|
209
|
+
evalCond: string;
|
|
210
|
+
truthy?: TemplateValue;
|
|
211
|
+
falsy?: TemplateValue;
|
|
212
|
+
inject?: Record<string, string>;
|
|
213
|
+
doLog?: boolean;
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
export interface FnJoinNow {
|
|
217
|
+
'Fn::JoinNow': [string, TemplateValue[]];
|
|
218
|
+
}
|
|
219
|
+
export interface FnSubNow {
|
|
220
|
+
'Fn::SubNow': string | [string, Record<string, TemplateValue>];
|
|
221
|
+
}
|
|
222
|
+
export interface FnRefNow {
|
|
223
|
+
'Fn::RefNow': string | {
|
|
224
|
+
Ref?: string;
|
|
225
|
+
ref?: string;
|
|
226
|
+
returnType?: 'arn' | 'name';
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
export interface FnApplyTags {
|
|
230
|
+
'Fn::ApplyTags': {
|
|
231
|
+
tags?: TemplateValue[];
|
|
232
|
+
Tags?: TemplateValue[];
|
|
233
|
+
resources: Record<string, Resource>;
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
export interface FnBase64 {
|
|
237
|
+
'Fn::Base64': TemplateValue;
|
|
238
|
+
}
|
|
239
|
+
export interface FnFindInMap {
|
|
240
|
+
'Fn::FindInMap': [string | TemplateValue, string | TemplateValue, string | TemplateValue];
|
|
241
|
+
}
|
|
242
|
+
export interface FnGetAtt {
|
|
243
|
+
'Fn::GetAtt': [string, string] | string;
|
|
244
|
+
}
|
|
245
|
+
export interface FnGetAZs {
|
|
246
|
+
'Fn::GetAZs': string | TemplateValue;
|
|
247
|
+
}
|
|
248
|
+
export interface FnImportValue {
|
|
249
|
+
'Fn::ImportValue': TemplateValue;
|
|
250
|
+
}
|
|
251
|
+
export interface FnJoin {
|
|
252
|
+
'Fn::Join': [string, TemplateValue[]];
|
|
253
|
+
}
|
|
254
|
+
export interface FnSelect {
|
|
255
|
+
'Fn::Select': [number | TemplateValue, TemplateValue[]];
|
|
256
|
+
}
|
|
257
|
+
export interface FnSub {
|
|
258
|
+
'Fn::Sub': string | [string, Record<string, TemplateValue>];
|
|
259
|
+
}
|
|
260
|
+
export interface FnSplit {
|
|
261
|
+
'Fn::Split': [string, TemplateValue];
|
|
262
|
+
}
|
|
263
|
+
export interface FnRef {
|
|
264
|
+
Ref: string;
|
|
265
|
+
}
|
|
266
|
+
export interface FnCidr {
|
|
267
|
+
'Fn::Cidr': [TemplateValue, number | TemplateValue, number | TemplateValue];
|
|
268
|
+
}
|
|
269
|
+
export interface FnGetParam {
|
|
270
|
+
'Fn::GetParam': [string, string, string];
|
|
271
|
+
}
|
|
272
|
+
export interface FnAnd {
|
|
273
|
+
'Fn::And': TemplateValue[];
|
|
274
|
+
}
|
|
275
|
+
export interface FnEquals {
|
|
276
|
+
'Fn::Equals': [TemplateValue, TemplateValue];
|
|
277
|
+
}
|
|
278
|
+
export interface FnIf {
|
|
279
|
+
'Fn::If': [string, TemplateValue, TemplateValue];
|
|
280
|
+
}
|
|
281
|
+
export interface FnNot {
|
|
282
|
+
'Fn::Not': [TemplateValue];
|
|
283
|
+
}
|
|
284
|
+
export interface FnOr {
|
|
285
|
+
'Fn::Or': TemplateValue[];
|
|
286
|
+
}
|
|
287
|
+
export interface Condition {
|
|
288
|
+
Condition: string;
|
|
289
|
+
}
|
|
290
|
+
//# sourceMappingURL=template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/types/template.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/types/template.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@znemz/cfn-include",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "Preprocessor for CloudFormation templates with support for loops and flexible include statements",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"aws",
|
|
@@ -23,26 +23,36 @@
|
|
|
23
23
|
},
|
|
24
24
|
"type": "module",
|
|
25
25
|
"exports": {
|
|
26
|
-
".":
|
|
27
|
-
|
|
26
|
+
".": {
|
|
27
|
+
"types": "./dist/index.d.ts",
|
|
28
|
+
"import": "./dist/index.js"
|
|
29
|
+
},
|
|
30
|
+
"./lib/*": {
|
|
31
|
+
"types": "./dist/lib/*.d.ts",
|
|
32
|
+
"import": "./dist/lib/*.js"
|
|
33
|
+
}
|
|
28
34
|
},
|
|
35
|
+
"main": "./dist/index.js",
|
|
36
|
+
"types": "./dist/index.d.ts",
|
|
29
37
|
"bin": {
|
|
30
|
-
"cfn-include": "
|
|
38
|
+
"cfn-include": "./dist/cli.js"
|
|
31
39
|
},
|
|
32
40
|
"files": [
|
|
33
|
-
"
|
|
34
|
-
"bin/",
|
|
35
|
-
"lib/"
|
|
41
|
+
"dist/"
|
|
36
42
|
],
|
|
37
43
|
"scripts": {
|
|
38
44
|
"better-audit": "better-npm-audit audit",
|
|
45
|
+
"build": "tsc",
|
|
46
|
+
"build:clean": "rm -rf dist && npm run build",
|
|
39
47
|
"lint": "eslint .",
|
|
40
48
|
"lint:fix": "eslint . --fix",
|
|
41
49
|
"prepare": "sort-package-json",
|
|
50
|
+
"prepublishOnly": "npm run build:clean",
|
|
42
51
|
"serve": "serve ./t/fixtures -l 9999",
|
|
43
|
-
"test": "npm run test:this",
|
|
52
|
+
"test": "npm run build && npm run test:this",
|
|
44
53
|
"test:run": "sleep 1 && mocha --timeout 20000 --bail t/include.js t/cli.js t/replaceEnv.js",
|
|
45
|
-
"test:this": "run-p -r serve test:run"
|
|
54
|
+
"test:this": "run-p -r serve test:run",
|
|
55
|
+
"typecheck": "tsc --noEmit"
|
|
46
56
|
},
|
|
47
57
|
"overrides": {
|
|
48
58
|
"fast-xml-parser": "5.3.4"
|
|
@@ -64,6 +74,8 @@
|
|
|
64
74
|
"devDependencies": {
|
|
65
75
|
"@commitlint/cli": "^20",
|
|
66
76
|
"@commitlint/config-conventional": "^20",
|
|
77
|
+
"@types/lodash": "^4.17.23",
|
|
78
|
+
"@types/node": "^25.2.2",
|
|
67
79
|
"better-npm-audit": "3.11.0",
|
|
68
80
|
"commit-and-tag-version": "12",
|
|
69
81
|
"commitlint": "20",
|
|
@@ -75,7 +87,8 @@
|
|
|
75
87
|
"npm-run-all": "4.1.5",
|
|
76
88
|
"prettier": "3",
|
|
77
89
|
"serve": "14.2.5",
|
|
78
|
-
"sort-package-json": "3.6.1"
|
|
90
|
+
"sort-package-json": "3.6.1",
|
|
91
|
+
"typescript": "^5.9.3"
|
|
79
92
|
},
|
|
80
93
|
"engines": {
|
|
81
94
|
"node": ">=20.19"
|
package/bin/cli.js
DELETED
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import { execSync } from 'node:child_process';
|
|
4
|
-
import path from 'node:path';
|
|
5
|
-
import { fileURLToPath } from 'node:url';
|
|
6
|
-
import { readFileSync } from 'node:fs';
|
|
7
|
-
import _ from 'lodash';
|
|
8
|
-
// path.parse is native in Node.js - no need for path-parse package
|
|
9
|
-
|
|
10
|
-
import include from '../index.js';
|
|
11
|
-
import * as yaml from '../lib/yaml.js';
|
|
12
|
-
import Client from '../lib/cfnclient.js';
|
|
13
|
-
import replaceEnv from '../lib/replaceEnv.js';
|
|
14
|
-
|
|
15
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
16
|
-
const __dirname = path.dirname(__filename);
|
|
17
|
-
|
|
18
|
-
// Read package.json using fs instead of import assertion
|
|
19
|
-
const pkg = JSON.parse(readFileSync(path.join(__dirname, '../package.json'), 'utf8'));
|
|
20
|
-
|
|
21
|
-
const { env } = process;
|
|
22
|
-
|
|
23
|
-
const { default: yargs } = await import('yargs');
|
|
24
|
-
const { hideBin } = await import('yargs/helpers');
|
|
25
|
-
|
|
26
|
-
const opts = yargs(hideBin(process.argv))
|
|
27
|
-
.version(false)
|
|
28
|
-
.command('$0 [path] [options]', pkg.description, (y) =>
|
|
29
|
-
y.positional('path', {
|
|
30
|
-
positional: true,
|
|
31
|
-
desc: 'location of template. Either path to a local file, URL or file on an S3 bucket (e.g. s3://bucket-name/example.template)',
|
|
32
|
-
required: false,
|
|
33
|
-
}),
|
|
34
|
-
)
|
|
35
|
-
.options({
|
|
36
|
-
minimize: {
|
|
37
|
-
desc: 'minimize JSON output',
|
|
38
|
-
default: false,
|
|
39
|
-
boolean: true,
|
|
40
|
-
alias: 'm',
|
|
41
|
-
},
|
|
42
|
-
metadata: {
|
|
43
|
-
desc: 'add build metadata to output',
|
|
44
|
-
default: false,
|
|
45
|
-
boolean: true,
|
|
46
|
-
},
|
|
47
|
-
validate: {
|
|
48
|
-
desc: 'validate compiled template',
|
|
49
|
-
default: false,
|
|
50
|
-
boolean: true,
|
|
51
|
-
alias: 't',
|
|
52
|
-
},
|
|
53
|
-
yaml: {
|
|
54
|
-
desc: 'output yaml instead of json',
|
|
55
|
-
default: false,
|
|
56
|
-
boolean: true,
|
|
57
|
-
alias: 'y',
|
|
58
|
-
},
|
|
59
|
-
lineWidth: {
|
|
60
|
-
desc: 'output yaml line width',
|
|
61
|
-
default: 200,
|
|
62
|
-
number: true,
|
|
63
|
-
alias: 'l',
|
|
64
|
-
},
|
|
65
|
-
bucket: {
|
|
66
|
-
desc: 'bucket name required for templates larger than 50k',
|
|
67
|
-
},
|
|
68
|
-
context: {
|
|
69
|
-
desc: 'template full path. only utilized for stdin when the template is piped to this script',
|
|
70
|
-
required: false,
|
|
71
|
-
string: true,
|
|
72
|
-
},
|
|
73
|
-
prefix: {
|
|
74
|
-
desc: 'prefix for templates uploaded to the bucket',
|
|
75
|
-
default: 'cfn-include',
|
|
76
|
-
},
|
|
77
|
-
enable: {
|
|
78
|
-
string: true,
|
|
79
|
-
desc: `enable different options: ['env','eval'] or a combination of both via comma.`,
|
|
80
|
-
choices: ['', 'env', 'env,eval', 'eval,env', 'eval'], // '' hack
|
|
81
|
-
default: '',
|
|
82
|
-
},
|
|
83
|
-
inject: {
|
|
84
|
-
alias: 'i',
|
|
85
|
-
string: true,
|
|
86
|
-
desc: `JSON string payload to use for template injection.`,
|
|
87
|
-
coerce: (valStr) => JSON.parse(valStr),
|
|
88
|
-
},
|
|
89
|
-
doLog: {
|
|
90
|
-
boolean: true,
|
|
91
|
-
desc: `console log out include options in recurse step`,
|
|
92
|
-
},
|
|
93
|
-
'ref-now-ignore-missing': {
|
|
94
|
-
boolean: true,
|
|
95
|
-
desc: 'do not fail if Fn::RefNow reference cannot be resolved',
|
|
96
|
-
},
|
|
97
|
-
'ref-now-ignores': {
|
|
98
|
-
string: true,
|
|
99
|
-
desc: 'comma-separated list of reference names to ignore if not found',
|
|
100
|
-
},
|
|
101
|
-
version: {
|
|
102
|
-
boolean: true,
|
|
103
|
-
desc: 'print version and exit',
|
|
104
|
-
callback() {
|
|
105
|
-
console.log(pkg.version);
|
|
106
|
-
process.exit(0);
|
|
107
|
-
},
|
|
108
|
-
},
|
|
109
|
-
})
|
|
110
|
-
.parse();
|
|
111
|
-
|
|
112
|
-
// make enable an array
|
|
113
|
-
opts.enable = opts.enable.split(',');
|
|
114
|
-
|
|
115
|
-
// Parse ref-now-ignores into an array
|
|
116
|
-
const refNowIgnores = opts['ref-now-ignores'] ? opts['ref-now-ignores'].split(',').map((s) => s.trim()) : [];
|
|
117
|
-
|
|
118
|
-
let promise;
|
|
119
|
-
if (opts.path) {
|
|
120
|
-
let location;
|
|
121
|
-
const protocol = opts.path.match(/^\w+:\/\//);
|
|
122
|
-
if (protocol) location = opts.path;
|
|
123
|
-
else if (path.parse(opts.path).root) location = `file://${opts.path}`;
|
|
124
|
-
else location = `file://${path.join(process.cwd(), opts.path)}`;
|
|
125
|
-
promise = include({
|
|
126
|
-
url: location,
|
|
127
|
-
doEnv: opts.enable.includes('env'),
|
|
128
|
-
doEval: opts.enable.includes('eval'),
|
|
129
|
-
inject: opts.inject,
|
|
130
|
-
doLog: opts.doLog,
|
|
131
|
-
refNowIgnoreMissing: opts['ref-now-ignore-missing'],
|
|
132
|
-
refNowIgnores: refNowIgnores,
|
|
133
|
-
});
|
|
134
|
-
} else {
|
|
135
|
-
promise = new Promise((resolve, reject) => {
|
|
136
|
-
process.stdin.setEncoding('utf8');
|
|
137
|
-
const rawData = [];
|
|
138
|
-
process.stdin.on('data', (chunk) => rawData.push(chunk));
|
|
139
|
-
process.stdin.on('error', (err) => reject(err));
|
|
140
|
-
process.stdin.on('end', () => resolve(rawData.join('')));
|
|
141
|
-
}).then((template) => {
|
|
142
|
-
if (template.length === 0) {
|
|
143
|
-
console.error('empty template received from stdin');
|
|
144
|
-
process.exit(1);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
const location = opts.context ? path.resolve(opts.context) : path.join(process.cwd(), 'template.yml');
|
|
148
|
-
|
|
149
|
-
template = opts.enable.includes('env') ? replaceEnv(template) : template;
|
|
150
|
-
|
|
151
|
-
return include({
|
|
152
|
-
template: yaml.load(template),
|
|
153
|
-
url: `file://${location}`,
|
|
154
|
-
doEnv: opts.enable.includes('env'),
|
|
155
|
-
doEval: opts.enable.includes('eval'),
|
|
156
|
-
inject: opts.inject,
|
|
157
|
-
doLog: opts.doLog,
|
|
158
|
-
refNowIgnoreMissing: opts['ref-now-ignore-missing'],
|
|
159
|
-
refNowIgnores: refNowIgnores,
|
|
160
|
-
}).catch((err) => console.error(err));
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
promise
|
|
165
|
-
.then(function (template) {
|
|
166
|
-
if (opts.metadata) {
|
|
167
|
-
let stdout;
|
|
168
|
-
try {
|
|
169
|
-
stdout = execSync('git log -n 1 --pretty=%H', {
|
|
170
|
-
stdio: [0, 'pipe', 'ignore'],
|
|
171
|
-
})
|
|
172
|
-
.toString()
|
|
173
|
-
.trim();
|
|
174
|
-
} catch {
|
|
175
|
-
// ignore git errors
|
|
176
|
-
}
|
|
177
|
-
_.defaultsDeep(template, {
|
|
178
|
-
Metadata: {
|
|
179
|
-
CfnInclude: {
|
|
180
|
-
GitCommit: stdout,
|
|
181
|
-
BuildDate: new Date().toISOString(),
|
|
182
|
-
},
|
|
183
|
-
},
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
if (opts.validate) {
|
|
187
|
-
const cfn = new Client({
|
|
188
|
-
region: env.AWS_REGION || env.AWS_DEFAULT_REGION || 'us-east-1',
|
|
189
|
-
bucket: opts.bucket,
|
|
190
|
-
prefix: opts.prefix,
|
|
191
|
-
});
|
|
192
|
-
return cfn.validateTemplate(JSON.stringify(template)).then(() => template);
|
|
193
|
-
}
|
|
194
|
-
return template;
|
|
195
|
-
})
|
|
196
|
-
.then((template) => {
|
|
197
|
-
console.log(opts.yaml ? yaml.dump(template, opts) : JSON.stringify(template, null, opts.minimize ? null : 2));
|
|
198
|
-
})
|
|
199
|
-
.catch(function (err) {
|
|
200
|
-
if (typeof err.toString === 'function') console.error(err.toString());
|
|
201
|
-
else console.error(err);
|
|
202
|
-
console.log(err.stack);
|
|
203
|
-
process.exit(1);
|
|
204
|
-
});
|