@amplitude/ampli
Version:
Amplitude CLI
46 lines (45 loc) • 1.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const inquirer = require("inquirer");
const chalk_1 = require("chalk");
const base_1 = require("./base");
const UserInfo_1 = require("../components/UserInfo");
const icons_1 = require("../ui/icons");
const string_1 = require("../util/string");
const { bold } = chalk_1.default;
class LogoutAction extends base_1.default {
async run() {
const settings = this.getSettings();
const users = settings.users(this.flags.zone, true);
if (this.flags.user) {
const emailUsers = users.filter(u => u.email === this.flags.user);
if (emailUsers.length > 0) {
emailUsers.forEach(user => settings.deleteUserData(user));
return emailUsers[0];
}
this.println(`${icons_1.ICON_WARNING_W_TEXT} The user ${bold(this.flags.user)} isn't logged in`);
return null;
}
if (users.length === 0) {
return null;
}
if (this.flags.all || users.length === 1) {
users.forEach(user => settings.deleteUserData(user));
return users[0];
}
const promptUsers = users.map((user, i) => ({
name: UserInfo_1.UserInfo(user),
value: i,
}));
const { userIndex: selectedUserIndex } = await inquirer.prompt([{
name: 'userIndex',
message: `Select a user to log out`,
type: 'autocomplete',
source: (_, input) => promptUsers.filter(u => string_1.matchPattern(u.name, input)),
}]);
const selectedUser = users[selectedUserIndex];
settings.deleteUserData(selectedUser);
return selectedUser;
}
}
exports.default = LogoutAction;