@kumologica/builder
Version: 
Kumologica build and deploy module
72 lines (60 loc) • 1.79 kB
JavaScript
const AWSBuilder = require('./build/aws');
const codegen = require('./build/codegen');
const exporter = require('./export');
const docs = require('./docs');
const code = require('./code');
const Updater = require('./updater');
function exp(lang, provider, argv, log) {
	
	return exporter.exp(lang, provider, argv, log);
}
function doc(lang, argv) {
	return docs.generate(lang, argv);
}
async function deploy(provider, argv, log) {
	if (!["aws", "kumohub", "azure", "google"].includes(provider)) {
		throw new Error(`Unsupported value for provider: <${provider}>, valid values are: azure, kumohub`);
	}
	switch (provider) {
		case 'azure':
			const AzureDeployer = require('./deploy/azure');
			const azureDeployer = new AzureDeployer(log);
			await azureDeployer.deploy(argv);
			break;
		default:
			throw new Error(`Deployment not implemented yet for provider: <${provider}>`);
	}
}
async function build(provider, argv, log) {
	if (!["aws", "azure", "kumohub", "google"].includes(provider)) {
		throw new Error(`Unsupported value for provider: <${provider}>, valid values are: aws, azure, kumohub, google`);
	}
	console.log('Executing build for provider: ', provider);
	let buildFileName;
	switch (provider) {
		case 'aws':
			const awsBuilder = new AWSBuilder();
			await awsBuilder.build(argv);
			break;
		case 'kumohub':
			const kumohubBuilder = new KumohubBuilder(log);
			await kumohubBuilder.build(argv);
			break;
		case 'azure':
			const AzureBuilder = require('./build/azure');
			const azureBuilder = new AzureBuilder(log);
			buildFileName = await azureBuilder.build(argv);
			break;
		default:
			throw new Error(`provider: ${argv.provider} not supported yet`);
	}
	return buildFileName;
}
module.exports = {
	build,
	exp,
	deploy,
	doc,
	code,
	codegen,
	Updater
}