Welcome to mirror list, hosted at ThFree Co, Russian Federation.

spawn.js « lib « git « @npmcli « node_modules « npm « deps - github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: cee3a7baf407881e7e1c7b4639850a247710a20d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
const spawn = require('@npmcli/promise-spawn')
const promiseRetry = require('promise-retry')
const shouldRetry = require('./should-retry.js')
const whichGit = require('./which.js')
const makeOpts = require('./opts.js')
const procLog = require('./proc-log.js')

module.exports = (gitArgs, opts = {}) => {
  const gitPath = whichGit(opts)

  if (gitPath instanceof Error) { return Promise.reject(gitPath) }

  const log = opts.log || procLog
  let retry = opts.retry
  if (retry === null || retry === undefined) {
    retry = {
      retries: opts.fetchRetries || 2,
      factor: opts.fetchRetryFactor || 10,
      maxTimeout: opts.fetchRetryMaxtimeout || 60000,
      minTimeout: opts.fetchRetryMintimeout || 1000
    }
  }
  return promiseRetry((retry, number) => {
    if (number !== 1) {
      log.silly('pacote', `Retrying git command: ${
        gitArgs.join(' ')} attempt # ${number}`)
    }

    return spawn(gitPath, gitArgs, makeOpts(opts))
      .catch(er => {
        if (!shouldRetry(er.stderr, number)) {
          throw er
        }
        retry(er)
      })
  }, retry)
}