UNPKG

fc-toolkit

Version:

fc-toolkit

66 lines 6.23 kB
#!/usr/bin/env node "use strict"; 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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