Explain the query is trying to do
[gitter.git] / scripts / utils / reserve-username.js
blob0ef4cc4fbe282cd9169201681290913811aa8892
1 #!/usr/bin/env node
2 'use strict';
4 const userService = require('gitter-web-users');
5 const shutdown = require('shutdown');
7 require('../../server/event-listeners').install();
9 const opts = require('yargs')
10   .option('username', {
11     required: true,
12     description: 'username to reserve e.g trevorah',
13     string: true
14   })
15   .option('unreserve', {
16     alias: 'u',
17     type: 'boolean',
18     description: 'unreserve usersername'
19   })
20   .help('help')
21   .alias('help', 'h').argv;
23 Promise.resolve()
24   .then(() => {
25     if (opts.unreserve) {
26       return userService.unreserveUsername(opts.username);
27     }
29     return userService.reserveUsername(opts.username);
30   })
31   .then(function() {
32     var action = opts.unreserve
33       ? 'unreserved and people are free to register that username'
34       : 'reserved and can no longer be registered';
35     console.log(opts.username, 'has been', action);
36   })
37   // wait 5 seconds to allow for asynchronous `event-listeners` to finish
38   // https://github.com/troupe/gitter-webapp/issues/580#issuecomment-147445395
39   // https://gitlab.com/gitterHQ/webapp/merge_requests/1605#note_222861592
40   .then(() => {
41     console.log(`Waiting 5 seconds to allow for the asynchronous \`event-listeners\` to finish...`);
42     return new Promise(resolve => setTimeout(resolve, 5000));
43   })
44   .catch(function(err) {
45     console.error(err.stack);
46   })
47   .finally(function() {
48     shutdown.shutdownGracefully();
49   });