From 09ee71906c4c53b62d4a2d21845180eb36afa2e0 Mon Sep 17 00:00:00 2001 From: Gal Schlezinger Date: Mon, 18 Feb 2019 11:50:46 +0200 Subject: [PATCH] Use exit code 1 on errors on `fnm use`. Fixes #43 (#45) --- executable/Use.re | 21 +++++++++++++++++---- library/Dotfiles.re | 5 ++--- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/executable/Use.re b/executable/Use.re index 8ca35af..a24d211 100644 --- a/executable/Use.re +++ b/executable/Use.re @@ -69,14 +69,27 @@ let run = (~version, ~quiet) => "The following version is not installed: " version , - ) - |> Lwt.return + ); + exit(1); + | Dotfiles.Conflicting_Dotfiles_Found(v1, v2) => + log( + ~quiet, + + "Can't infer version from dotfiles: .node-version and .nvmrc have differing version strings:\n" + " * " + v1 + "\n" + " * " + v2 + , + ); + exit(1); | Dotfiles.Version_Not_Provided => log( ~quiet, "No .nvmrc or .node-version file was found in the current directory. Please provide a version number." , - ) - |> Lwt.return + ); + exit(1); }; diff --git a/library/Dotfiles.re b/library/Dotfiles.re index f0e357c..a8cc421 100644 --- a/library/Dotfiles.re +++ b/library/Dotfiles.re @@ -1,4 +1,5 @@ exception Version_Not_Provided; +exception Conflicting_Dotfiles_Found(string, string); let versionString = fileName => { try%lwt ( @@ -20,9 +21,7 @@ let getVersion = () => { switch (nodeVersion, nvmrc) { | (None, None) => Lwt.fail(Version_Not_Provided) | (Some(v1), Some(v2)) when v1 != v2 => - Lwt.fail_with( - "You have both .node-version and .nvmrc with differing version strings!", - ) + Lwt.fail(Conflicting_Dotfiles_Found(v1, v2)) | (Some(version), Some(_)) | (Some(version), None) | (None, Some(version)) => Lwt.return(version)