Skip to content

Commit 6f01400

Browse files
committed
fix: add support for multiple providers for different regions
1 parent d94d4ae commit 6f01400

File tree

1 file changed

+35
-31
lines changed

1 file changed

+35
-31
lines changed

src/generators/v2.ts

Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import {enriched_layer_config, layer_region_config} from '../types';
2-
import replaceVars from '../utils/replaceVars';
2+
import replace from '../utils/replaceVars';
33

44
export default async (
5-
source: string,
5+
s: string,
66
{
77
regions,
88
defaultRegion,
@@ -11,18 +11,14 @@ export default async (
1111
_: enriched_layer_config,
1212
) => {
1313
return [
14-
// terraform file
15-
[
16-
`terraform.tf`,
17-
replaceVars(source, {
18-
...vars,
19-
is_terraform_file: true,
20-
}) as unknown as string,
21-
],
22-
// providers file
14+
[`terraform.tf`, replace(s, {...vars, is_terraform_file: true})],
15+
[`data.tf`, replace(s, {...vars, is_data_file: true})],
16+
[`locals.tf`, replace(s, {...vars, is_locals_file: true})],
17+
[`variables.tf`, replace(s, {...vars, is_variables_file: true})],
18+
[`outputs.tf`, replace(s, {...vars, is_outputs_file: true})],
2319
[
2420
`providers.tf`,
25-
replaceVars(source, {
21+
replace(s, {
2622
...vars,
2723
extra_providers: Object.entries(regions)
2824
.map(([rCode, r]: [string, layer_region_config]) => {
@@ -39,32 +35,17 @@ export default async (
3935
is_providers_file: true,
4036
}) as unknown as string,
4137
],
42-
// data file
43-
[
44-
`data.tf`,
45-
replaceVars(source, {
46-
...vars,
47-
is_data_file: true,
48-
}) as unknown as string,
49-
],
50-
// outputs file
51-
[
52-
`outputs.tf`,
53-
replaceVars(source, {
54-
...vars,
55-
is_outputs_file: true,
56-
}) as unknown as string,
57-
],
58-
// region files
38+
// region main files
5939
...Object.entries(regions).map(
6040
([rCode, r]: [string, layer_region_config]) => {
6141
const isMain = (r?.id || rCode) === defaultRegion;
6242
return [
6343
`main${(r?.id || rCode) === defaultRegion ? '' : `_${rCode.replace(/-/g, '_')}`}.tf`,
64-
replaceVars(source, {
44+
replace(s, {
6545
...vars,
6646
region: r?.id || rCode,
6747
is_main: isMain,
48+
is_default_main: isMain,
6849
is_main_file: true,
6950
is_default_region: isMain,
7051
psuffix: isMain ? '' : `.${rCode}`,
@@ -75,5 +56,28 @@ export default async (
7556
];
7657
},
7758
),
78-
] as [string, string][];
59+
// region sub files
60+
...Object.entries(regions).map(
61+
([rCode, r]: [string, layer_region_config]) => {
62+
const isSub = (r?.id || rCode) === defaultRegion;
63+
return [
64+
`sub${(r?.id || rCode) === defaultRegion ? '' : `_${rCode.replace(/-/g, '_')}`}.tf`,
65+
replace(s, {
66+
...vars,
67+
region: r?.id || rCode,
68+
is_sub: isSub,
69+
is_default_sub: isSub,
70+
is_sub_file: true,
71+
is_default_region: isSub,
72+
psuffix: isSub ? '' : `.${rCode}`,
73+
rsuffix: isSub ? '' : `-${rCode}`,
74+
...r,
75+
...(vars?.id ? {id: vars.id} : {}),
76+
}) as unknown as string,
77+
];
78+
},
79+
),
80+
]
81+
.map(x => [x[0], (x[1] as string)?.trim()])
82+
.filter(x => x[1]) as [string, string][];
7983
};

0 commit comments

Comments
 (0)