open Fnm; let run = (~version as maybeVersionName) => { Console.log("Looking for some node versions upstream..."); let%lwt versions = Versions.getRemoteVersions() and currentVersion = Versions.getCurrentVersion(); let versions = switch (maybeVersionName) { | None => versions | Some(versionName) => let formattedVersionName = Versions.format(versionName); versions |> Versions.( List.filter(v => isVersionFitsPrefix(formattedVersionName, Remote.(v.name)) || v.name == formattedVersionName ) ); }; switch (versions) { | [] => Console.log( "No versions found that match your criterias." , ); Lwt.return_error(1); | _ => versions |> List.iter(version => { open Versions.Remote; let str = "* " ++ version.name; let color = switch (currentVersion, version.installed) { | (Some({name: currentVersionName, _}), _) when currentVersionName == version.name => Some(Pastel.Cyan) | (_, true) => Some(Pastel.Green) | (_, false) => None }; (); Console.log( str ); }); Lwt.return_ok(); }; };