| 18 | } |
| 19 | |
| 20 | async function login(): Promise<string> { |
| 21 | const spinner = ora(`To login visit: ${APP_URL}/cli-login`).start() |
| 22 | await open(`${APP_URL}/cli-login`) |
| 23 | let server: http.Server | undefined |
| 24 | const token = await new Promise<string>((resolve, reject) => { |
| 25 | server = http |
| 26 | .createServer((req, res) => { |
| 27 | const urlObj = new URL(req.url as string, 'http://localhost') |
| 28 | const token = urlObj.searchParams.get('token') ?? undefined |
| 29 | |
| 30 | if (token) { |
| 31 | resolve(token) |
| 32 | res.writeHead(302, { |
| 33 | Location: `${APP_URL}/cli-login?success=true`, |
| 34 | }) |
| 35 | res.end() |
| 36 | } else { |
| 37 | res.writeHead(302, { |
| 38 | Location: `${APP_URL}/cli-login?success=false`, |
| 39 | }) |
| 40 | reject('Login failed.') |
| 41 | } |
| 42 | }) |
| 43 | .listen(5479) |
| 44 | }) |
| 45 | server?.close() |
| 46 | spinner.stop() |
| 47 | return token |
| 48 | } |
| 49 | |
| 50 | async function createTeam(token: string) { |
| 51 | const res = await prompts({ |