@box/cli
Version:
Official command line interface for the Box API
191 lines (181 loc) • 3.98 kB
JavaScript
const BoxCommand = require('../../box-command');
const { Flags, Args } = require('@oclif/core');
const CollaborationModule = require('../../modules/collaboration');
class CollaborationsAddCommand extends BoxCommand {
async run() {
const { flags, args } = await this.parse(CollaborationsAddCommand);
let collabModule = new CollaborationModule(this.client);
let collaboration = await collabModule.createCollaboration(args, flags);
await this.output(collaboration);
}
}
CollaborationsAddCommand.aliases = [ 'collaborations:add' ];
CollaborationsAddCommand.description = 'Create a collaboration for a Box item';
CollaborationsAddCommand.examples = ['box collaborations:create 22222 folder --role editor --user-id 33333'];
CollaborationsAddCommand._endpoint = 'post_collaborations';
CollaborationsAddCommand.flags = {
...BoxCommand.flags,
role: Flags.string({
char: 'r',
description: 'An option to manually enter the role',
exclusive: [
'editor',
'viewer',
'previewer',
'uploader',
'previewer-uploader',
'viewer-uploader',
'co-owner'
],
options: [
'editor',
'viewer',
'previewer',
'uploader',
'previewer_uploader',
'viewer_uploader',
'co-owner'
]
}),
'user-id': Flags.string({
description: 'Id for user to collaborate',
exclusive: [
'group-id',
'login'
]
}),
'group-id': Flags.string({
description: 'Id for group to collaborate',
exclusive: [
'user-id',
'login'
]
}),
login: Flags.string({
description: 'Login for user to collaborate',
exclusive: [
'group-id',
'user-id'
]
}),
editor: Flags.boolean({
description: 'Set the role to editor',
hidden: true,
exclusive: [
'role',
'viewer',
'previewer',
'uploader',
'previewer-uploader',
'viewer-uploader',
'co-owner',
]
}),
viewer: Flags.boolean({
description: 'Set the role to viewer',
hidden: true,
exclusive: [
'role',
'editor',
'previewer',
'uploader',
'previewer-uploader',
'viewer-uploader',
'co-owner',
]
}),
previewer: Flags.boolean({
description: 'Set the role to previewer',
hidden: true,
exclusive: [
'role',
'viewer',
'editor',
'uploader',
'previewer-uploader',
'viewer-uploader',
'co-owner',
]
}),
uploader: Flags.boolean({
description: 'Set the role to uploader',
hidden: true,
exclusive: [
'role',
'viewer',
'previewer',
'editor',
'previewer-uploader',
'viewer-uploader',
'co-owner',
]
}),
'previewer-uploader': Flags.boolean({
description: 'Set the role to previewer-uploader',
hidden: true,
exclusive: [
'role',
'viewer',
'previewer',
'uploader',
'editor',
'viewer-uploader',
'co-owner',
]
}),
'viewer-uploader': Flags.boolean({
description: 'Set the role to viewer-uploader',
hidden: true,
exclusive: [
'role',
'viewer',
'previewer',
'uploader',
'previewer-uploader',
'editor',
'co-owner',
]
}),
'co-owner': Flags.boolean({
description: 'Set the role to co-owner',
hidden: true,
exclusive: [
'role',
'viewer',
'previewer',
'uploader',
'previewer-uploader',
'viewer-uploader',
'editor',
]
}),
'can-view-path': Flags.boolean({
description: 'Whether view path collaboration feature is enabled or not',
allowNo: true
}),
'id-only': Flags.boolean({ description: 'Return only an ID to output from this command' }),
notify: Flags.boolean({
description: 'All users will receive email notification of the collaboration',
allowNo: true,
})
};
CollaborationsAddCommand.args = {
itemID: Args.string({
name: 'itemID',
required: true,
hidden: false,
description: 'The ID of the Box item to add the collaboration to',
}),
itemType: Args.string({
name: 'itemType',
required: true,
hidden: false,
description: 'The type of the Box item to add the collaboration to',
options: [
'file',
'folder'
]
}),
};
module.exports = CollaborationsAddCommand;
;