All files / lib/generator bitbucket.js

100% Statements 44/44
100% Branches 7/7
100% Functions 2/2
100% Lines 44/44

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 451x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 5x 5x 5x 1x 1x 1x 1x 1x 1x 1x 3x 3x 3x 2x 4x 3x 3x 3x 3x 3x 3x 4x 1x 1x 2x 2x 3x 3x 3x 1x 1x 1x  
const bitbucket = require('bitbucket-api');
const util = require('util');
 
/**
 * Configuration generator for remote Bitbucket repositories.
 *
 * @param {String} user Bitbucket username
 * @param {String} pass Bitbucket password
 * @class
 */
class Bitbucket {
  constructor(user, pass) {
    this.user = user;
    this.client = bitbucket.createClient({ username: user, password: pass });
  }
 
  /**
   * Generate Repoman configuration from remote Bitbucket repositories.
   *
   * @param {Function} cb standard cb(err, result) callback
   */
  generate(cb) {
    const config = {};
    this.client.repositories((err, repos) => {
      if (!err) {
        repos.forEach(({ scm, owner, slug }) => {
          if (scm === 'git') {
            const url = util.format(
              'ssh://git@bitbucket.org/%s/%s.git',
              owner,
              slug
            );
            config[slug] = { url };
          } else {
            console.error('TODO: %s scm is not yet supported', scm);
          }
        });
      }
      cb(err, config);
    });
  }
}
 
module.exports = Bitbucket;