'use strict'
const BB = require('bluebird')
const exec = require('child_process').execFile
const spawn = require('./spawn')
const npm = require('../npm.js')
const which = require('which')
const git = npm.config.get('git')
const assert = require('assert')
const log = require('npmlog')
const noProgressTillDone = require('./no-progress-while-running.js').tillDone
exports.spawn = spawnGit
exports.exec = BB.promisify(execGit)
exports.chainableExec = chainableExec
exports.whichAndExec = whichAndExec
function prefixGitArgs () {
return process.platform === 'win32' ? ['-c', 'core.longpaths=true'] : []
}
function execGit (args, options, cb) {
log.info('git', args)
const fullArgs = prefixGitArgs().concat(args || [])
return exec(git, fullArgs, options, noProgressTillDone(cb))
}
function spawnGit (args, options) {
log.info('git', args)
return spawn(git, prefixGitArgs().concat(args || []), options)
}
function chainableExec () {
var args = Array.prototype.slice.call(arguments)
return [execGit].concat(args)
}
function whichAndExec (args, options, cb) {
assert.equal(typeof cb, 'function', 'no callback provided')
// check for git
which(git, function (err) {
if (err) {
err.code = 'ENOGIT'
return cb(err)
}
execGit(args, options, cb)
})
}
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| completion | Folder | 0755 |
|
|
| ansi-trim.js | File | 211 B | 0644 |
|
| child-path.js | File | 290 B | 0644 |
|
| completion.sh | File | 1.74 KB | 0755 |
|
| correct-mkdir.js | File | 3.04 KB | 0644 |
|
| deep-sort-object.js | File | 363 B | 0644 |
|
| depr-check.js | File | 451 B | 0644 |
|
| did-you-mean.js | File | 495 B | 0644 |
|
| error-handler.js | File | 6.05 KB | 0644 |
|
| error-message.js | File | 10.21 KB | 0644 |
|
| escape-arg.js | File | 673 B | 0644 |
|
| escape-exec-path.js | File | 777 B | 0644 |
|
| gently-rm.js | File | 484 B | 0644 |
|
| get-publish-config.js | File | 919 B | 0644 |
|
| git.js | File | 1.26 KB | 0644 |
|
| gunzip-maybe.js | File | 552 B | 0644 |
|
| is-registry.js | File | 294 B | 0644 |
|
| is-windows-bash.js | File | 129 B | 0644 |
|
| is-windows-shell.js | File | 153 B | 0644 |
|
| is-windows.js | File | 59 B | 0644 |
|
| lifecycle-cmd.js | File | 496 B | 0644 |
|
| lifecycle.js | File | 364 B | 0644 |
|
| link.js | File | 234 B | 0644 |
|
| locker.js | File | 1.81 KB | 0644 |
|
| map-to-registry.js | File | 2.79 KB | 0644 |
|
| metrics-launch.js | File | 1.05 KB | 0644 |
|
| metrics.js | File | 2.03 KB | 0644 |
|
| module-name.js | File | 935 B | 0644 |
|
| move.js | File | 290 B | 0644 |
|
| no-progress-while-running.js | File | 541 B | 0644 |
|
| output.js | File | 210 B | 0644 |
|
| package-id.js | File | 399 B | 0644 |
|
| parse-json.js | File | 592 B | 0644 |
|
| perf.js | File | 562 B | 0644 |
|
| pick-manifest-from-registry-metadata.js | File | 905 B | 0644 |
|
| pulse-till-done.js | File | 783 B | 0644 |
|
| read-local-package.js | File | 329 B | 0644 |
|
| read-user-info.js | File | 1.75 KB | 0644 |
|
| save-stack.js | File | 349 B | 0644 |
|
| spawn.js | File | 1.38 KB | 0644 |
|
| temp-filename.js | File | 173 B | 0644 |
|
| umask.js | File | 343 B | 0644 |
|
| unix-format-path.js | File | 85 B | 0644 |
|
| unsupported.js | File | 2.21 KB | 0644 |
|
| usage.js | File | 576 B | 0644 |
|
| warn-deprecated.js | File | 556 B | 0644 |
|