@@ -8,7 +8,7 @@ import open from "open";
8
8
import { HttpError , isHttpError } from "./error.js" ;
9
9
import type { Logger } from "./logger.js" ;
10
10
import { ObservableApiClient , getObservableUiHost } from "./observableApiClient.js" ;
11
- import { getObservableApiKey , setObservableApiKey } from "./observableApiConfig.js" ;
11
+ import { type ApiKey , getObservableApiKey , setObservableApiKey } from "./observableApiConfig.js" ;
12
12
13
13
const OBSERVABLEHQ_UI_HOST = getObservableUiHost ( ) ;
14
14
@@ -22,7 +22,7 @@ export interface CommandEffects {
22
22
logger : Logger ;
23
23
isatty : ( fd : number ) => boolean ;
24
24
waitForEnter : ( ) => Promise < void > ;
25
- getObservableApiKey : ( ) => Promise < string | null > ;
25
+ getObservableApiKey : ( logger : Logger ) => Promise < ApiKey > ;
26
26
setObservableApiKey : ( id : string , key : string ) => Promise < void > ;
27
27
exitSuccess : ( ) => void ;
28
28
}
@@ -67,33 +67,36 @@ export async function login(effects = defaultEffects) {
67
67
}
68
68
69
69
export async function whoami ( effects = defaultEffects ) {
70
- const apiKey = await effects . getObservableApiKey ( ) ;
71
70
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
+ } ) ;
77
76
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" ) {
90
93
logger . log ( "Your API key is invalid. Run `observable login` to log in again." ) ;
91
94
} else {
92
- throw error ;
95
+ logger . log ( "Your API key is invalid." ) ;
93
96
}
97
+ } else {
98
+ throw error ;
94
99
}
95
- } else {
96
- logger . log ( commandRequiresAuthenticationMessage ) ;
97
100
}
98
101
}
99
102
0 commit comments