UNPKG

roc

Version:

Build modern web applications easily

97 lines (73 loc) 2.84 kB
'use strict'; exports.__esModule = true; exports.getVersions = getVersions; exports.get = get; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } require('source-map-support/register'); var _request = require('request'); var _request2 = _interopRequireDefault(_request); var _tar = require('tar'); var _tar2 = _interopRequireDefault(_tar); var _zlib = require('zlib'); var _zlib2 = _interopRequireDefault(_zlib); var _temp = require('temp'); var _temp2 = _interopRequireDefault(_temp); // 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 new Promise(function (resolve, reject) { _request2['default'].get({ url: 'https://api.github.com/repos/' + packageName + '/tags', headers: { 'User-Agent': 'request' } }, function (error, resp, body) { if (error) { return reject(error); } if (resp.statusCode !== 200) { return reject(new Error(packageName + ': returned ' + resp.statusCode + '\n\nbody:\n' + body)); } return resolve(JSON.parse(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) { var version = arguments.length <= 1 || arguments[1] === undefined ? 'master' : arguments[1]; if (!packageName) { throw new Error('No packageName was given.'); } return new Promise(function (resolve, reject) { _temp2['default'].mkdir('roc', function (err, dirPath) { if (err) { return reject(err); } /* eslint-disable new-cap */ var writeTar = _tar2['default'].Extract({ strip: 1, path: dirPath }); /* eslint-enable */ writeTar.on('finish', function () { return resolve(dirPath); }); _request2['default'].get('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