@amplitude/ampli
Version:
Amplitude CLI
81 lines (80 loc) • 2.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const chalk_1 = require("chalk");
const inquirer = require("inquirer");
const open = require("open");
const base_1 = require("./base");
const server_1 = require("../auth/server");
const auth_1 = require("../auth");
const ampli_1 = require("../ampli");
const UserInfo_1 = require("../components/UserInfo");
const constants_1 = require("../constants");
const types_1 = require("../types");
const string_1 = require("../util/string");
const { bold, green } = chalk_1.default;
class LoginAction extends base_1.default {
async run(loginPrompt = true) {
if (loginPrompt) {
const { login } = await inquirer.prompt([{
name: 'login',
message: `You are not logged in. Would you like to log in?`,
type: 'confirm',
default: true,
}]);
if (!login) {
return null;
}
}
let zone;
if (this.flags.zone) {
zone = this.flags.zone;
}
else {
const { zone: selectedZone } = await inquirer.prompt([{
name: 'zone',
message: `Select a zone`,
type: 'autocomplete',
source: (_, input) => types_1.ALL_ZONES.filter(z => string_1.matchPattern(z, input)),
default: types_1.DEFAULT_ZONE,
}]);
if (!selectedZone) {
return null;
}
zone = selectedZone;
}
this.println(`\
Welcome to ${green('Amplitude')}. To initialize ${bold('ampli')}, log into your account in the browser window that just opened.
___ ___
/ | ____ ___ ____ / (_)
/ /| | / __ \`__ \\/ __ \\/ / /
/ ___ |/ / / / / / /_/ / / /
/_/ |_/_/ /_/ /_/ .___/_/_/
/_/
`);
const serverPort = 13222;
const server = new server_1.default(serverPort, zone);
try {
const authorizationUri = auth_1.default.getAuthorizationUri(server.port, zone);
if (authorizationUri) {
await server.start();
open(authorizationUri, { wait: false });
}
this.println(`Waiting for you to log in...`);
await auth_1.default.waitForAuthorizationToComplete();
}
finally {
server.stop();
}
const user = await this.getUser(zone);
base_1.default.identifyUser(user);
ampli_1.ampli.userSignedIn(user.id, {
platform: process.platform,
version: constants_1.APP_SETTINGS.app.version,
});
const settings = this.getSettings();
auth_1.default.writeTokensToSettings({ id: user.id, zone: user.zone });
UserInfo_1.PrintUsersInfo(settings.users(), user);
return user;
}
}
exports.default = LoginAction;