-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathquickstart-files-generator.ts
39 lines (34 loc) · 1.2 KB
/
quickstart-files-generator.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import * as fs from 'fs';
import * as path from 'path';
// Settings variables
const sourceDirectory = './dist';
const destinationFilename = 'quickstart-files.tf';
// Program variables
let terraformFile: string;
const files = fs.readdirSync(`${__dirname}/${sourceDirectory}`);
terraformFile = files.map((filename: string, index: number) => `resource "aws_s3_bucket_object" "file_${index}" {
bucket = "\${aws_s3_bucket.static_site.bucket}"
key = "${filename}"
source = "${sourceDirectory}/${filename}"
content_type = "${getFileMimeType(filename)}"
etag = "\${md5(file("${sourceDirectory}/${filename}"))}"
}`).join("\n\r");
fs.writeFileSync(destinationFilename,
terraformFile, { encoding: 'utf8' });
function getFileMimeType(filename: string): string {
const fileExtension = path.extname(filename);
switch (fileExtension) {
case '.html':
case '.htm':
return "text/html";
case '.css':
return 'text/css';
case '.js':
return 'application/javascript'
case '.map':
return 'application/javascript';
case '.json':
return 'application/json';
}
return 'text/plain';
}