Skip to content

Commit 8c7b894

Browse files
committed
refactor(cli): Multiple account login refactoring
1 parent ea494b7 commit 8c7b894

File tree

2 files changed

+23
-65
lines changed

2 files changed

+23
-65
lines changed

templates/cli/lib/commands/generic.js.twig

Lines changed: 5 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -140,31 +140,6 @@ const login = new Command("login")
140140
})
141141
.action(actionRunner(loginCommand));
142142

143-
login
144-
.command('list')
145-
.description("List available logged accounts.")
146-
.option("-j, --json", "Output in JSON format")
147-
.action(actionRunner(async ({ json }) => {
148-
const logins = globalConfig.getLogins();
149-
const current = globalConfig.getCurrentLogin();
150-
151-
const data = [...logins.map((login => {
152-
return {
153-
'Current': login.id === current ? '*' : '',
154-
'ID': login.id,
155-
'Email': login.email,
156-
'Endpoint': login.endpoint
157-
};
158-
}))];
159-
160-
if (json) {
161-
console.log(data);
162-
return;
163-
}
164-
drawTable(data);
165-
166-
}));
167-
168143
const singleLogout = async (accountId) => {
169144
try {
170145
let client = await sdkForConsole();
@@ -202,19 +177,12 @@ const logout = new Command("logout")
202177
}
203178

204179
const answers = await inquirer.prompt(questionsLogout);
205-
const accountIds = [];
206-
207-
if (answers.method === 'all') {
208-
accountIds.push(...logins.map(login => login.id));
209-
}
210-
211-
if (answers.method === 'selected' && answers.accounts) {
212-
accountIds.push(...answers.accounts);
213-
}
214180

215-
for (let accountId of accountIds) {
216-
globalConfig.setCurrentLogin(accountId);
217-
await singleLogout(accountId);
181+
if (answers.accounts) {
182+
for (let accountId of answers.accounts) {
183+
globalConfig.setCurrentLogin(accountId);
184+
await singleLogout(accountId);
185+
}
218186
}
219187

220188
const leftLogins = globalConfig.getLogins();

templates/cli/lib/questions.js.twig

Lines changed: 18 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -326,60 +326,50 @@ const questionsLogin = [
326326

327327
const data = [];
328328

329-
const longestEmail = logins.reduce((prev, current) => (prev && prev.email > current.email) ? prev : current).email.length;
329+
const longestEmail = logins.reduce((prev, current) => (prev && (prev.email ?? '').length > (current.email ?? '').length) ? prev : current).email.length;
330330

331331
logins.forEach((login) => {
332-
data.push({
333-
value: login.id,
334-
name: `${login.email.padEnd(longestEmail)} ${current === login.id ? chalk.green.bold('In use') : ' '.repeat(6)} ${login.endpoint}`,
335-
});
332+
if (login.email) {
333+
data.push({
334+
current: current === login.id,
335+
value: login.id,
336+
name: `${login.email.padEnd(longestEmail)} ${current === login.id ? chalk.green.bold('current') : ' '.repeat(6)} ${login.endpoint}`,
337+
});
338+
}
336339
})
337340

338-
return data;
341+
return data.sort((a, b) => Number(b.current) - Number(a.current))
339342
},
340343
when: (answers) => answers.method === 'select'
341344
},
342345

343346
];
344347

345348
const questionsLogout = [
346-
{
347-
type: "list",
348-
name: "method",
349-
message: "Which account would you like to logout from?",
350-
choices() {
351-
const logins = globalConfig.getLogins();
352-
353-
return [
354-
{ name: 'Account in use' },
355-
{ name: 'Selected accounts', value: 'selected' },
356-
{ name: 'All accounts', value: 'all' }
357-
];
358-
},
359-
when: () => globalConfig.getCurrentLogin() !== ''
360-
},
361349
{
362350
type: "checkbox",
363351
name: "accounts",
364352
message: "Select accounts to logout from",
365-
when: (answers) => answers.method === 'selected',
366353
validate: (value) => validateRequired('account', value),
367354
choices() {
368355
const logins = globalConfig.getLogins();
369356
const current = globalConfig.getCurrentLogin();
370357

371358
const data = [];
372359

373-
const longestEmail = logins.reduce((prev, current) => (prev && prev.email > current.email) ? prev : current).email.length;
360+
const longestEmail = logins.reduce((prev, current) => (prev && (prev.email ?? '').length > (current.email ?? '').length) ? prev : current).email.length;
374361

375362
logins.forEach((login) => {
376-
data.push({
377-
value: login.id,
378-
name: `${login.email.padEnd(longestEmail)} ${current === login.id ? chalk.green.bold('In use') : ' '.repeat(6)} ${login.endpoint}`,
379-
});
363+
if (login.email) {
364+
data.push({
365+
current: current === login.id,
366+
value: login.id,
367+
name: `${login.email.padEnd(longestEmail)} ${current === login.id ? chalk.green.bold('current') : ' '.repeat(6)} ${login.endpoint}`,
368+
});
369+
}
380370
})
381371

382-
return data;
372+
return data.sort((a, b) => Number(b.current) - Number(a.current))
383373
}
384374
}
385375
];

0 commit comments

Comments
 (0)