terraform-generator
Version:
Generate Terraform configurations with Node.js.
206 lines (205 loc) • 5.73 kB
TypeScript
import { Block, Comment, Resource, Data, Module, Output, Provider, Variable, Backend, Provisioner, ResourceToDataOptions, Locals, Import, ImportArgs, VariableArgs, ModuleArgs, OutputArgs, Moved, MovedArgs, RemovedArgs, Removed } from './blocks';
import { TerraformArgs } from './utils';
/**
* @category TerraformGenerator
*/
export interface WriteOptions {
/**
* Directory to write to.
*
* Default = .
*/
dir?: string;
/**
* Terraform filename, must ends with .tf.
*
* Default = terraform.tf
*/
tfFilename?: string;
/**
* Terraform variables filename, must ends with .tfvars.
*
* Default = terraform.tfvars
*/
tfvarsFilename?: string;
/**
* Put `true` to use `terraform fmt` to format the configuration, Terraform must be installed.
*
* If the terraform binary is named differently in your machine, put the binary name instead.
*
* Default = false
*/
format?: boolean | string;
}
/**
* @category TerraformGenerator
*/
export declare class TerraformGenerator {
#private;
/**
* Construct Terraform generator.
*
* Refer to Terraform documentation on what can be put as arguments.
*
* @param args arguments
*/
constructor(args?: TerraformArgs);
/**
* Generate Terraform configuration as string.
*/
generate(): {
tf: string;
tfvars?: string;
};
/**
* Write Terraform configuration to a file.
*
* @param options options
*/
write(options?: WriteOptions): void;
/**
* Add blocks into Terraform.
*
* @param blocks blocks
*/
addBlocks(...blocks: Block[]): this;
/**
* Add comment into Terraform.
*
* @param comment comment
*/
comment(comment: string): Comment;
/**
* Add provider into Terraform.
*
* Refer to Terraform documentation on what can be put as type & arguments.
*
* @param type type
* @param args arguments
*/
provider(type: string, args: TerraformArgs): Provider;
/**
* Add resource into Terraform.
*
* Refer to Terraform documentation on what can be put as type & arguments.
*
* @param type type
* @param name name
* @param args arguments
* @param provisioners provisioners
*/
resource(type: string, name: string, args: TerraformArgs, provisioners?: Provisioner[]): Resource;
/**
* Convert resource into data source and add it into Terraform.
*
* @param resource resource
* @param options options
* @param argNames names of resource arguments to be converted into data source arguments;
* use array for name mapping, position 0 = original resource's argument name, position 1 = mapped data source's argument name
* @param args extra arguments
*/
dataFromResource(resource: Resource, options: ResourceToDataOptions | undefined, argNames: (string | [string, string])[], args?: TerraformArgs): Data;
/**
* Add data source into Terraform.
*
* Refer to Terraform documentation on what can be put as type & arguments.
*
* @param type type
* @param name name
* @param args arguments
*/
data(type: string, name: string, args: TerraformArgs): Data;
/**
* Add module into Terraform.
*
* Refer to Terraform documentation on what can be put as arguments.
*
* @param name name
* @param args arguments
*/
module(name: string, args: ModuleArgs): Module;
/**
* Add output into Terraform.
*
* Refer to Terraform documentation on what can be put as arguments.
*
* @param name name
* @param args arguments
*/
output(name: string, args: OutputArgs): Output;
/**
* Add locals into Terraform.
*
* Refer to Terraform documentation on what can be put as arguments.
*
* @param args arguments
*/
locals(args: TerraformArgs): Locals;
/**
* Add variable into Terraform.
*
* Refer to Terraform documentation on what can be put as arguments.
*
* @param name name
* @param args arguments
* @param value variable value
*/
variable(name: string, args: VariableArgs, value?: any): Variable;
/**
* Add import into Terraform.
*
* Refer to Terraform documentation on what can be put as arguments.
*
* @param args arguments
*/
import(args: ImportArgs): Import;
/**
* Add backend into Terraform.
*
* Refer to Terraform documentation on what can be put as type & arguments.
*
* @param type type
* @param args arguments
*/
backend(type: string, args: TerraformArgs): Backend;
/**
* Add moved into Terraform.
*
* Refer to Terraform documentation on what can be put as type & arguments.
*
* @param args arguments
*/
moved(args: MovedArgs): Moved;
/**
* Add removed into Terraform.
*
* Refer to Terraform documentation on what can be put as type & arguments.
*
* @param args arguments
*/
removed(args: RemovedArgs): Removed;
/**
* Add variable values into Terraform.
*
* @param variables variables
*/
addVars(variables: TerraformArgs): this;
/**
* Merge this instance with other TerraformGenerator instances.
*
* @param tfgs other instances
*/
merge(...tfgs: TerraformGenerator[]): this;
/**
* Get arguments.
*/
getArguments(): TerraformArgs | undefined;
/**
* Get blocks.
*/
getBlocks(): Block[];
/**
* Get variables.
*/
getVars(): TerraformArgs;
}