1 |
|
2 |
|
3 | const execGit = require('./execGit')
|
4 |
|
5 | module.exports = async function getStagedFiles(options) {
|
6 | try {
|
7 | // Docs for --diff-filter option: https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203
|
8 | // Docs for -z option: https://git-scm.com/docs/git-diff#Documentation/git-diff.txt--z
|
9 | const lines = await execGit(
|
10 | ['diff', '--staged', '--diff-filter=ACMR', '--name-only', '-z'],
|
11 | options
|
12 | )
|
13 | // With `-z`, git prints `fileA\u0000fileB\u0000fileC\u0000` so we need to remove the last occurrence of `\u0000` before splitting
|
14 | // eslint-disable-next-line no-control-regex
|
15 | return lines ? lines.replace(/\u0000$/, '').split('\u0000') : []
|
16 | } catch {
|
17 | return null
|
18 | }
|
19 | }
|