mirror of
https://github.com/nvbn/thefuck.git
synced 2025-01-18 20:11:17 +00:00
parent
59dc6cbf90
commit
48e1e4217f
@ -316,6 +316,7 @@ The following rules are enabled by default on specific platforms only:
|
|||||||
* `brew_unknown_command` – fixes wrong brew commands, for example `brew docto/brew doctor`;
|
* `brew_unknown_command` – fixes wrong brew commands, for example `brew docto/brew doctor`;
|
||||||
* `brew_update_formula` – turns `brew update <formula>` into `brew upgrade <formula>`;
|
* `brew_update_formula` – turns `brew update <formula>` into `brew upgrade <formula>`;
|
||||||
* `dnf_no_such_command` – fixes mistyped DNF commands;
|
* `dnf_no_such_command` – fixes mistyped DNF commands;
|
||||||
|
* `nixos_cmd_not_found` – installs apps on NixOS;
|
||||||
* `pacman` – installs app with `pacman` if it is not installed (uses `yay` or `yaourt` if available);
|
* `pacman` – installs app with `pacman` if it is not installed (uses `yay` or `yaourt` if available);
|
||||||
* `pacman_not_found` – fixes package name with `pacman`, `yay` or `yaourt`.
|
* `pacman_not_found` – fixes package name with `pacman`, `yay` or `yaourt`.
|
||||||
|
|
||||||
|
25
tests/rules/test_nixos_cmd_not_found.py
Normal file
25
tests/rules/test_nixos_cmd_not_found.py
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import pytest
|
||||||
|
from thefuck.rules.nixos_cmd_not_found import match, get_new_command
|
||||||
|
from thefuck.types import Command
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('command', [
|
||||||
|
Command('vim', 'nix-env -iA nixos.vim')])
|
||||||
|
def test_match(mocker, command):
|
||||||
|
mocker.patch('thefuck.rules.nixos_cmd_not_found', return_value=None)
|
||||||
|
assert match(command)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('command', [
|
||||||
|
Command('vim', ''),
|
||||||
|
Command('', '')])
|
||||||
|
def test_not_match(mocker, command):
|
||||||
|
mocker.patch('thefuck.rules.nixos_cmd_not_found', return_value=None)
|
||||||
|
assert not match(command)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('command, new_command', [
|
||||||
|
(Command('vim', 'nix-env -iA nixos.vim'), 'nix-env -iA nixos.vim && vim'),
|
||||||
|
(Command('pacman', 'nix-env -iA nixos.pacman'), 'nix-env -iA nixos.pacman && pacman')])
|
||||||
|
def test_get_new_command(mocker, command, new_command):
|
||||||
|
assert get_new_command(command) == new_command
|
15
thefuck/rules/nixos_cmd_not_found.py
Normal file
15
thefuck/rules/nixos_cmd_not_found.py
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
import re
|
||||||
|
from thefuck.specific.nix import nix_available
|
||||||
|
from thefuck.shells import shell
|
||||||
|
|
||||||
|
regex = re.compile(r'nix-env -iA ([^\s]*)')
|
||||||
|
enabled_by_default = nix_available
|
||||||
|
|
||||||
|
|
||||||
|
def match(command):
|
||||||
|
return regex.findall(command.output)
|
||||||
|
|
||||||
|
|
||||||
|
def get_new_command(command):
|
||||||
|
name = regex.findall(command.output)[0]
|
||||||
|
return shell.and_('nix-env -iA {}'.format(name), command.script)
|
3
thefuck/specific/nix.py
Normal file
3
thefuck/specific/nix.py
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
from thefuck.utils import which
|
||||||
|
|
||||||
|
nix_available = bool(which('nix'))
|
Loading…
x
Reference in New Issue
Block a user