var assert = require('assert') var hosted = require('hosted-git-info') var log = require('npmlog') var addRemoteGit = require('./add-remote-git.js') module.exports = function maybeGithub (p, cb) { assert(typeof p === 'string', 'must pass package name') assert(typeof cb === 'function', 'must pass callback') var parsed = hosted.fromUrl(p) log.info('maybeGithub', 'Attempting %s from %s', p, parsed.git()) return addRemoteGit(parsed.git(), true, function (er, data) { if (er) { log.info('maybeGithub', "Couldn't clone %s", parsed.git()) log.info('maybeGithub', 'Now attempting %s from %s', p, parsed.sshurl()) return addRemoteGit(parsed.sshurl(), false, function (er, data) { if (er) return cb(er) success(parsed.sshurl(), data) }) } success(parsed.git(), data) }) function success (u, data) { data._from = u data._fromGithub = true return cb(null, data) } }