@@ -19,7 +19,7 @@ import { expandPath, isWindows, mkdirp } from "./utils/fileUtils";
1919import { uniqBy } from "./utils/fn" ;
2020import { logger } from "./utils/logger" ;
2121import { resolveMisePath } from "./utils/miseBinLocator" ;
22- import { type MiseConfig , parseMiseConfig } from "./utils/miseDoctorParser" ;
22+ import { expandConfig } from "./utils/miseDoctorParser" ;
2323import {
2424 flattenJsonSchema ,
2525 idiomaticFileToTool ,
@@ -678,17 +678,39 @@ export class MiseService {
678678 ) . flat ( ) ;
679679 }
680680
681+ async miseVersion ( ) {
682+ const { stdout } = await this . cache . execCmd ( {
683+ command : "version --json" ,
684+ } ) ;
685+
686+ const version = JSON . parse ( stdout ) as MiseVersion ;
687+ // "version": "2025.3.2 windows-x64 (2025-03-07)",
688+ const current = version . version . split ( " " ) [ 0 ] ?? "" ;
689+ return {
690+ raw : version ,
691+ latest : version . latest ,
692+ current : current ,
693+ newVersionAvailable : version . latest !== current ,
694+ } ;
695+ }
696+
681697 async getMiseConfiguration ( ) : Promise < MiseConfig > {
682- const miseCmd = this . createMiseCommand ( "doctor" , {
698+ const miseCmd = this . createMiseCommand ( "doctor --json " , {
683699 setMiseEnv : false ,
684700 } ) ;
685701
686- const { stdout, stderr } = await execAsyncMergeOutput ( miseCmd ?? "" ) ;
702+ const { stdout, stderr } = await execAsyncMergeOutput ( miseCmd ?? "{} " ) ;
687703 if ( stderr ) {
688704 logger . debug ( miseCmd , stderr ) ;
689705 }
690706
691- return parseMiseConfig ( stdout ) ;
707+ try {
708+ const miseConfig = JSON . parse ( stdout ) as MiseConfig ;
709+ return expandConfig ( miseConfig ) ;
710+ } catch ( error ) {
711+ logger . error ( `Error parsing mise configuration: ${ stdout } ` , error ) ;
712+ return { } as MiseConfig ;
713+ }
692714 }
693715
694716 async miseDoctor ( ) {
@@ -855,15 +877,13 @@ export class MiseService {
855877 return ;
856878 }
857879
858- const miseConfig = await this . getMiseConfiguration ( ) ;
859- const newMiseVersionAvailable =
860- miseConfig . problems ?. newMiseVersionAvailable ;
861- if ( newMiseVersionAvailable ) {
880+ const miseVersion = await this . miseVersion ( ) ;
881+ if ( miseVersion . newVersionAvailable ) {
862882 const ignoreVersion = this . context . globalState . get < string > (
863883 "mise.ignoreNewVersion" ,
864884 ) ;
865885
866- if ( ignoreVersion === newMiseVersionAvailable . latestVersion ) {
886+ if ( ignoreVersion === miseVersion . latest ) {
867887 return ;
868888 }
869889
@@ -875,7 +895,7 @@ export class MiseService {
875895 }
876896
877897 const suggestion = await vscode . window . showInformationMessage (
878- `New Mise version available ${ newMiseVersionAvailable ?. latestVersion } . (Current: ${ newMiseVersionAvailable ?. currentVersion } )` ,
898+ `New Mise version available ${ miseVersion . latest } . (Current: ${ miseVersion . current } )` ,
879899 canSelfUpdate ? "Update Mise" : "How to update Mise" ,
880900 "Show changelog" ,
881901 "Ignore this update" ,
@@ -903,7 +923,7 @@ export class MiseService {
903923 if ( suggestion === "Ignore this update" ) {
904924 this . context . globalState . update (
905925 "mise.ignoreNewVersion" ,
906- newMiseVersionAvailable . latestVersion ,
926+ miseVersion . latest ,
907927 ) ;
908928 }
909929 }
0 commit comments