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

4
executable/FnmApp.re

@ -224,7 +224,9 @@ let env = { @@ -224,7 +224,9 @@ let env = {
enum([
("quiet", Fnm.LogLevel.Quiet),
("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(),
)

22
executable/Install.re

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

22
executable/Uninstall.re

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

27
executable/Use.re

@ -4,14 +4,25 @@ let lwtIgnore = lwt => Lwt.catch(() => lwt, _ => Lwt.return()); @@ -4,14 +4,25 @@ let lwtIgnore = lwt => Lwt.catch(() => lwt, _ => Lwt.return());
exception Version_Not_Installed(string);
let log = (~quiet, arg) =>
let info = (~quiet, arg) =>
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) => {
open Lwt;
let log = log(~quiet);
let info = info(~quiet);
let debug = debug(~quiet);
let%lwt parsedVersion =
Versions.parse(version) >>= Opt.toLwt(Version_Not_Installed(version));
@ -31,7 +42,7 @@ let switchVersion = (~version, ~quiet) => { @@ -31,7 +42,7 @@ let switchVersion = (~version, ~quiet) => {
let source = Directories.currentVersion;
log(
debug(
<Pastel>
"Linking "
<Pastel color=Pastel.Cyan> source </Pastel>
@ -51,7 +62,7 @@ let switchVersion = (~version, ~quiet) => { @@ -51,7 +62,7 @@ let switchVersion = (~version, ~quiet) => {
Lwt.return();
};
log(
info(
<Pastel>
"Using "
<Pastel color=Pastel.Cyan> versionName </Pastel>
@ -93,7 +104,7 @@ let rec askIfInstall = (~version, ~quiet, retry) => { @@ -93,7 +104,7 @@ let rec askIfInstall = (~version, ~quiet, retry) => {
let rec run = (~version, ~quiet) =>
try%lwt (main(~version, ~quiet)) {
| Version_Not_Installed(versionString) =>
log(
error(
~quiet,
<Pastel color=Pastel.Red>
"The following version is not installed: "
@ -106,7 +117,7 @@ let rec run = (~version, ~quiet) => @@ -106,7 +117,7 @@ let rec run = (~version, ~quiet) =>
exit(1);
};
| Dotfiles.Conflicting_Dotfiles_Found(v1, v2) =>
log(
error(
~quiet,
<Pastel color=Pastel.Red>
"Can't infer version from dotfiles: .node-version and .nvmrc have differing version strings:\n"
@ -119,7 +130,7 @@ let rec run = (~version, ~quiet) => @@ -119,7 +130,7 @@ let rec run = (~version, ~quiet) =>
);
exit(1);
| Dotfiles.Version_Not_Provided =>
log(
error(
~quiet,
<Pastel color=Pastel.Red>
"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` @@ -7,7 +7,7 @@ eval `fnm env`
echo "> Installing for the first time..."
fnm install v8.11.3
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
echo "The second installation should say it is already installed"

2
library/Config.re

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

10
library/LogLevel.re

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

17
library/Logger.re

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

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

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

Loading…
Cancel
Save