UNPKG

roc

Version:

Build modern web applications easily

78 lines (59 loc) 2.3 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.getVersions = getVersions; exports.get = get; var _got = require('got'); var _got2 = _interopRequireDefault(_got); var _tar = require('tar'); var _tar2 = _interopRequireDefault(_tar); var _zlib = require('zlib'); var _zlib2 = _interopRequireDefault(_zlib); var _temp = require('temp'); var _temp2 = _interopRequireDefault(_temp); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // Automatically track and cleanup files at exit _temp2.default.track(); /** * Fetches an array of all the tags for a Github repo, used as possible versions for a template. * * @param {string} packageName - A package name, expected to match "username/repo" * * @returns {object[]} - Array of tags/versions for the package */ function getVersions(packageName) { if (!packageName) { throw new Error('No packageName was given.'); } return (0, _got2.default)(`https://api.github.com/repos/${ packageName }/tags`, { json: true }).then(response => response.body); } /** * Fetches the tarball for a repository on Github. * * @param {string} packageName - A package name, expected to match "username/repo". * @param {string} [version="master"] The tag/version to fetch. * * @returns {string} The path to the temporary directory where the unarchived tarball is located. */ function get(packageName) { let version = arguments.length <= 1 || arguments[1] === undefined ? 'master' : arguments[1]; if (!packageName) { throw new Error('No packageName was given.'); } return new Promise((resolve, reject) => { _temp2.default.mkdir('roc', (err, dirPath) => { if (err) { return reject(err); } /* eslint-disable new-cap */ const writeTar = _tar2.default.Extract({ strip: 1, path: dirPath }); /* eslint-enable */ writeTar.on('finish', () => resolve(dirPath)); _got2.default.stream(`http://github.com/${ packageName }/tarball/${ version }`).on('error', reject).pipe(_zlib2.default.createGunzip()).on('error', reject).pipe(writeTar).on('error', reject); }); }); } //# sourceMappingURL=github.js.map