Skip to content

Commit

Permalink
Added a rule to delete sudo for pacaur. (nvbn#787)
Browse files Browse the repository at this point in the history
  • Loading branch information
jgwak authored and nvbn committed Feb 22, 2018
1 parent aabd22e commit 31e2999
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 1 deletion.
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Magnificent app which corrects your previous console command,
inspired by a [@liamosaur](https://twitter.com/liamosaur/)
[tweet](https://twitter.com/liamosaur/status/506975850596536320).

The Fuck is too slow? [Try experimental instant mode!](#experimental-instant-mode)
The Fuck is too slow? [Try experimental instant mode!](#experimental-instant-mode)

[![gif with examples][examples-link]][examples-link]

Expand Down Expand Up @@ -278,6 +278,7 @@ using the matched rule and runs it. Rules enabled by default are as follows:
* `tsuru_not_command` – fixes wrong `tsuru` commands like `tsuru shell`;
* `tmux` – fixes `tmux` commands;
* `unknown_command` – fixes hadoop hdfs-style "unknown command", for example adds missing '-' to the command on `hdfs dfs ls`;
* `unsudo` – removes `sudo` from previous command if a process refuses to run on super user privilege.
* `vagrant_up` – starts up the vagrant instance;
* `whois` – fixes `whois` command;
* `workon_doesnt_exists` – fixes `virtualenvwrapper` env name os suggests to create new.
Expand Down
22 changes: 22 additions & 0 deletions tests/rules/test_unsudo.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import pytest
from thefuck.rules.unsudo import match, get_new_command
from thefuck.types import Command


@pytest.mark.parametrize('output', [
'you cannot perform this operation as root'])
def test_match(output):
assert match(Command('sudo ls', output))


def test_not_match():
assert not match(Command('', ''))
assert not match(Command('sudo ls', 'Permission denied'))
assert not match(Command('ls', 'you cannot perform this operation as root'))


@pytest.mark.parametrize('before, after', [
('sudo ls', 'ls'),
('sudo pacaur -S helloworld', 'pacaur -S helloworld')])
def test_get_new_command(before, after):
assert get_new_command(Command(before, '')) == after
15 changes: 15 additions & 0 deletions thefuck/rules/unsudo.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
patterns = ['you cannot perform this operation as root']


def match(command):
if command.script_parts and command.script_parts[0] != 'sudo':
return False

for pattern in patterns:
if pattern in command.output.lower():
return True
return False


def get_new_command(command):
return ' '.join(command.script_parts[1:])

0 comments on commit 31e2999

Please sign in to comment.