From fc85fee968731dec8e1899eef2de56c6fddf31ed Mon Sep 17 00:00:00 2001 From: Gal Schlezinger Date: Tue, 29 Jan 2019 18:02:39 +0200 Subject: [PATCH] Fixes #11: Don't throw in nonexistent directory on `fnm ls` + run `esy fmt` on codebase --- executable/Env.re | 2 +- executable/FnmApp.re | 6 ++---- executable/ListLocal.re | 15 +++++++++++++-- .../list_local_with_nothing_installed/run.sh | 6 ++++++ library/Http.re | 2 +- library/Result.re | 6 ++++++ library/Versions.re | 2 +- test/SmokeTest.re | 2 +- test/TestFnm.re | 2 +- 9 files changed, 32 insertions(+), 11 deletions(-) create mode 100644 feature_tests/list_local_with_nothing_installed/run.sh diff --git a/executable/Env.re b/executable/Env.re index 571ec0cec..aed572821 100644 --- a/executable/Env.re +++ b/executable/Env.re @@ -9,7 +9,7 @@ let run = isFishShell => { Console.log( Printf.sprintf("export PATH=%s/bin:$PATH", Directories.currentVersion), ); - } + }; Lwt.return(); }; diff --git a/executable/FnmApp.re b/executable/FnmApp.re index 2e3965d9a..53920c44d 100644 --- a/executable/FnmApp.re +++ b/executable/FnmApp.re @@ -91,9 +91,7 @@ let env = { let isFishShell = { let doc = "Output an env configuration for fish shell."; - Arg.( - value & flag & info(["fish"], ~doc) - ); + Arg.(value & flag & info(["fish"], ~doc)); }; ( @@ -122,4 +120,4 @@ let defaultCmd = { let _ = Term.eval_choice(defaultCmd, [install, use, listLocal, listRemote, env]) - |> Term.exit; \ No newline at end of file + |> Term.exit; diff --git a/executable/ListLocal.re b/executable/ListLocal.re index 5647cd96b..2e777707a 100644 --- a/executable/ListLocal.re +++ b/executable/ListLocal.re @@ -1,9 +1,14 @@ open Fnm; -let run = () => +exception Cant_read_local_versions; + +let main = () => Versions.Local.( { - let%lwt versions = Versions.getInstalledVersions() |> Result.toLwt; + let%lwt versions = + Versions.getInstalledVersions() + |> Result.mapError(_ => Cant_read_local_versions) + |> Result.toLwtErr; let currentVersion = Versions.getCurrentVersion(); Console.log("The following versions are installed:"); @@ -22,3 +27,9 @@ let run = () => Lwt.return(); } ); + +let run = () => + try%lwt (main()) { + | Cant_read_local_versions => + Console.log("No versions installed!") |> Lwt.return + }; diff --git a/feature_tests/list_local_with_nothing_installed/run.sh b/feature_tests/list_local_with_nothing_installed/run.sh new file mode 100644 index 000000000..dcd9deb0b --- /dev/null +++ b/feature_tests/list_local_with_nothing_installed/run.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +set -e + +eval $(fnm env) +fnm ls diff --git a/library/Http.re b/library/Http.re index bba03dbe1..8fb47ee1b 100644 --- a/library/Http.re +++ b/library/Http.re @@ -50,4 +50,4 @@ let download = (url, ~into) => { ~args=[|url, "-D", "-", "--silent", "-o", into|], ); response |> parseResponse |> verifyStatus; -}; \ No newline at end of file +}; diff --git a/library/Result.re b/library/Result.re index 3df533f56..57e73e6fb 100644 --- a/library/Result.re +++ b/library/Result.re @@ -41,3 +41,9 @@ let toLwt = res => | Error(x) => Lwt.fail_with(x) | Ok(x) => Lwt.return(x) }; + +let toLwtErr = res => + switch (res) { + | Error(x) => Lwt.fail(x) + | Ok(x) => Lwt.return(x) + }; diff --git a/library/Versions.re b/library/Versions.re index 2954f32ad..8591cc659 100644 --- a/library/Versions.re +++ b/library/Versions.re @@ -144,4 +144,4 @@ let getRemoteVersions = () => { } ) |> Lwt.return; -}; \ No newline at end of file +}; diff --git a/test/SmokeTest.re b/test/SmokeTest.re index cbb57fd06..8b1116481 100644 --- a/test/SmokeTest.re +++ b/test/SmokeTest.re @@ -14,4 +14,4 @@ describe("Smoke test", ({test}) => { let env = run([|"env"|]) |> redactSfwRoot; expect.string(env).toMatchSnapshot(); }); -}); \ No newline at end of file +}); diff --git a/test/TestFnm.re b/test/TestFnm.re index 9c5860749..089cbced0 100644 --- a/test/TestFnm.re +++ b/test/TestFnm.re @@ -1,3 +1,3 @@ include SmokeTest; -TestFramework.cli(); \ No newline at end of file +TestFramework.cli();