UNPKG

@kumologica/builder

Version:

Kumologica build and deploy module

82 lines (68 loc) 2.39 kB
const codegen = require('../../build/codegen'); const path = require('path'); function jsonMap(j) { return j? JSON.parse(j): undefined; } // function expGithub(provider, argv, log) { if (!["aws",].includes(provider)) { throw new Error(`Unsupported value for provider: <${provider}>, valid values are: aws`); } if (log) { log(`Exporting github action workflow for ${provider}`, false); } else { console.log(`Exporting github action workflow for ${provider}`); } //console.log(`reading flow file: ${settings.projectDir}/${settings.flowFileName}`); let projectDir; let buildDir; if (argv["project-directory"]) { projectDir = argv["project-directory"]; buildDir = codegen.getBuildDir(projectDir); } else { projectDir = process.cwd(); buildDir = process.cwd(); } let projectFlowName = argv["flow-file-name"] || codegen.findFlowFile(projectDir); let fileName = argv["output-file-name"] || path.join(buildDir,'workflow.yaml'); lambdaName = codegen.sanitizeLambdaName(projectFlowName.replace(".json", "")); const params = { functionName: argv["lambda-name"] || lambdaName, zipFileName: argv["zip-file-name"], roleName: argv["role-name"], deploymentBucketName: argv["bucket-name"], description: argv.description, runtime: argv.runtime, timeout: argv.timeout, memory: argv["memory-size"], reservedConcurrency: argv["reserved-concurrency"], tracingConfig: jsonMap(argv["tracing-config"]), roleArn: argv["role-arn"], environment: jsonMap(argv.environment), tags: jsonMap(argv.tags), kmsKeyArn: argv["kms-key-arn"], vpcConfig: jsonMap(argv["vpc-config"]), deadLetterConfig: jsonMap(argv["dead-letter-config"]), fileSystemConfigs: jsonMap(argv["file-system-configs"]), logRetentionDays: argv["log-retention-days"], policy: jsonMap(argv.policy), architectures: argv.architectures, layers: jsonMap(argv.layers), strictMode: argv["strict-mode"], triggers: jsonMap(argv.triggers), region: argv.region, skipPrepare: argv.skipPrepare }; if (!argv.lang || argv.lang === 'cloudformation') { const GithubAWSCFWorkflow = require('./githubAWSCFWorkflow'); const gh = new GithubAWSCFWorkflow(); template = gh.createWorkflow(params); } else { throw new Error(`lang: ${argv.lang} not supported yet`); } codegen.createFileFullPath(fileName, template); return fileName; } module.exports = { expGithub }