lint-staged
Version:
Lint files staged by git
30 lines (24 loc) • 818 B
JavaScript
const debug = require('debug')('lint-staged:git')
const execa = require('execa')
/**
* Explicitly never recurse commands into submodules, overriding local/global configuration.
* @see https://git-scm.com/docs/git-config#Documentation/git-config.txt-submodulerecurse
*/
const NO_SUBMODULE_RECURSE = ['-c', 'submodule.recurse=false']
const GIT_GLOBAL_OPTIONS = [...NO_SUBMODULE_RECURSE]
module.exports = async function execGit(cmd, options = {}) {
debug('Running git command', cmd)
try {
const { stdout } = await execa('git', GIT_GLOBAL_OPTIONS.concat(cmd), {
...options,
all: true,
cwd: options.cwd || process.cwd(),
})
return stdout
} catch ({ all }) {
throw new Error(all)
}
}
// exported for tests
module.exports.GIT_GLOBAL_OPTIONS = GIT_GLOBAL_OPTIONS