'use strict'; const rRepoURL = /^(?:(?:git|https?|git\+https|git\+ssh):\/\/)?(?:[^@]+@)?([^\/]+?)[\/:](.+?)\.git$/; // eslint-disable-line no-useless-escape const rGithubPage = /\.github\.(io|com)$/; function parseRepo(repo) { const split = repo.split(','); const url = split.shift(); let branch = split[0]; if (!branch && rRepoURL.test(url)) { const match = url.match(rRepoURL); const host = match[1]; const path = match[2]; if (host === 'github.com') { branch = rGithubPage.test(path) ? 'master' : 'gh-pages'; } else if (host === 'coding.net') { branch = 'coding-pages'; } } return { url: url, branch: branch || 'master' }; } module.exports = function(args) { const repo = args.repo || args.repository; if (!repo) throw new TypeError('repo is required!'); if (typeof repo === 'string') { const data = parseRepo(repo); data.branch = args.branch || data.branch; return [data]; } const result = Object.keys(repo).map(key => { return parseRepo(repo[key]); }); return result; };