@@ -37,9 +37,9 @@ import { registerOpenTerminalCommand } from './dev-terminal';
37
37
import { commandManager } from './command' ;
38
38
import { registerOpenConsoleCommand } from './crc-console' ;
39
39
import { registerLogInCommands } from './login-commands' ;
40
- import { defaultLogger } from './logger' ;
41
40
import { pushImageToCrcCluster } from './image-handler' ;
42
41
import type { Preset } from './types' ;
42
+ import { needSetup , setUpCrc } from './crc-setup' ;
43
43
44
44
const CRC_PUSH_IMAGE_TO_CLUSTER = 'crc.image.push.to.cluster' ;
45
45
const CRC_PRESET_KEY = 'crc.crcPreset' ;
@@ -220,9 +220,7 @@ function registerProviderConnectionFactory(
220
220
) : void {
221
221
connectionFactoryDisposable = provider . setKubernetesProviderConnectionFactory (
222
222
{
223
- initialize : async ( ) => {
224
- await createCrcVm ( provider , extensionContext , telemetryLogger , defaultLogger ) ;
225
- } ,
223
+ initialize : ( ) => initializeCrc ( provider , extensionContext , telemetryLogger ) ,
226
224
create : async ( params , logger ) => {
227
225
await presetChanged ( provider , extensionContext , telemetryLogger ) ;
228
226
await saveConfig ( params ) ;
@@ -254,20 +252,42 @@ async function createCrcVm(
254
252
const hasStarted = await startCrc ( provider , getLoggerCallback ( undefined , logger ) , telemetryLogger ) ;
255
253
if ( ! connectionDisposable && hasStarted ) {
256
254
addCommands ( telemetryLogger ) ;
257
- presetChanged ( provider , extensionContext , telemetryLogger ) ;
255
+ await presetChanged ( provider , extensionContext , telemetryLogger ) ;
256
+ }
257
+ }
258
+
259
+ async function initializeCrc (
260
+ provider : extensionApi . Provider ,
261
+ extensionContext : extensionApi . ExtensionContext ,
262
+ telemetryLogger : extensionApi . TelemetryLogger ,
263
+ ) : Promise < void > {
264
+ const hasSetupFinished = await setUpCrc ( true ) ;
265
+ if ( ! hasSetupFinished ) {
266
+ throw new Error ( `Failed at initializing ${ productName } ` ) ;
258
267
}
268
+
269
+ await needSetup ( ) ;
270
+ await connectToCrc ( ) ;
271
+ await presetChanged ( provider , extensionContext , telemetryLogger ) ;
272
+ addCommands ( telemetryLogger ) ;
273
+ await syncPreferences ( provider , extensionContext , telemetryLogger ) ;
274
+ return presetChanged ( provider , extensionContext , telemetryLogger ) ;
259
275
}
260
276
261
277
function addCommands ( telemetryLogger : extensionApi . TelemetryLogger ) : void {
262
- registerOpenTerminalCommand ( ) ;
263
- registerOpenConsoleCommand ( ) ;
264
- registerLogInCommands ( ) ;
265
- registerDeleteCommand ( ) ;
266
-
267
- commandManager . addCommand ( CRC_PUSH_IMAGE_TO_CLUSTER , image => {
268
- telemetryLogger . logUsage ( 'pushImage' ) ;
269
- pushImageToCrcCluster ( image ) ;
270
- } ) ;
278
+ try {
279
+ registerOpenTerminalCommand ( ) ;
280
+ registerOpenConsoleCommand ( ) ;
281
+ registerLogInCommands ( ) ;
282
+ registerDeleteCommand ( ) ;
283
+
284
+ commandManager . addCommand ( CRC_PUSH_IMAGE_TO_CLUSTER , image => {
285
+ telemetryLogger . logUsage ( 'pushImage' ) ;
286
+ pushImageToCrcCluster ( image ) ;
287
+ } ) ;
288
+ } catch ( e ) {
289
+ // do nothing
290
+ }
271
291
}
272
292
273
293
function deleteCommands ( ) : void {
@@ -406,6 +426,6 @@ async function presetChanged(
406
426
// podman connection
407
427
registerPodmanConnection ( provider , extensionContext ) ;
408
428
} else if ( preset === 'openshift' || preset === 'microshift' ) {
409
- registerOpenShiftLocalCluster ( getPresetLabel ( preset ) , provider , extensionContext , telemetryLogger ) ;
429
+ await registerOpenShiftLocalCluster ( getPresetLabel ( preset ) , provider , extensionContext , telemetryLogger ) ;
410
430
}
411
431
}
0 commit comments