UNPKG

1.54 kBJavaScriptView Raw
1/* eslint-disable standard/no-callback-literal */
2var mapToRegistry = require('./utils/map-to-registry.js')
3var npm = require('./npm')
4var output = require('./utils/output.js')
5
6module.exports = team
7
8team.subcommands = ['create', 'destroy', 'add', 'rm', 'ls', 'edit']
9
10team.usage =
11 'npm team create <scope:team>\n' +
12 'npm team destroy <scope:team>\n' +
13 'npm team add <scope:team> <user>\n' +
14 'npm team rm <scope:team> <user>\n' +
15 'npm team ls <scope>|<scope:team>\n' +
16 'npm team edit <scope:team>'
17
18team.completion = function (opts, cb) {
19 var argv = opts.conf.argv.remain
20 if (argv.length === 2) {
21 return cb(null, team.subcommands)
22 }
23 switch (argv[2]) {
24 case 'ls':
25 case 'create':
26 case 'destroy':
27 case 'add':
28 case 'rm':
29 case 'edit':
30 return cb(null, [])
31 default:
32 return cb(new Error(argv[2] + ' not recognized'))
33 }
34}
35
36function team (args, cb) {
37 // Entities are in the format <scope>:<team>
38 var cmd = args.shift()
39 var entity = (args.shift() || '').split(':')
40 return mapToRegistry('/', npm.config, function (err, uri, auth) {
41 if (err) { return cb(err) }
42 try {
43 return npm.registry.team(cmd, uri, {
44 auth: auth,
45 scope: entity[0].replace(/^@/, ''), // '@' prefix on scope is optional.
46 team: entity[1],
47 user: args.shift()
48 }, function (err, data) {
49 !err && data && output(JSON.stringify(data, undefined, 2))
50 cb(err, data)
51 })
52 } catch (e) {
53 cb(e.message + '\n\nUsage:\n' + team.usage)
54 }
55 })
56}