const git = require('nodegit')
const fs = require('fs-extra')
const { URL } = require('url')
const REPO_URL = 'git@github.com:org/path.git'
const CLONE_DIR = '/tmp/private-repo-clone-test'

;(async () => {
  await fs.emptyDir(CLONE_DIR)
  let authAttempted = false
  await git.Clone.clone(REPO_URL, CLONE_DIR, {
    fetchOpts: {
      callbacks: {
        certificateCheck: () => 1,
        credentials: (url, username) => {
          if (authAttempted) return git.Cred.defaultNew()
          authAttempted = true
          if (url.startsWith('https://') && url.includes('@')) {
            url = new URL(url)
            return git.Cred.userpassPlaintextNew(url.username, url.password)
          } else {
            return git.Cred.sshKeyFromAgent(username)
          }
        }
      },
    },
  })
})()