@kumologica/builder
Version:
Kumologica build and deploy module
82 lines (68 loc) • 2.39 kB
JavaScript
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
}