zapier-platform-cli
Version:
The CLI for apps in the Zapier Developer Platform.
49 lines (41 loc) • 1.43 kB
JavaScript
;
var fetch = require('node-fetch');
var path = require('path');
var tmp = require('tmp');
var fse = require('fs-extra');
var AdmZip = require('adm-zip');
var _require = require('./files'),
writeFile = _require.writeFile,
copyDir = _require.copyDir;
var LAMBDA_VERSION = 'v6.10.2';
var downloadAndUnzipTo = function downloadAndUnzipTo(key, destDir) {
var fragment = 'zapier-platform-example-app-' + key;
var folderInZip = fragment + '-master';
var url = 'https://codeload.github.com/zapier/' + fragment + '/zip/master';
var tempDir = tmp.tmpNameSync();
var tempFilePath = path.resolve(tempDir, 'zapier-template.zip');
return fse.ensureDir(tempDir).then(function () {
return fetch(url);
}).then(function (res) {
return res.buffer();
}).then(function (buffer) {
return writeFile(tempFilePath, buffer);
}).then(function () {
var zip = new AdmZip(tempFilePath);
zip.extractAllTo(tempDir, true);
return path.join(tempDir, folderInZip);
}).then(function (currPath) {
return copyDir(currPath, destDir);
}).then(function () {
return fse.writeFile(path.join(destDir, '.nvmrc'), LAMBDA_VERSION + '\n');
}).then(function () {
return fse.remove(tempDir);
});
};
var removeReadme = function removeReadme(dir) {
return fse.remove(path.join(dir, 'README.md'));
};
module.exports = {
downloadAndUnzipTo: downloadAndUnzipTo,
removeReadme: removeReadme
};