fc-toolkit
Version:
fc-toolkit
66 lines • 6.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const path = require('path');
const fs = require('fs');
const FCClient = require('@alicloud/fc2');
const { execSync } = require('child_process');
const filesize = require('filesize');
const common_1 = require("./common");
const args = process.argv.slice(2);
const skipInstall = args.indexOf('--si') > -1;
if (skipInstall) {
console.log('skip installation');
}
const cwd = process.cwd();
const config = require(path.join(cwd, '.fc-config.json'));
const pkg = require(path.join(cwd, 'package.json'));
const installCommand = config.intall || 'npm install --production';
const serviceName = config.serviceName;
const version = (config.version || pkg.version);
const name = config.name || pkg.name;
const functionNames = version
.split(',')
.map(v => common_1.getFunctionName({ name, version: v }));
const client = new FCClient(config.fc.accountId, Object.assign(Object.assign({}, config.fc), {
region: config.fc.region.replace('-internal', ''),
}));
function prepare() {
if (!skipInstall) {
console.log(`run ${installCommand}..`);
execSync(installCommand, { stdio: 'inherit' });
}
console.log('compress file..');
const filepath = `/tmp/${Math.random()}.zip`;
execSync(config.zip || `zip -qr ${filepath} ./ -x *.git*`, {
stdio: 'inherit',
});
console.log(`zip file size is ${filesize(fs.statSync(filepath).size)}, uploading zip..`);
return filepath;
}
async function publishToFc(filepath, functionName) {
await client.createFunction(serviceName, Object.assign({ functionName, handler: 'index.handler', memorySize: 1024, runtime: 'nodejs10', timeout: 300, code: {
zipFile: fs.readFileSync(filepath, 'base64'),
} }, pick(config, 'handler', 'memorySize', 'runtime', 'timeout', 'EnvironmentVariables')));
console.log(`create function ${serviceName}/${functionName} successfully!`);
}
function pick(obj, ...attrs) {
const ret = {};
attrs.forEach(attr => {
ret[attr] = obj[attr];
});
return ret;
}
async function publish() {
try {
const filepath = prepare();
await Promise.all(functionNames.map(n => publishToFc(filepath, n)));
process.exit(0);
}
catch (e) {
console.log(e.message, e.stack);
process.exit(1);
}
}
publish();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wdWJsaXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM3QixNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekIsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQzFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDOUMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBRXJDLHFDQUEyQztBQUUzQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzlDLElBQUksV0FBVyxFQUFFO0lBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0NBQ2xDO0FBRUQsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBRTFCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7QUFDMUQsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7QUFHcEQsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSwwQkFBMEIsQ0FBQztBQUNuRSxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO0FBR3ZDLE1BQU0sT0FBTyxHQUFHLENBQUMsTUFBTSxD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