mirror of
https://github.com/morten-olsen/mini-loader.git
synced 2026-02-08 01:36:26 +01:00
49 lines
1.2 KiB
TypeScript
49 lines
1.2 KiB
TypeScript
import { Command } from 'commander';
|
|
import inquerer from 'inquirer';
|
|
import { Context } from '../../context/context.js';
|
|
import { step } from '../../utils/step.js';
|
|
import { Config } from '../../config/config.js';
|
|
|
|
const login = new Command('login');
|
|
|
|
login.description('Login to your account');
|
|
login.action(async () => {
|
|
const config = new Config();
|
|
const context = new Context(config.context);
|
|
const { host, token } = await inquerer.prompt([
|
|
{
|
|
type: 'input',
|
|
name: 'host',
|
|
message: 'Enter the host of your server',
|
|
default: context.host ?? 'http://localhost:4500',
|
|
},
|
|
{
|
|
type: 'password',
|
|
name: 'token',
|
|
message: 'Enter your token',
|
|
},
|
|
]);
|
|
|
|
const healthResponse = await step('Getting auth status', async () => {
|
|
return await fetch(`${host}/health`, {
|
|
headers: {
|
|
authorization: `Bearer ${token}`,
|
|
},
|
|
});
|
|
});
|
|
|
|
if (!healthResponse.ok) {
|
|
throw new Error('Invalid token');
|
|
}
|
|
const health = await healthResponse.json();
|
|
if (!health.authorized) {
|
|
throw new Error('Invalid token');
|
|
}
|
|
|
|
await step('Saving login', async () => {
|
|
await context.saveLogin(host, token);
|
|
});
|
|
});
|
|
|
|
export { login };
|