Browse Source

Add a 'debug' log level (#104)

* Add a 'debug' log level

* update snapshot

* Fix tests
remotes/origin/add-simple-redirecting-site
Gal Schlezinger 6 years ago committed by GitHub
parent
commit
cd0cb1aaa2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      executable/Alias.re
  2. 4
      executable/FnmApp.re
  3. 22
      executable/Install.re
  4. 22
      executable/Uninstall.re
  5. 27
      executable/Use.re
  6. 2
      feature_tests/existing_installation/run.sh
  7. 2
      library/Config.re
  8. 10
      library/LogLevel.re
  9. 17
      library/Logger.re
  10. 2
      test/__snapshots__/Smoke_test.4d362c3c.0.snapshot

2
executable/Alias.re

@ -19,7 +19,7 @@ let run = (~name, ~version) => {
exit(1); exit(1);
}; };
Logger.log( Logger.info(
<Pastel> <Pastel>
"Aliasing " "Aliasing "
<Pastel color=Pastel.Cyan> name </Pastel> <Pastel color=Pastel.Cyan> name </Pastel>

4
executable/FnmApp.re

@ -224,7 +224,9 @@ let env = {
enum([ enum([
("quiet", Fnm.LogLevel.Quiet), ("quiet", Fnm.LogLevel.Quiet),
("error", Fnm.LogLevel.Error), ("error", Fnm.LogLevel.Error),
("all", Fnm.LogLevel.All), ("info", Fnm.LogLevel.Info),
("all", Fnm.LogLevel.Debug),
("debug", Fnm.LogLevel.Debug),
]), ]),
Fnm.Config.FNM_LOGLEVEL.get(), Fnm.Config.FNM_LOGLEVEL.get(),
) )

22
executable/Install.re

@ -3,7 +3,7 @@ open Fnm;
let mkDownloadsDir = () => { let mkDownloadsDir = () => {
let exists = Lwt_unix.file_exists(Directories.downloads); let exists = Lwt_unix.file_exists(Directories.downloads);
if%lwt (exists |> Lwt.map(x => !x)) { if%lwt (exists |> Lwt.map(x => !x)) {
Logger.log( Logger.debug(
<Pastel> <Pastel>
"Creating " "Creating "
<Pastel color=Pastel.Cyan> Directories.downloads </Pastel> <Pastel color=Pastel.Cyan> Directories.downloads </Pastel>
@ -29,7 +29,7 @@ let main = (~version as versionName) => {
let versionName = Versions.format(versionName); let versionName = Versions.format(versionName);
let%lwt _ = Versions.throwIfInstalled(versionName); let%lwt _ = Versions.throwIfInstalled(versionName);
Logger.log( Logger.debug(
<Pastel> <Pastel>
"Looking for node " "Looking for node "
<Pastel color=Pastel.Cyan> versionName </Pastel> <Pastel color=Pastel.Cyan> versionName </Pastel>
@ -53,7 +53,7 @@ let main = (~version as versionName) => {
versionName ++ Versions.Remote.downloadFileSuffix, versionName ++ Versions.Remote.downloadFileSuffix,
); );
Logger.log( Logger.debug(
<Pastel> <Pastel>
"Downloading " "Downloading "
<Pastel color=Pastel.Cyan> filepath </Pastel> <Pastel color=Pastel.Cyan> filepath </Pastel>
@ -67,7 +67,7 @@ let main = (~version as versionName) => {
let extractionDestination = let extractionDestination =
Filename.concat(Directories.nodeVersions, versionName); Filename.concat(Directories.nodeVersions, versionName);
Logger.log( Logger.debug(
<Pastel> <Pastel>
"Extracting " "Extracting "
<Pastel color=Pastel.Cyan> tarDestination </Pastel> <Pastel color=Pastel.Cyan> tarDestination </Pastel>
@ -76,6 +76,14 @@ let main = (~version as versionName) => {
</Pastel>, </Pastel>,
); );
Logger.info(
<Pastel>
"Version "
<Pastel color=Pastel.Cyan> versionName </Pastel>
" was successfuly downloaded"
</Pastel>,
);
let%lwt _ = let%lwt _ =
Compression.extractFile(tarDestination, ~into=extractionDestination); Compression.extractFile(tarDestination, ~into=extractionDestination);
@ -85,7 +93,7 @@ let main = (~version as versionName) => {
let run = (~version) => let run = (~version) =>
try%lwt (main(~version)) { try%lwt (main(~version)) {
| Versions.No_Download_For_System(os, arch) => | Versions.No_Download_For_System(os, arch) =>
Logger.log( Logger.error(
<Pastel> <Pastel>
"Version exists, but can't find a file for your system:\n" "Version exists, but can't find a file for your system:\n"
" OS: " " OS: "
@ -97,7 +105,7 @@ let run = (~version) =>
); );
exit(1); exit(1);
| Versions.Already_installed(version) => | Versions.Already_installed(version) =>
Logger.log( Logger.error(
<Pastel> <Pastel>
"Version " "Version "
<Pastel color=Pastel.Cyan> version </Pastel> <Pastel color=Pastel.Cyan> version </Pastel>
@ -106,7 +114,7 @@ let run = (~version) =>
) )
|> Lwt.return |> Lwt.return
| Versions.Version_not_found(version) => | Versions.Version_not_found(version) =>
Logger.log( Logger.error(
<Pastel> <Pastel>
"Version " "Version "
<Pastel color=Pastel.Cyan> version </Pastel> <Pastel color=Pastel.Cyan> version </Pastel>

22
executable/Uninstall.re

@ -8,7 +8,7 @@ let run = (~version) => {
installedVersion => installedVersion =>
switch (installedVersion) { switch (installedVersion) {
| None => | None =>
Logger.log( Logger.error(
<Pastel> <Pastel>
"The version " "The version "
<Pastel color=Pastel.Cyan> version </Pastel> <Pastel color=Pastel.Cyan> version </Pastel>
@ -17,18 +17,16 @@ let run = (~version) => {
); );
exit(1); exit(1);
| Some(installedVersion) => | Some(installedVersion) =>
{ Logger.debug(
Logger.log( <Pastel>
<Pastel> "Uninstalling node "
"Uninstalling node " <Pastel color=Pastel.Cyan>
<Pastel color=Pastel.Cyan> Versions.Local.(installedVersion.name)
Versions.Local.(installedVersion.name) </Pastel>
</Pastel> </Pastel>,
</Pastel>, );
);
};
let%lwt _ = Versions.Local.remove(installedVersion); let%lwt _ = Versions.Local.remove(installedVersion);
Logger.log( Logger.info(
<Pastel> <Pastel>
"Node version " "Node version "
<Pastel color=Pastel.Cyan> <Pastel color=Pastel.Cyan>

27
executable/Use.re

@ -4,14 +4,25 @@ let lwtIgnore = lwt => Lwt.catch(() => lwt, _ => Lwt.return());
exception Version_Not_Installed(string); exception Version_Not_Installed(string);
let log = (~quiet, arg) => let info = (~quiet, arg) =>
if (!quiet) { if (!quiet) {
Logger.log(arg); Logger.info(arg);
};
let debug = (~quiet, arg) =>
if (!quiet) {
Logger.debug(arg);
};
let error = (~quiet, arg) =>
if (!quiet) {
Logger.error(arg);
}; };
let switchVersion = (~version, ~quiet) => { let switchVersion = (~version, ~quiet) => {
open Lwt; open Lwt;
let log = log(~quiet); let info = info(~quiet);
let debug = debug(~quiet);
let%lwt parsedVersion = let%lwt parsedVersion =
Versions.parse(version) >>= Opt.toLwt(Version_Not_Installed(version)); Versions.parse(version) >>= Opt.toLwt(Version_Not_Installed(version));
@ -31,7 +42,7 @@ let switchVersion = (~version, ~quiet) => {
let source = Directories.currentVersion; let source = Directories.currentVersion;
log( debug(
<Pastel> <Pastel>
"Linking " "Linking "
<Pastel color=Pastel.Cyan> source </Pastel> <Pastel color=Pastel.Cyan> source </Pastel>
@ -51,7 +62,7 @@ let switchVersion = (~version, ~quiet) => {
Lwt.return(); Lwt.return();
}; };
log( info(
<Pastel> <Pastel>
"Using " "Using "
<Pastel color=Pastel.Cyan> versionName </Pastel> <Pastel color=Pastel.Cyan> versionName </Pastel>
@ -93,7 +104,7 @@ let rec askIfInstall = (~version, ~quiet, retry) => {
let rec run = (~version, ~quiet) => let rec run = (~version, ~quiet) =>
try%lwt (main(~version, ~quiet)) { try%lwt (main(~version, ~quiet)) {
| Version_Not_Installed(versionString) => | Version_Not_Installed(versionString) =>
log( error(
~quiet, ~quiet,
<Pastel color=Pastel.Red> <Pastel color=Pastel.Red>
"The following version is not installed: " "The following version is not installed: "
@ -106,7 +117,7 @@ let rec run = (~version, ~quiet) =>
exit(1); exit(1);
}; };
| Dotfiles.Conflicting_Dotfiles_Found(v1, v2) => | Dotfiles.Conflicting_Dotfiles_Found(v1, v2) =>
log( error(
~quiet, ~quiet,
<Pastel color=Pastel.Red> <Pastel color=Pastel.Red>
"Can't infer version from dotfiles: .node-version and .nvmrc have differing version strings:\n" "Can't infer version from dotfiles: .node-version and .nvmrc have differing version strings:\n"
@ -119,7 +130,7 @@ let rec run = (~version, ~quiet) =>
); );
exit(1); exit(1);
| Dotfiles.Version_Not_Provided => | Dotfiles.Version_Not_Provided =>
log( error(
~quiet, ~quiet,
<Pastel color=Pastel.Red> <Pastel color=Pastel.Red>
"No .nvmrc or .node-version file was found in the current directory. Please provide a version number." "No .nvmrc or .node-version file was found in the current directory. Please provide a version number."

2
feature_tests/existing_installation/run.sh

@ -7,7 +7,7 @@ eval `fnm env`
echo "> Installing for the first time..." echo "> Installing for the first time..."
fnm install v8.11.3 fnm install v8.11.3
echo "> Installing the second time..." echo "> Installing the second time..."
fnm install v8.11.3 | grep "already installed" fnm install v8.11.3 2>&1 >/dev/null | grep "already installed"
if [ "$?" != "0" ]; then if [ "$?" != "0" ]; then
echo "The second installation should say it is already installed" echo "The second installation should say it is already installed"

2
library/Config.re

@ -70,7 +70,7 @@ module FNM_LOGLEVEL =
let unparse = LogLevel.toString; let unparse = LogLevel.toString;
let name = "FNM_LOGLEVEL"; let name = "FNM_LOGLEVEL";
let doc = "The log level of fnm commands"; let doc = "The log level of fnm commands";
let default = LogLevel.All; let default = LogLevel.Info;
}); });
let parseBooleanOrDie = (~name, str) => let parseBooleanOrDie = (~name, str) =>

10
library/LogLevel.re

@ -1,19 +1,23 @@
type t = type t =
| Quiet | Quiet
| Error | Error
| All; | Info
| Debug;
let toString = logLevel => let toString = logLevel =>
switch (logLevel) { switch (logLevel) {
| Quiet => "quiet" | Quiet => "quiet"
| Error => "error" | Error => "error"
| All => "all" | Info => "info"
| Debug => "debug"
}; };
let fromString = logLevelString => let fromString = logLevelString =>
switch (logLevelString) { switch (logLevelString) {
| "quiet" => Quiet | "quiet" => Quiet
| "error" => Error | "error" => Error
| "all" => All | "info" => Info
| "debug"
| "all" => Debug
| _ => failwith("Unsupported level: " ++ logLevelString) | _ => failwith("Unsupported level: " ++ logLevelString)
}; };

17
library/Logger.re

@ -1,8 +1,18 @@
let configuredLogLevel = Config.FNM_LOGLEVEL.get(); let configuredLogLevel = Config.FNM_LOGLEVEL.get();
let log = message => { let info = message => {
switch (configuredLogLevel) { switch (configuredLogLevel) {
| LogLevel.All => Console.log(message) | LogLevel.Debug
| LogLevel.Info => Console.log(message)
| LogLevel.Error
| LogLevel.Quiet => ()
};
};
let debug = message => {
switch (configuredLogLevel) {
| LogLevel.Debug => Console.log(message)
| LogLevel.Info
| LogLevel.Error | LogLevel.Error
| LogLevel.Quiet => () | LogLevel.Quiet => ()
}; };
@ -10,7 +20,8 @@ let log = message => {
let error = message => { let error = message => {
switch (configuredLogLevel) { switch (configuredLogLevel) {
| LogLevel.All | LogLevel.Debug
| LogLevel.Info
| LogLevel.Error => Console.error(message) | LogLevel.Error => Console.error(message)
| LogLevel.Quiet => () | LogLevel.Quiet => ()
}; };

2
test/__snapshots__/Smoke_test.4d362c3c.0.snapshot

@ -3,5 +3,5 @@ export PATH=<sfwRoot>/current/bin:$PATH
export FNM_MULTISHELL_PATH=<sfwRoot>/current export FNM_MULTISHELL_PATH=<sfwRoot>/current
export FNM_DIR=<sfwRoot>/ export FNM_DIR=<sfwRoot>/
export FNM_NODE_DIST_MIRROR=https://nodejs.org/dist export FNM_NODE_DIST_MIRROR=https://nodejs.org/dist
export FNM_LOGLEVEL=all export FNM_LOGLEVEL=info

Loading…
Cancel
Save