open Fnm; open Lwt.Infix; let run = (~version) => { let%lwt installedVersions = Versions.getInstalledVersions(); let formattedVersionName = Versions.format(version); let matchingLocalVersions = installedVersions |> Versions.( List.filter(v => isVersionFitsPrefix(formattedVersionName, Local.(v.name)) || v.name == formattedVersionName ) ); switch (matchingLocalVersions) { | [] => Logger.error( "The version " version " is not installed." , ); Lwt.return_error(1); | [installedVersion] => Logger.debug( "Uninstalling node " Versions.Local.(installedVersion.name) , ); let%lwt _ = Versions.Local.remove(installedVersion); Logger.info( "Node version " Versions.Local.(installedVersion.name) " has correctly been removed." , ); Lwt.return_ok(); | _ => Logger.info( "There are multiple versions matching your criterias:" , ); matchingLocalVersions |> List.iter(matchingVersion => Logger.info( Versions.Local.(matchingVersion.name) , ) ); Logger.info( "\nPlease run the command again with the correct version." , ); Lwt.return_error(1); }; };