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)