Skip to content

Commit

Permalink
Merge pull request #7 from nekonomokochan/feature/issue3
Browse files Browse the repository at this point in the history
Implement a function to create provider.tf
  • Loading branch information
keitakn committed Jan 11, 2019
2 parents 27dcd1b + 767ec51 commit 79fa9be
Show file tree
Hide file tree
Showing 5 changed files with 153 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -69,3 +69,4 @@ dist

# output terraform config files
backend.tf
provider.tf
64 changes: 64 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ Create terraform config files

## Use With TypeScript

### createS3Backend

```typescript
import { createS3Backend } from "@nekonomokochan/terraform-config-creator";

Expand Down Expand Up @@ -89,8 +91,39 @@ data "terraform_remote_state" "bastion" {
}
```

### createAwsProvider

```typescript
import { createAwsProvider } from "@nekonomokochan/terraform-config-creator";

(async () => {
const params = {
outputPath: "./",
awsProviderParams: [
{
version: "=1.54.0",
region: "ap-northeast-1",
profile: "nekochans-dev"
},
{
version: "=1.54.0",
region: "us-east-1",
profile: "nekochans-dev",
alias: "us_east_1"
}
]
};

await createAwsProvider(params);
})();
```

`provider.tf` is created in your current directory.

## Use With JavaScript

### createS3Backend

```javascript
(async () => {
"use strict";
Expand Down Expand Up @@ -132,5 +165,36 @@ data "terraform_remote_state" "bastion" {

`backend.tf` is created in your current directory.

### createAwsProvider

```javascript
(async () => {
"use strict";

const terraformConfigCreator = require("@nekonomokochan/terraform-config-creator");

const params = {
outputPath: "./",
awsProviderParams: [
{
version: "=1.54.0",
region: "ap-northeast-1",
profile: "nekochans-dev"
},
{
version: "=1.54.0",
region: "us-east-1",
profile: "nekochans-dev",
alias: "us_east_1"
}
]
};

await terraformConfigCreator.createAwsProvider(params);
})();
```

`provider.tf` is created in your current directory.

# License
MIT
45 changes: 45 additions & 0 deletions src/createAwsProvider.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import { promisify } from "util";
import fs from "fs";

interface IProvider {
version: string;
region: string;
profile: string;
alias?: string;
}

interface ICreateAwsProviderParams {
outputPath: string;
awsProviderParams: IProvider[];
}

const createProvider = (provider: IProvider): string => {
return `provider "aws" {
version = "${provider.version}"
region = "${provider.region}"
profile = "${provider.profile}"
}`;
};

const createProviderWithAlias = (provider: IProvider): string => {
return `provider "aws" {
version = "${provider.version}"
region = "${provider.region}"
profile = "${provider.profile}"
alias = "${provider.alias}"
}`;
};

export const createAwsProvider = async (params: ICreateAwsProviderParams) => {
const writeFile = promisify(fs.writeFile);
let outputString = "";

params.awsProviderParams.map((provider: IProvider) => {
outputString +=
provider.alias === undefined
? `${createProvider(provider)}\n\n`
: `${createProviderWithAlias(provider)}\n\n`;
});

await writeFile(`${params.outputPath}provider.tf`, outputString);
};
1 change: 1 addition & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
export * from "./createS3Backend";
export * from "./createAwsProvider";
42 changes: 42 additions & 0 deletions test/integration/createAwsProvider.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import { createAwsProvider } from "../../src/index";
import fs from "fs";

describe("createAwsProvider.integrationTest", () => {
it("should be able to create a provider.tf", async () => {
const params = {
outputPath: "./",
awsProviderParams: [
{
version: "=1.54.0",
region: "ap-northeast-1",
profile: "nekochans-dev"
},
{
version: "=1.54.0",
region: "us-east-1",
profile: "nekochans-dev",
alias: "us_east_1"
}
]
};

const expected = `provider "aws" {
version = "=1.54.0"
region = "ap-northeast-1"
profile = "nekochans-dev"
}
provider "aws" {
version = "=1.54.0"
region = "us-east-1"
profile = "nekochans-dev"
alias = "us_east_1"
}\n\n`;

await createAwsProvider(params);

const resultString = fs.readFileSync("./provider.tf").toString();

expect(resultString).toEqual(expected);
});
});

0 comments on commit 79fa9be

Please sign in to comment.