@unstablestudios/terraform 0.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/README.md +312 -0
- package/dist/config/backend.d.ts +118 -0
- package/dist/config/backend.d.ts.map +1 -0
- package/dist/config/backend.js +153 -0
- package/dist/config/backend.js.map +1 -0
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +4 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/terraform.d.ts +157 -0
- package/dist/config/terraform.d.ts.map +1 -0
- package/dist/config/terraform.js +211 -0
- package/dist/config/terraform.js.map +1 -0
- package/dist/config/terraform.test.d.ts +2 -0
- package/dist/config/terraform.test.d.ts.map +1 -0
- package/dist/config/terraform.test.js +240 -0
- package/dist/config/terraform.test.js.map +1 -0
- package/dist/config/tfvars.d.ts +90 -0
- package/dist/config/tfvars.d.ts.map +1 -0
- package/dist/config/tfvars.js +133 -0
- package/dist/config/tfvars.js.map +1 -0
- package/dist/config/tfvars.test.d.ts +2 -0
- package/dist/config/tfvars.test.d.ts.map +1 -0
- package/dist/config/tfvars.test.js +187 -0
- package/dist/config/tfvars.test.js.map +1 -0
- package/dist/hcl/generator.d.ts +59 -0
- package/dist/hcl/generator.d.ts.map +1 -0
- package/dist/hcl/generator.js +401 -0
- package/dist/hcl/generator.js.map +1 -0
- package/dist/hcl/generator.test.d.ts +2 -0
- package/dist/hcl/generator.test.d.ts.map +1 -0
- package/dist/hcl/generator.test.js +280 -0
- package/dist/hcl/generator.test.js.map +1 -0
- package/dist/hcl/index.d.ts +5 -0
- package/dist/hcl/index.d.ts.map +1 -0
- package/dist/hcl/index.js +3 -0
- package/dist/hcl/index.js.map +1 -0
- package/dist/hcl/writer.d.ts +35 -0
- package/dist/hcl/writer.d.ts.map +1 -0
- package/dist/hcl/writer.js +154 -0
- package/dist/hcl/writer.js.map +1 -0
- package/dist/index.d.mts +970 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1283 -0
- package/dist/modules/cloudflare/d1.d.ts +39 -0
- package/dist/modules/cloudflare/d1.d.ts.map +1 -0
- package/dist/modules/cloudflare/d1.js +55 -0
- package/dist/modules/cloudflare/d1.js.map +1 -0
- package/dist/modules/cloudflare/index.d.ts +43 -0
- package/dist/modules/cloudflare/index.d.ts.map +1 -0
- package/dist/modules/cloudflare/index.js +44 -0
- package/dist/modules/cloudflare/index.js.map +1 -0
- package/dist/modules/cloudflare/kv.d.ts +57 -0
- package/dist/modules/cloudflare/kv.d.ts.map +1 -0
- package/dist/modules/cloudflare/kv.js +75 -0
- package/dist/modules/cloudflare/kv.js.map +1 -0
- package/dist/modules/cloudflare/r2.d.ts +49 -0
- package/dist/modules/cloudflare/r2.d.ts.map +1 -0
- package/dist/modules/cloudflare/r2.js +70 -0
- package/dist/modules/cloudflare/r2.js.map +1 -0
- package/dist/modules/cloudflare/worker.d.ts +104 -0
- package/dist/modules/cloudflare/worker.d.ts.map +1 -0
- package/dist/modules/cloudflare/worker.js +128 -0
- package/dist/modules/cloudflare/worker.js.map +1 -0
- package/dist/modules/index.d.ts +4 -0
- package/dist/modules/index.d.ts.map +1 -0
- package/dist/modules/index.js +4 -0
- package/dist/modules/index.js.map +1 -0
- package/dist/modules/types.d.ts +97 -0
- package/dist/modules/types.d.ts.map +1 -0
- package/dist/modules/types.js +106 -0
- package/dist/modules/types.js.map +1 -0
- package/dist/modules/types.test.d.ts +2 -0
- package/dist/modules/types.test.d.ts.map +1 -0
- package/dist/modules/types.test.js +167 -0
- package/dist/modules/types.test.js.map +1 -0
- package/dist/types/config.d.ts +140 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +16 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/config.test.d.ts +2 -0
- package/dist/types/config.test.d.ts.map +1 -0
- package/dist/types/config.test.js +36 -0
- package/dist/types/config.test.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +27 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tfvars file generator
|
|
3
|
+
*/
|
|
4
|
+
export interface TfvarsConfig {
|
|
5
|
+
/** Variable values */
|
|
6
|
+
values: Record<string, unknown>;
|
|
7
|
+
/** Optional header comment */
|
|
8
|
+
header?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Generate a tfvars file content
|
|
12
|
+
*/
|
|
13
|
+
export declare function generateTfvars(config: TfvarsConfig): string;
|
|
14
|
+
/**
|
|
15
|
+
* Generate environment-specific tfvars
|
|
16
|
+
*/
|
|
17
|
+
export declare function generateEnvTfvars(environment: string, values: Record<string, unknown>, options?: {
|
|
18
|
+
header?: boolean;
|
|
19
|
+
}): {
|
|
20
|
+
filename: string;
|
|
21
|
+
content: string;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Builder for tfvars files
|
|
25
|
+
*/
|
|
26
|
+
export declare class TfvarsBuilder {
|
|
27
|
+
private values;
|
|
28
|
+
private header?;
|
|
29
|
+
/**
|
|
30
|
+
* Set header comment
|
|
31
|
+
*/
|
|
32
|
+
withHeader(header: string): this;
|
|
33
|
+
/**
|
|
34
|
+
* Set a string variable
|
|
35
|
+
*/
|
|
36
|
+
string(name: string, value: string): this;
|
|
37
|
+
/**
|
|
38
|
+
* Set a number variable
|
|
39
|
+
*/
|
|
40
|
+
number(name: string, value: number): this;
|
|
41
|
+
/**
|
|
42
|
+
* Set a boolean variable
|
|
43
|
+
*/
|
|
44
|
+
bool(name: string, value: boolean): this;
|
|
45
|
+
/**
|
|
46
|
+
* Set a list variable
|
|
47
|
+
*/
|
|
48
|
+
list(name: string, value: unknown[]): this;
|
|
49
|
+
/**
|
|
50
|
+
* Set a map variable
|
|
51
|
+
*/
|
|
52
|
+
map(name: string, value: Record<string, unknown>): this;
|
|
53
|
+
/**
|
|
54
|
+
* Set a variable of any type
|
|
55
|
+
*/
|
|
56
|
+
set(name: string, value: unknown): this;
|
|
57
|
+
/**
|
|
58
|
+
* Set multiple variables at once
|
|
59
|
+
*/
|
|
60
|
+
setAll(values: Record<string, unknown>): this;
|
|
61
|
+
/**
|
|
62
|
+
* Build the tfvars content
|
|
63
|
+
*/
|
|
64
|
+
build(): string;
|
|
65
|
+
/**
|
|
66
|
+
* Get the values as an object
|
|
67
|
+
*/
|
|
68
|
+
toObject(): Record<string, unknown>;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Create a new tfvars builder
|
|
72
|
+
*/
|
|
73
|
+
export declare function tfvars(): TfvarsBuilder;
|
|
74
|
+
/**
|
|
75
|
+
* Merge multiple tfvars into one
|
|
76
|
+
*/
|
|
77
|
+
export declare function mergeTfvars(...sources: Record<string, unknown>[]): Record<string, unknown>;
|
|
78
|
+
/**
|
|
79
|
+
* Create tfvars from environment variables
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```ts
|
|
83
|
+
* const vars = tfvarsFromEnv(
|
|
84
|
+
* { cloudflare_account_id: 'CF_ACCOUNT_ID' },
|
|
85
|
+
* process.env
|
|
86
|
+
* );
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
export declare function tfvarsFromEnv(mapping: Record<string, string>, env: Record<string, string | undefined>): Record<string, unknown>;
|
|
90
|
+
//# sourceMappingURL=tfvars.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tfvars.d.ts","sourceRoot":"","sources":["../../src/config/tfvars.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAQ3D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CASvC;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,MAAM,CAAC,CAAS;IAExB;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKhC;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKzC;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKzC;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAKxC;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI;IAK1C;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAKvD;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAKvC;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAK7C;;OAEG;IACH,KAAK,IAAI,MAAM;IAIf;;OAEG;IACH,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAGpC;AAED;;GAEG;AACH,wBAAgB,MAAM,IAAI,aAAa,CAEtC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE1F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GACtC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWzB"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { formatForTfvars } from '../hcl/writer';
|
|
2
|
+
/**
|
|
3
|
+
* Generate a tfvars file content
|
|
4
|
+
*/
|
|
5
|
+
export function generateTfvars(config) {
|
|
6
|
+
const content = formatForTfvars(config.values);
|
|
7
|
+
if (config.header) {
|
|
8
|
+
return `${config.header}\n\n${content}`;
|
|
9
|
+
}
|
|
10
|
+
return content;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Generate environment-specific tfvars
|
|
14
|
+
*/
|
|
15
|
+
export function generateEnvTfvars(environment, values, options = {}) {
|
|
16
|
+
const header = options.header !== false
|
|
17
|
+
? `# ${environment} environment configuration`
|
|
18
|
+
: undefined;
|
|
19
|
+
return {
|
|
20
|
+
filename: `${environment}.tfvars`,
|
|
21
|
+
content: generateTfvars({ values, header }),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Builder for tfvars files
|
|
26
|
+
*/
|
|
27
|
+
export class TfvarsBuilder {
|
|
28
|
+
constructor() {
|
|
29
|
+
this.values = {};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Set header comment
|
|
33
|
+
*/
|
|
34
|
+
withHeader(header) {
|
|
35
|
+
this.header = header;
|
|
36
|
+
return this;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Set a string variable
|
|
40
|
+
*/
|
|
41
|
+
string(name, value) {
|
|
42
|
+
this.values[name] = value;
|
|
43
|
+
return this;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Set a number variable
|
|
47
|
+
*/
|
|
48
|
+
number(name, value) {
|
|
49
|
+
this.values[name] = value;
|
|
50
|
+
return this;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Set a boolean variable
|
|
54
|
+
*/
|
|
55
|
+
bool(name, value) {
|
|
56
|
+
this.values[name] = value;
|
|
57
|
+
return this;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Set a list variable
|
|
61
|
+
*/
|
|
62
|
+
list(name, value) {
|
|
63
|
+
this.values[name] = value;
|
|
64
|
+
return this;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Set a map variable
|
|
68
|
+
*/
|
|
69
|
+
map(name, value) {
|
|
70
|
+
this.values[name] = value;
|
|
71
|
+
return this;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Set a variable of any type
|
|
75
|
+
*/
|
|
76
|
+
set(name, value) {
|
|
77
|
+
this.values[name] = value;
|
|
78
|
+
return this;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Set multiple variables at once
|
|
82
|
+
*/
|
|
83
|
+
setAll(values) {
|
|
84
|
+
Object.assign(this.values, values);
|
|
85
|
+
return this;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Build the tfvars content
|
|
89
|
+
*/
|
|
90
|
+
build() {
|
|
91
|
+
return generateTfvars({ values: this.values, header: this.header });
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Get the values as an object
|
|
95
|
+
*/
|
|
96
|
+
toObject() {
|
|
97
|
+
return { ...this.values };
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Create a new tfvars builder
|
|
102
|
+
*/
|
|
103
|
+
export function tfvars() {
|
|
104
|
+
return new TfvarsBuilder();
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Merge multiple tfvars into one
|
|
108
|
+
*/
|
|
109
|
+
export function mergeTfvars(...sources) {
|
|
110
|
+
return Object.assign({}, ...sources);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Create tfvars from environment variables
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```ts
|
|
117
|
+
* const vars = tfvarsFromEnv(
|
|
118
|
+
* { cloudflare_account_id: 'CF_ACCOUNT_ID' },
|
|
119
|
+
* process.env
|
|
120
|
+
* );
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
export function tfvarsFromEnv(mapping, env) {
|
|
124
|
+
const values = {};
|
|
125
|
+
for (const [tfvarName, envName] of Object.entries(mapping)) {
|
|
126
|
+
const value = env[envName];
|
|
127
|
+
if (value !== undefined) {
|
|
128
|
+
values[tfvarName] = value;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return values;
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=tfvars.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tfvars.js","sourceRoot":"","sources":["../../src/config/tfvars.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tfvars.test.d.ts","sourceRoot":"","sources":["../../src/config/tfvars.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { generateTfvars, generateEnvTfvars, tfvars, TfvarsBuilder, mergeTfvars, tfvarsFromEnv, } from './tfvars';
|
|
3
|
+
describe('generateTfvars', () => {
|
|
4
|
+
it('generates tfvars content from values', () => {
|
|
5
|
+
const result = generateTfvars({
|
|
6
|
+
values: {
|
|
7
|
+
region: 'us-east-1',
|
|
8
|
+
count: 3,
|
|
9
|
+
enabled: true,
|
|
10
|
+
},
|
|
11
|
+
});
|
|
12
|
+
expect(result).toContain('region = "us-east-1"');
|
|
13
|
+
expect(result).toContain('count = 3');
|
|
14
|
+
expect(result).toContain('enabled = true');
|
|
15
|
+
});
|
|
16
|
+
it('includes header when provided', () => {
|
|
17
|
+
const result = generateTfvars({
|
|
18
|
+
values: { foo: 'bar' },
|
|
19
|
+
header: '# Production config',
|
|
20
|
+
});
|
|
21
|
+
expect(result.startsWith('# Production config')).toBe(true);
|
|
22
|
+
expect(result).toContain('foo = "bar"');
|
|
23
|
+
});
|
|
24
|
+
it('handles arrays', () => {
|
|
25
|
+
const result = generateTfvars({
|
|
26
|
+
values: {
|
|
27
|
+
tags: ['web', 'api', 'backend'],
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
expect(result).toContain('tags = [');
|
|
31
|
+
expect(result).toContain('"web"');
|
|
32
|
+
expect(result).toContain('"api"');
|
|
33
|
+
});
|
|
34
|
+
it('handles objects', () => {
|
|
35
|
+
const result = generateTfvars({
|
|
36
|
+
values: {
|
|
37
|
+
config: { key: 'value', nested: true },
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
expect(result).toContain('config = {');
|
|
41
|
+
expect(result).toContain('key = "value"');
|
|
42
|
+
expect(result).toContain('nested = true');
|
|
43
|
+
});
|
|
44
|
+
it('handles null values', () => {
|
|
45
|
+
const result = generateTfvars({
|
|
46
|
+
values: { optional: null },
|
|
47
|
+
});
|
|
48
|
+
expect(result).toContain('optional = null');
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
describe('generateEnvTfvars', () => {
|
|
52
|
+
it('generates environment-specific tfvars', () => {
|
|
53
|
+
const result = generateEnvTfvars('production', {
|
|
54
|
+
region: 'us-east-1',
|
|
55
|
+
instance_type: 't3.large',
|
|
56
|
+
});
|
|
57
|
+
expect(result.filename).toBe('production.tfvars');
|
|
58
|
+
expect(result.content).toContain('# production environment');
|
|
59
|
+
expect(result.content).toContain('region = "us-east-1"');
|
|
60
|
+
});
|
|
61
|
+
it('excludes header when disabled', () => {
|
|
62
|
+
const result = generateEnvTfvars('dev', { region: 'us-west-2' }, { header: false });
|
|
63
|
+
expect(result.content).not.toContain('# dev environment');
|
|
64
|
+
expect(result.content).toContain('region = "us-west-2"');
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
describe('TfvarsBuilder', () => {
|
|
68
|
+
it('creates an empty builder', () => {
|
|
69
|
+
const builder = new TfvarsBuilder();
|
|
70
|
+
expect(builder.toObject()).toEqual({});
|
|
71
|
+
});
|
|
72
|
+
it('sets string values', () => {
|
|
73
|
+
const builder = tfvars().string('name', 'test');
|
|
74
|
+
expect(builder.toObject()).toEqual({ name: 'test' });
|
|
75
|
+
});
|
|
76
|
+
it('sets number values', () => {
|
|
77
|
+
const builder = tfvars().number('count', 42);
|
|
78
|
+
expect(builder.toObject()).toEqual({ count: 42 });
|
|
79
|
+
});
|
|
80
|
+
it('sets boolean values', () => {
|
|
81
|
+
const builder = tfvars().bool('enabled', true);
|
|
82
|
+
expect(builder.toObject()).toEqual({ enabled: true });
|
|
83
|
+
});
|
|
84
|
+
it('sets list values', () => {
|
|
85
|
+
const builder = tfvars().list('tags', ['a', 'b', 'c']);
|
|
86
|
+
expect(builder.toObject()).toEqual({ tags: ['a', 'b', 'c'] });
|
|
87
|
+
});
|
|
88
|
+
it('sets map values', () => {
|
|
89
|
+
const builder = tfvars().map('config', { key: 'value' });
|
|
90
|
+
expect(builder.toObject()).toEqual({ config: { key: 'value' } });
|
|
91
|
+
});
|
|
92
|
+
it('sets arbitrary values', () => {
|
|
93
|
+
const builder = tfvars().set('custom', { nested: { deep: true } });
|
|
94
|
+
expect(builder.toObject()).toEqual({ custom: { nested: { deep: true } } });
|
|
95
|
+
});
|
|
96
|
+
it('sets multiple values at once', () => {
|
|
97
|
+
const builder = tfvars().setAll({
|
|
98
|
+
region: 'us-east-1',
|
|
99
|
+
count: 5,
|
|
100
|
+
});
|
|
101
|
+
expect(builder.toObject()).toEqual({
|
|
102
|
+
region: 'us-east-1',
|
|
103
|
+
count: 5,
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
it('chains methods fluently', () => {
|
|
107
|
+
const builder = tfvars()
|
|
108
|
+
.string('region', 'us-east-1')
|
|
109
|
+
.number('count', 3)
|
|
110
|
+
.bool('enabled', true)
|
|
111
|
+
.list('tags', ['web']);
|
|
112
|
+
expect(builder.toObject()).toEqual({
|
|
113
|
+
region: 'us-east-1',
|
|
114
|
+
count: 3,
|
|
115
|
+
enabled: true,
|
|
116
|
+
tags: ['web'],
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
it('sets header', () => {
|
|
120
|
+
const result = tfvars()
|
|
121
|
+
.withHeader('# Custom header')
|
|
122
|
+
.string('foo', 'bar')
|
|
123
|
+
.build();
|
|
124
|
+
expect(result.startsWith('# Custom header')).toBe(true);
|
|
125
|
+
});
|
|
126
|
+
it('builds tfvars content', () => {
|
|
127
|
+
const result = tfvars()
|
|
128
|
+
.string('region', 'us-east-1')
|
|
129
|
+
.number('port', 8080)
|
|
130
|
+
.build();
|
|
131
|
+
expect(result).toContain('region = "us-east-1"');
|
|
132
|
+
expect(result).toContain('port = 8080');
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
describe('mergeTfvars', () => {
|
|
136
|
+
it('merges multiple tfvars objects', () => {
|
|
137
|
+
const base = { region: 'us-east-1', count: 1 };
|
|
138
|
+
const override = { count: 5, enabled: true };
|
|
139
|
+
const result = mergeTfvars(base, override);
|
|
140
|
+
expect(result).toEqual({
|
|
141
|
+
region: 'us-east-1',
|
|
142
|
+
count: 5,
|
|
143
|
+
enabled: true,
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
it('handles empty objects', () => {
|
|
147
|
+
const result = mergeTfvars({}, { foo: 'bar' }, {});
|
|
148
|
+
expect(result).toEqual({ foo: 'bar' });
|
|
149
|
+
});
|
|
150
|
+
it('merges in order (later wins)', () => {
|
|
151
|
+
const result = mergeTfvars({ a: 1, b: 2 }, { b: 20, c: 3 }, { c: 30 });
|
|
152
|
+
expect(result).toEqual({ a: 1, b: 20, c: 30 });
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
describe('tfvarsFromEnv', () => {
|
|
156
|
+
it('creates tfvars from environment mapping', () => {
|
|
157
|
+
const env = {
|
|
158
|
+
TF_VAR_REGION: 'us-east-1',
|
|
159
|
+
TF_VAR_COUNT: '5',
|
|
160
|
+
OTHER_VAR: 'ignored',
|
|
161
|
+
};
|
|
162
|
+
const result = tfvarsFromEnv({
|
|
163
|
+
region: 'TF_VAR_REGION',
|
|
164
|
+
count: 'TF_VAR_COUNT',
|
|
165
|
+
}, env);
|
|
166
|
+
expect(result).toEqual({
|
|
167
|
+
region: 'us-east-1',
|
|
168
|
+
count: '5',
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
it('skips undefined environment variables', () => {
|
|
172
|
+
const env = {
|
|
173
|
+
DEFINED: 'value',
|
|
174
|
+
};
|
|
175
|
+
const result = tfvarsFromEnv({
|
|
176
|
+
defined: 'DEFINED',
|
|
177
|
+
missing: 'MISSING_VAR',
|
|
178
|
+
}, env);
|
|
179
|
+
expect(result).toEqual({ defined: 'value' });
|
|
180
|
+
expect(result).not.toHaveProperty('missing');
|
|
181
|
+
});
|
|
182
|
+
it('handles empty mapping', () => {
|
|
183
|
+
const result = tfvarsFromEnv({}, { ANY: 'value' });
|
|
184
|
+
expect(result).toEqual({});
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
//# sourceMappingURL=tfvars.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tfvars.test.js","sourceRoot":"","sources":["../../src/config/tfvars.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { HclValue, TerraformBlock, VariableConfig, OutputConfig, ProviderConfig, ResourceConfig, DataSourceConfig, ModuleConfig, TerraformConfig, BackendConfig, RequiredProvider } from '../types/config';
|
|
2
|
+
/**
|
|
3
|
+
* Options for HCL generation
|
|
4
|
+
*/
|
|
5
|
+
export interface HclOptions {
|
|
6
|
+
/** Indentation string (default: 2 spaces) */
|
|
7
|
+
indent?: string;
|
|
8
|
+
/** Whether to include empty values (default: false) */
|
|
9
|
+
includeEmpty?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Convert a value to HCL string representation
|
|
13
|
+
*/
|
|
14
|
+
export declare function toHcl(value: HclValue, options?: HclOptions): string;
|
|
15
|
+
/**
|
|
16
|
+
* Format a block with labels
|
|
17
|
+
*/
|
|
18
|
+
export declare function formatBlock(block: TerraformBlock, options?: HclOptions): string;
|
|
19
|
+
/**
|
|
20
|
+
* Generate variable block
|
|
21
|
+
*/
|
|
22
|
+
export declare function generateVariable(name: string, config: VariableConfig, opts?: HclOptions): string;
|
|
23
|
+
/**
|
|
24
|
+
* Generate output block
|
|
25
|
+
*/
|
|
26
|
+
export declare function generateOutput(name: string, config: OutputConfig, opts?: HclOptions): string;
|
|
27
|
+
/**
|
|
28
|
+
* Generate provider block
|
|
29
|
+
*/
|
|
30
|
+
export declare function generateProvider(config: ProviderConfig, opts?: HclOptions): string;
|
|
31
|
+
/**
|
|
32
|
+
* Generate resource block
|
|
33
|
+
*/
|
|
34
|
+
export declare function generateResource(config: ResourceConfig, opts?: HclOptions): string;
|
|
35
|
+
/**
|
|
36
|
+
* Generate data source block
|
|
37
|
+
*/
|
|
38
|
+
export declare function generateDataSource(config: DataSourceConfig, opts?: HclOptions): string;
|
|
39
|
+
/**
|
|
40
|
+
* Generate module block
|
|
41
|
+
*/
|
|
42
|
+
export declare function generateModule(config: ModuleConfig, opts?: HclOptions): string;
|
|
43
|
+
/**
|
|
44
|
+
* Generate locals block
|
|
45
|
+
*/
|
|
46
|
+
export declare function generateLocals(locals: Record<string, HclValue>, opts?: HclOptions): string;
|
|
47
|
+
/**
|
|
48
|
+
* Generate terraform block (required_version, required_providers, backend)
|
|
49
|
+
*/
|
|
50
|
+
export declare function generateTerraformBlock(config: {
|
|
51
|
+
required_version?: string;
|
|
52
|
+
required_providers?: Record<string, RequiredProvider>;
|
|
53
|
+
backend?: BackendConfig;
|
|
54
|
+
}, opts?: HclOptions): string;
|
|
55
|
+
/**
|
|
56
|
+
* Generate complete Terraform configuration
|
|
57
|
+
*/
|
|
58
|
+
export declare function generateTerraformConfig(config: TerraformConfig, opts?: HclOptions): string;
|
|
59
|
+
//# sourceMappingURL=generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/hcl/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,cAAc,EACd,YAAY,EACZ,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,aAAa,EACb,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AAGzB;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAOD;;GAEG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,GAAE,UAAe,GAAG,MAAM,CAGvE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,GAAE,UAAe,GAAG,MAAM,CAanF;AA6ID;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,GAAE,UAAe,GAAG,MAAM,CA4BpG;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,GAAE,UAAe,GAAG,MAAM,CAkBhG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,GAAE,UAAe,GAAG,MAAM,CAWtF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,GAAE,UAAe,GAAG,MAAM,CA2CtF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,GAAE,UAAe,GAAG,MAAM,CAiB1F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,GAAE,UAAe,GAAG,MAAM,CA2BlF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,IAAI,GAAE,UAAe,GAAG,MAAM,CAQ9F;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE;IACN,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACtD,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,EACD,IAAI,GAAE,UAAe,GACpB,MAAM,CAwCR;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,GAAE,UAAe,GAAG,MAAM,CAwD9F"}
|