diff options
author | Kat Marchán <kzm@sykosomatic.org> | 2015-07-21 03:52:51 +0300 |
---|---|---|
committer | Rebecca Turner <me@re-becca.org> | 2015-08-14 22:25:46 +0300 |
commit | e6b5acc3521e074b86c0ea5aad0a836b09d9d164 (patch) | |
tree | 841a57c36ec731b7fcde1ba14e9c10c1f991e0bd /lib/team.js | |
parent | e3b271a7b4bfec856642570d0bf21aed2378737b (diff) |
team: initial implementation of team command
PR-URL: https://github.com/npm/npm/pull/9011
Diffstat (limited to 'lib/team.js')
-rw-r--r-- | lib/team.js | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/lib/team.js b/lib/team.js new file mode 100644 index 000000000..324d8df5e --- /dev/null +++ b/lib/team.js @@ -0,0 +1,54 @@ +var mapToRegistry = require('./utils/map-to-registry.js') +var npm = require('./npm') + +module.exports = team + +team.subcommands = ['create', 'destroy', 'add', 'rm', 'ls', 'edit'] + +team.usage = + 'npm team create <scope:team>\n' + + 'npm team destroy <scope:team>\n' + + 'npm team add <scope:team> <user>\n' + + 'npm team rm <scope:team> <user>\n' + + 'npm team ls <scope>|<scope:team>\n' + + 'npm team edit <scope:team>' + +team.completion = function (opts, cb) { + var argv = opts.conf.argv.remain + if (argv.length === 2) { + return cb(null, team.subcommands) + } + switch (argv[2]) { + case 'ls': + case 'create': + case 'destroy': + case 'add': + case 'rm': + case 'edit': + return cb(null, []) + default: + return cb(new Error(argv[2] + ' not recognized')) + } +} + +function team (args, cb) { + // Entities are in the format <scope>:<team> + var cmd = args.shift() + var entity = (args.shift() || '').split(':') + return mapToRegistry('/', npm.config, function (err, uri, auth) { + if (err) { return cb(err) } + try { + return npm.registry.team(cmd, uri, { + auth: auth, + scope: entity[0], + team: entity[1], + user: args.shift() + }, function (err, data) { + !err && data && console.log(JSON.stringify(data, undefined, 2)) + cb(err, data) + }) + } catch (e) { + cb(e.message + '\n\nUsage:\n' + team.usage) + } + }) +} |