import { execSync } from 'child_process'; import fs from 'fs'; import beautify from 'json-beautify'; import path from 'path'; import pkg from '../package.json'; import { makeSchemaMap } from './makeSchemaMap'; // tslint:disable: no-console async function main(srcDir: string, outDir: string): Promise { console.log(`Cleaning ${outDir}...`); execSync(`rm -rf ${outDir}`); execSync(`mkdir ${outDir}`); const schemaMap = await makeSchemaMap(srcDir); for (const schemaPath of schemaMap.keys()) { console.log(`Generating ${schemaPath} ...`); const dirPath = path.join(outDir, path.dirname(schemaPath)); const filePath = path.join(outDir, schemaPath); const formattedJson = beautify(schemaMap.get(schemaPath), null as any, 2, 100); fs.mkdirSync(dirPath, { recursive: true }); fs.writeFileSync(filePath, formattedJson); } console.log(`Uploading to S3 bucket...`); execSync(`aws s3 cp --recursive --metadata "version=${pkg.version}" ./${outDir} s3://schemas.coastapp.com/`); execSync(`aws s3 cp --recursive --metadata "version=${pkg.version}" ./src/editor s3://schemas.coastapp.com/`); } // tslint:disable-next-line: no-floating-promises main('src/schemas/card', 'out');