UNPKG

sherry-utils

Version:
48 lines (41 loc) 1.06 kB
const download = require('download') const gitclone = require('git-clone') const logger = require('./logger') const GitUrlParser = require('./GitUrlParser')() const fs = require('./fs') /** * Download `repo` to `dest` and callback `fn(err)`. * * @param {GitRepoUrl} repo * @param {String} dest * @param {Object} opts */ module.exports = async function (repo, dest, opts) { logger.debug('repo', repo) logger.debug('opts', opts) await fs.remove(dest) GitUrlParser.setOptions(opts) repo = GitUrlParser.parse(repo) const { downloadUrl, checkout, protocol } = repo if (protocol === 'ssh') { return new Promise((resolve, reject) => { gitclone(downloadUrl, dest, { checkout, shallow: checkout === 'master' }, async err => { if (err) { reject(err) } else { await fs.remove(dest + '/.git') resolve() } }) }) } return download(downloadUrl, dest, { extract: true, strip: 1, mode: '666', headers: { accept: 'application/zip' } }) }