Press n or j to go to the next uncovered block, b, p or k for the previous block.
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 5x 5x 1x 1x 1x 1x 1x 1x 1x 1x 1x 3x 3x 3x 3x 3x 6x 6x 6x 6x 2x 6x 2x 2x 3x 3x 3x 3x 1x 1x 2x 2x 2x 2x 2x 1x 1x 2x 2x 2x 2x 2x 1x 1x 1x | const fs = require('fs'); const ini = require('ini'); const p = require('path'); const svnInfo = require('svn-info'); /** * Configuration generator for local repositories. * * @param {String} dir directory where the local repositories are located * @class */ class Local { constructor(dir) { this.dir = dir; } /** * Generate Repoman configuration from local repositories. * Only supports vanilla git clone (using git config), * and subversion checkouts (using svn info). * * @param {Function} cb standard cb(err, result) callback */ generate(cb) { const self = this; const config = {}; const repos = fs.readdirSync(this.dir); repos.forEach(repo => { const gitConfig = p.join(repo, '.git', 'config'); const svnEntries = p.join(repo, '.svn', 'entries'); if (fs.existsSync(gitConfig)) { self._git(gitConfig, repo, config); } else if (fs.existsSync(svnEntries)) { self._svn(svnEntries, repo, config); } }); cb(null, config); } _git(gitConfig, repo, config) { const info = ini.parse(fs.readFileSync(gitConfig, 'utf-8')); if (info['remote "origin"']) config[repo] = { type: 'git', url: info['remote "origin"'].url }; } _svn(svnEntries, repo, config) { const info = svnInfo.sync(repo); const url = info.repositoryRoot; config[repo] = { type: 'svn', url }; } } module.exports = Local; |