terraformBlock static method
The top-level terraform { ... } block: required_version,
required_providers, optional backend.
Assumes Stack.validate found no issue: provider coverage (every resource, data source and module call has its StackProvider) is a MissingProvider there, not a throw here.
Implementation
static Map<String, dynamic> terraformBlock(Stack stack) {
final requiredProviders = <String, dynamic>{};
for (final p in stack.providers) {
final entry =
requiredProviders.putIfAbsent(
p.providerName,
() => <String, dynamic>{
'source': p.source,
'version': p.versionConstraint,
},
)
as Map<String, dynamic>;
if (!stack.isConfigurationAlias(p)) continue;
final aliases =
entry.putIfAbsent('configuration_aliases', () => <String>[])
as List<String>;
aliases.add(providerReference(p));
}
final out = <String, dynamic>{
'required_version': stack.requiredVersion,
if (requiredProviders.isNotEmpty) 'required_providers': requiredProviders,
};
final backend = stack.backend;
if (backend != null) {
out['backend'] = _encodeBackend(backend);
}
return out;
}