From 0a24f0dcd1c7fed7e6efe5986d03bd6467a9f04d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dario=20Vladovi=C4=87?= Date: Mon, 11 May 2020 16:58:12 +0200 Subject: [PATCH] Add `current` command to retrieve the current Node version (#220) --- README.md | 4 ++++ executable/Current.re | 11 +++++++++++ executable/FnmApp.re | 21 +++++++++++++++++++++ feature_tests/current/run.sh | 35 +++++++++++++++++++++++++++++++++++ 4 files changed, 71 insertions(+) create mode 100644 executable/Current.re create mode 100755 feature_tests/current/run.sh diff --git a/README.md b/README.md index e308d96..d54186c 100644 --- a/README.md +++ b/README.md @@ -88,6 +88,10 @@ Installs `[VERSION]`. If no version provided, it will install the version specif Activates `[VERSION]` as the current Node version. If no version provided, it will activate the version specified in the `.nvmrc` or `.node-version` file located in the current working directory. +### `fnm current` + +Display currenty activated Node version. + ### `fnm ls` Lists the installed Node versions. diff --git a/executable/Current.re b/executable/Current.re new file mode 100644 index 0000000..dcac705 --- /dev/null +++ b/executable/Current.re @@ -0,0 +1,11 @@ +open Fnm; + +let run = () => { + let%lwt currentVersion = Versions.getCurrentVersion(); + switch (currentVersion) { + | Some({name}) => Console.log(name) + | _ => Console.log("none") + }; + + Lwt.return_ok(); +}; diff --git a/executable/FnmApp.re b/executable/FnmApp.re index dc47710..5f64b29 100644 --- a/executable/FnmApp.re +++ b/executable/FnmApp.re @@ -14,6 +14,7 @@ module Commands = { let exec = (version, useFileVersion, cmd) => Exec.run(~cmd=Array.of_list(cmd), ~version, ~useFileVersion) |> runCmd; let use = (version, quiet) => Use.run(~version, ~quiet) |> runCmd; + let current = () => Current.run() |> runCmd; let alias = (version, name) => Alias.run(~name, ~version) |> runCmd; let default = version => Alias.run(~name="default", ~version) |> runCmd; let listRemote = version => ListRemote.run(~version) |> runCmd; @@ -200,6 +201,25 @@ let use = { ); }; +let current = { + let doc = "Display currently activated version"; + let sdocs = Manpage.s_common_options; + let man = help_secs; + + ( + Term.(app(const(Commands.current), const())), + Term.info( + "current", + ~envs, + ~version, + ~doc, + ~exits=Term.default_exits, + ~man, + ~sdocs, + ), + ); +}; + let alias = { let doc = "Alias a version"; let sdocs = Manpage.s_common_options; @@ -417,6 +437,7 @@ let _ = [ install, uninstall, + current, use, alias, default, diff --git a/feature_tests/current/run.sh b/feature_tests/current/run.sh new file mode 100755 index 0000000..d94722c --- /dev/null +++ b/feature_tests/current/run.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +set -e + +PATH="$(pwd)":$PATH # simulating a custom `node` + +eval "$(fnm env)" + +if [ "$(fnm current)" != "none" ]; then + echo "Expected currently activated version is not none!" + exit 1 +fi + +fnm install v8.11.3 +fnm install v10.10.0 +fnm use v8.11.3 + +if [ "$(fnm current)" != "v8.11.3" ]; then + echo "Expected currently activated version is not v8.11.3!" + exit 1 +fi + +fnm use v10.10.0 + +if [ "$(fnm current)" != "v10.10.0" ]; then + echo "Expected currently activated version is not v10.10.0!" + exit 1 +fi + +fnm use system + +if [ "$(fnm current)" != "system" ]; then + echo "Expected currently activated version is not system!" + exit 1 +fi