34 lines
861 B
JavaScript
34 lines
861 B
JavaScript
|
const {
|
||
|
GitConnectionError,
|
||
|
GitPathspecError,
|
||
|
GitUnknownError,
|
||
|
} = require('./errors.js')
|
||
|
|
||
|
const connectionErrorRe = new RegExp([
|
||
|
'remote error: Internal Server Error',
|
||
|
'The remote end hung up unexpectedly',
|
||
|
'Connection timed out',
|
||
|
'Operation timed out',
|
||
|
'Failed to connect to .* Timed out',
|
||
|
'Connection reset by peer',
|
||
|
'SSL_ERROR_SYSCALL',
|
||
|
'The requested URL returned error: 503',
|
||
|
].join('|'))
|
||
|
|
||
|
const missingPathspecRe = /pathspec .* did not match any file\(s\) known to git/
|
||
|
|
||
|
function makeError (er) {
|
||
|
const message = er.stderr
|
||
|
let gitEr
|
||
|
if (connectionErrorRe.test(message)) {
|
||
|
gitEr = new GitConnectionError(message)
|
||
|
} else if (missingPathspecRe.test(message)) {
|
||
|
gitEr = new GitPathspecError(message)
|
||
|
} else {
|
||
|
gitEr = new GitUnknownError(message)
|
||
|
}
|
||
|
return Object.assign(gitEr, er)
|
||
|
}
|
||
|
|
||
|
module.exports = makeError
|