roc
Version:
Build modern web applications easily
78 lines (59 loc) • 2.3 kB
JavaScript
;
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