Browse Source

Add unalias command (#489)

remotes/origin/add-with-shims
Alex Munoz 4 years ago committed by GitHub
parent
commit
fd584746a6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 28
      docs/commands.md
  2. 5
      src/cli.rs
  3. 1
      src/commands/mod.rs
  4. 36
      src/commands/unalias.rs
  5. 26
      tests/feature_tests/mod.rs
  6. 14
      tests/feature_tests/snapshots/e2e__feature_tests__unalias__Bash.snap
  7. 11
      tests/feature_tests/snapshots/e2e__feature_tests__unalias__Fish.snap
  8. 12
      tests/feature_tests/snapshots/e2e__feature_tests__unalias__PowerShell.snap
  9. 12
      tests/feature_tests/snapshots/e2e__feature_tests__unalias__Zsh.snap
  10. 9
      tests/feature_tests/snapshots/e2e__feature_tests__unalias_error__Bash.snap
  11. 6
      tests/feature_tests/snapshots/e2e__feature_tests__unalias_error__Fish.snap
  12. 7
      tests/feature_tests/snapshots/e2e__feature_tests__unalias_error__PowerShell.snap
  13. 7
      tests/feature_tests/snapshots/e2e__feature_tests__unalias_error__Zsh.snap

28
docs/commands.md

@ -40,6 +40,7 @@ SUBCOMMANDS: @@ -40,6 +40,7 @@ SUBCOMMANDS:
install Install a new Node.js version
list List all locally installed Node.js versions [aliases: ls]
list-remote List all remote Node.js versions [aliases: ls-remote]
unalias Remove an alias definiton
uninstall Uninstall a Node.js version
use Change Node.js version
```
@ -333,6 +334,33 @@ OPTIONS: @@ -333,6 +334,33 @@ OPTIONS:
```
# `fnm unalias`
```
fnm-unalias 1.26.0
Remove an alias definiton
USAGE:
fnm unalias [OPTIONS] <requested-alias>
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
--arch <arch>
Override the architecture of the installed Node binary. Defaults to arch of fnm binary [env: FNM_ARCH]
[default: x64]
--fnm-dir <base-dir> The root directory of fnm installations [env: FNM_DIR]
--log-level <log-level> The log level of fnm commands [env: FNM_LOGLEVEL] [default: info]
--node-dist-mirror <node-dist-mirror>
https://nodejs.org/dist/ mirror [env: FNM_NODE_DIST_MIRROR] [default: https://nodejs.org/dist]
ARGS:
<requested-alias>
```
# `fnm uninstall`
```

5
src/cli.rs

@ -40,6 +40,10 @@ pub enum SubCommand { @@ -40,6 +40,10 @@ pub enum SubCommand {
#[structopt(name = "alias")]
Alias(commands::alias::Alias),
/// Remove an alias definiton
#[structopt(name = "unalias")]
Unalias(commands::unalias::Unalias),
/// Set a version as the default version
///
/// This is a shorthand for `fnm alias VERSION default`
@ -81,6 +85,7 @@ impl SubCommand { @@ -81,6 +85,7 @@ impl SubCommand {
Self::Current(cmd) => cmd.call(config),
Self::Exec(cmd) => cmd.call(config),
Self::Uninstall(cmd) => cmd.call(config),
Self::Unalias(cmd) => cmd.call(config),
}
}
}

1
src/commands/mod.rs

@ -8,5 +8,6 @@ pub mod exec; @@ -8,5 +8,6 @@ pub mod exec;
pub mod install;
pub mod ls_local;
pub mod ls_remote;
pub mod unalias;
pub mod uninstall;
pub mod r#use;

36
src/commands/unalias.rs

@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
use super::command::Command;
use crate::config::FnmConfig;
use crate::fs::remove_symlink_dir;
use snafu::{ensure, ResultExt, Snafu};
use structopt::StructOpt;
#[derive(StructOpt, Debug)]
pub struct Unalias {
pub(crate) requested_alias: String,
}
impl Command for Unalias {
type Error = Error;
fn apply(self, config: &FnmConfig) -> Result<(), Self::Error> {
let alias_path = config.aliases_dir().join(&self.requested_alias);
ensure!(
alias_path.exists(),
AliasNotFound {
requested_alias: self.requested_alias
}
);
remove_symlink_dir(&alias_path).context(CantDeleteSymlink)?;
Ok(())
}
}
#[derive(Debug, Snafu)]
pub enum Error {
#[snafu(display("Can't delete symlink: {}", source))]
CantDeleteSymlink { source: std::io::Error },
#[snafu(display("Requested alias {} not found", requested_alias))]
AliasNotFound { requested_alias: String },
}

26
tests/feature_tests/mod.rs

@ -213,8 +213,28 @@ mod use_alias_install_if_missing { @@ -213,8 +213,28 @@ mod use_alias_install_if_missing {
mod use_alias_not_installed {
test_shell!(Bash, Zsh, Fish, PowerShell; {
EvalFnmEnv::default()
.log_level(Some("error"))
.then(WriteFile::new(".node-version", "lts/*"))
.then(OutputContains::new(IgnoreErrors::new(GetStderr::new(Call::new("fnm", vec!["use"]))), "Requested version lts-latest is not currently installed"))
.log_level(Some("error"))
.then(WriteFile::new(".node-version", "lts/*"))
.then(OutputContains::new(IgnoreErrors::new(GetStderr::new(Call::new("fnm", vec!["use"]))),"Requested version lts-latest is not currently installed"))
});
}
mod unalias {
test_shell!(Bash, Zsh, Fish, PowerShell; {
EvalFnmEnv::default()
.then(Call::new("fnm", vec!["install", "11.10.0"]))
.then(Call::new("fnm", vec!["install", "8.11.3"]))
.then(Call::new("fnm", vec!["alias", "8.11.3", "version8"]))
.then(OutputContains::new(Call::new("fnm", vec!["ls"]), "version8"))
.then(Call::new("fnm", vec!["unalias", "version8"]))
.then(OutputContains::new(IgnoreErrors::new(GetStderr::new(Call::new("fnm", vec!["use", "version8"]))), "Requested version version8 is not currently installed"))
});
}
mod unalias_error {
test_shell!(Bash, Zsh, Fish, PowerShell; {
EvalFnmEnv::default()
.log_level(Some("error"))
.then(OutputContains::new(IgnoreErrors::new(GetStderr::new(Call::new("fnm", vec!["unalias", "lts"]))), "Requested alias lts not found"))
});
}

14
tests/feature_tests/snapshots/e2e__feature_tests__unalias__Bash.snap

@ -0,0 +1,14 @@ @@ -0,0 +1,14 @@
---
source: tests/feature_tests/mod.rs
expression: "&source.trim()"
---
set -e
shopt -s expand_aliases
eval "$(fnm env)"
fnm install 11.10.0
fnm install 8.11.3
fnm alias 8.11.3 version8
fnm ls | grep version8
fnm unalias version8
fnm use version8 2>&1 | grep 'Requested version version8 is not currently installed'

11
tests/feature_tests/snapshots/e2e__feature_tests__unalias__Fish.snap

@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
---
source: tests/feature_tests/mod.rs
expression: "&source.trim()"
---
fnm env | source
fnm install 11.10.0
fnm install 8.11.3
fnm alias 8.11.3 version8
fnm ls | grep version8
fnm unalias version8
fnm use version8 2>&1 | grep 'Requested version version8 is not currently installed'

12
tests/feature_tests/snapshots/e2e__feature_tests__unalias__PowerShell.snap

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
---
source: tests/feature_tests/mod.rs
expression: "&source.trim()"
---
$ErrorActionPreference = "Stop"
fnm env | Out-String | Invoke-Expression
fnm install 11.10.0
fnm install 8.11.3
fnm alias 8.11.3 version8
$($__out__ = $(fnm ls | Select-String 'version8'); echo $__out__; if ($__out__ -eq $null){ exit 1 } else { $__out__ })
fnm unalias version8
$($__out__ = $($($_tmp_err_action = $ErrorActionPreference;$ErrorActionPreference = "Continue";fnm use version8 2>&1;$ErrorActionPreference = $_tmp_err_action) | Select-String 'Requested version version8 is not currently installed'); echo $__out__; if ($__out__ -eq $null){ exit 1 } else { $__out__ })

12
tests/feature_tests/snapshots/e2e__feature_tests__unalias__Zsh.snap

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
---
source: tests/feature_tests/mod.rs
expression: "&source.trim()"
---
set -e
eval "$(fnm env)"
fnm install 11.10.0
fnm install 8.11.3
fnm alias 8.11.3 version8
fnm ls | grep version8
fnm unalias version8
fnm use version8 2>&1 | grep 'Requested version version8 is not currently installed'

9
tests/feature_tests/snapshots/e2e__feature_tests__unalias_error__Bash.snap

@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
---
source: tests/feature_tests/mod.rs
expression: "&source.trim()"
---
set -e
shopt -s expand_aliases
eval "$(fnm --log-level='error' env)"
fnm unalias lts 2>&1 | grep 'Requested alias lts not found'

6
tests/feature_tests/snapshots/e2e__feature_tests__unalias_error__Fish.snap

@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
---
source: tests/feature_tests/mod.rs
expression: "&source.trim()"
---
fnm --log-level='error' env | source
fnm unalias lts 2>&1 | grep 'Requested alias lts not found'

7
tests/feature_tests/snapshots/e2e__feature_tests__unalias_error__PowerShell.snap

@ -0,0 +1,7 @@ @@ -0,0 +1,7 @@
---
source: tests/feature_tests/mod.rs
expression: "&source.trim()"
---
$ErrorActionPreference = "Stop"
fnm --log-level='error' env | Out-String | Invoke-Expression
$($__out__ = $($($_tmp_err_action = $ErrorActionPreference;$ErrorActionPreference = "Continue";fnm unalias lts 2>&1;$ErrorActionPreference = $_tmp_err_action) | Select-String 'Requested alias lts not found'); echo $__out__; if ($__out__ -eq $null){ exit 1 } else { $__out__ })

7
tests/feature_tests/snapshots/e2e__feature_tests__unalias_error__Zsh.snap

@ -0,0 +1,7 @@ @@ -0,0 +1,7 @@
---
source: tests/feature_tests/mod.rs
expression: "&source.trim()"
---
set -e
eval "$(fnm --log-level='error' env)"
fnm unalias lts 2>&1 | grep 'Requested alias lts not found'
Loading…
Cancel
Save