@@ -8,7 +8,7 @@ import open from "open";
88import { HttpError , isHttpError } from "./error.js" ;
99import type { Logger } from "./logger.js" ;
1010import { ObservableApiClient , getObservableUiHost } from "./observableApiClient.js" ;
11- import { getObservableApiKey , setObservableApiKey } from "./observableApiConfig.js" ;
11+ import { type ApiKey , getObservableApiKey , setObservableApiKey } from "./observableApiConfig.js" ;
1212
1313const OBSERVABLEHQ_UI_HOST = getObservableUiHost ( ) ;
1414
@@ -22,7 +22,7 @@ export interface CommandEffects {
2222 logger : Logger ;
2323 isatty : ( fd : number ) => boolean ;
2424 waitForEnter : ( ) => Promise < void > ;
25- getObservableApiKey : ( ) => Promise < string | null > ;
25+ getObservableApiKey : ( logger : Logger ) => Promise < ApiKey > ;
2626 setObservableApiKey : ( id : string , key : string ) => Promise < void > ;
2727 exitSuccess : ( ) => void ;
2828}
@@ -67,33 +67,36 @@ export async function login(effects = defaultEffects) {
6767}
6868
6969export async function whoami ( effects = defaultEffects ) {
70- const apiKey = await effects . getObservableApiKey ( ) ;
7170 const { logger} = effects ;
72- if ( apiKey ) {
73- const apiClient = new ObservableApiClient ( {
74- apiKey,
75- logger
76- } ) ;
71+ const apiKey = await effects . getObservableApiKey ( logger ) ;
72+ const apiClient = new ObservableApiClient ( {
73+ apiKey,
74+ logger
75+ } ) ;
7776
78- try {
79- const user = await apiClient . getCurrentUser ( ) ;
80- logger . log ( ) ;
81- logger . log ( `You are logged into ${ OBSERVABLEHQ_UI_HOST . hostname } as ${ formatUser ( user ) } .` ) ;
82- logger . log ( ) ;
83- logger . log ( "You have access to the following workspaces:" ) ;
84- for ( const workspace of user . workspaces ) {
85- logger . log ( ` * ${ formatUser ( workspace ) } ` ) ;
86- }
87- logger . log ( ) ;
88- } catch ( error ) {
89- if ( isHttpError ( error ) && error . statusCode == 401 ) {
77+ try {
78+ const user = await apiClient . getCurrentUser ( ) ;
79+ logger . log ( ) ;
80+ logger . log ( `You are logged into ${ OBSERVABLEHQ_UI_HOST . hostname } as ${ formatUser ( user ) } .` ) ;
81+ logger . log ( ) ;
82+ logger . log ( "You have access to the following workspaces:" ) ;
83+ for ( const workspace of user . workspaces ) {
84+ logger . log ( ` * ${ formatUser ( workspace ) } ` ) ;
85+ }
86+ logger . log ( ) ;
87+ } catch ( error ) {
88+ console . log ( error ) ;
89+ if ( isHttpError ( error ) && error . statusCode == 401 ) {
90+ if ( apiKey . source === "env" ) {
91+ logger . log ( `Your API key is invalid. Check the value of the ${ apiKey . envVar } environment variable.` ) ;
92+ } else if ( apiKey . source === "file" ) {
9093 logger . log ( "Your API key is invalid. Run `observable login` to log in again." ) ;
9194 } else {
92- throw error ;
95+ logger . log ( "Your API key is invalid." ) ;
9396 }
97+ } else {
98+ throw error ;
9499 }
95- } else {
96- logger . log ( commandRequiresAuthenticationMessage ) ;
97100 }
98101}
99102
0 commit comments