@@ -37,9 +37,9 @@ import { registerOpenTerminalCommand } from './dev-terminal.js';
3737import { commandManager } from './command.js' ;
3838import { registerOpenConsoleCommand } from './crc-console.js' ;
3939import { registerLogInCommands } from './login-commands.js' ;
40- import { defaultLogger } from './logger.js' ;
4140import { pushImageToCrcCluster } from './image-handler.js' ;
4241import type { Preset } from './types.js' ;
42+ import { needSetup , setUpCrc } from './crc-setup.js' ;
4343
4444const CRC_PUSH_IMAGE_TO_CLUSTER = 'crc.image.push.to.cluster' ;
4545const CRC_PRESET_KEY = 'crc.crcPreset' ;
@@ -220,9 +220,7 @@ function registerProviderConnectionFactory(
220220) : void {
221221 connectionFactoryDisposable = provider . setKubernetesProviderConnectionFactory (
222222 {
223- initialize : async ( ) => {
224- await createCrcVm ( provider , extensionContext , telemetryLogger , defaultLogger ) ;
225- } ,
223+ initialize : ( ) => initializeCrc ( provider , extensionContext , telemetryLogger ) ,
226224 create : async ( params , logger ) => {
227225 await presetChanged ( provider , extensionContext , telemetryLogger ) ;
228226 await saveConfig ( params ) ;
@@ -258,16 +256,38 @@ async function createCrcVm(
258256 }
259257}
260258
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 } ` ) ;
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 ) ;
275+ }
276+
261277function 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- return 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+ }
271291}
272292
273293function deleteCommands ( ) : void {
@@ -335,7 +355,7 @@ function registerOpenShiftLocalCluster(
335355 } catch ( e ) {
336356 logger . error ( e ) ;
337357 throw e ;
338- }
358+ }
339359 } ,
340360 stop : ( ) => {
341361 provider . updateStatus ( 'stopping' ) ;
@@ -406,6 +426,6 @@ async function presetChanged(
406426 // podman connection
407427 registerPodmanConnection ( provider , extensionContext ) ;
408428 } else if ( preset === 'openshift' || preset === 'microshift' ) {
409- registerOpenShiftLocalCluster ( getPresetLabel ( preset ) , provider , extensionContext , telemetryLogger ) ;
429+ await registerOpenShiftLocalCluster ( getPresetLabel ( preset ) , provider , extensionContext , telemetryLogger ) ;
410430 }
411431}
0 commit comments