mirror of
https://github.com/nvbn/thefuck.git
synced 2025-01-19 04:21:14 +00:00
Merge pull request #261 from maciekmm/rule-systemctl
Added systemctl rule
This commit is contained in:
commit
3203d57b36
@ -188,6 +188,7 @@ using the matched rule and runs it. Rules enabled by default are as follows:
|
|||||||
* `ssh_known_hosts` – removes host from `known_hosts` on warning;
|
* `ssh_known_hosts` – removes host from `known_hosts` on warning;
|
||||||
* `sudo` – prepends `sudo` to previous command if it failed because of permissions;
|
* `sudo` – prepends `sudo` to previous command if it failed because of permissions;
|
||||||
* `switch_layout` – switches command from your local layout to en;
|
* `switch_layout` – switches command from your local layout to en;
|
||||||
|
* `systemctl` – correctly orders parameters of confusing systemctl;
|
||||||
* `whois` – fixes `whois` command.
|
* `whois` – fixes `whois` command.
|
||||||
|
|
||||||
Enabled by default only on specific platforms:
|
Enabled by default only on specific platforms:
|
||||||
|
18
tests/rules/test_systemctl.py
Normal file
18
tests/rules/test_systemctl.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
import pytest
|
||||||
|
from thefuck.rules.systemctl import match, get_new_command
|
||||||
|
from tests.utils import Command
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def test_match():
|
||||||
|
assert match(Command('systemctl nginx start', stderr='Unknown operation \'nginx\'.'), None)
|
||||||
|
assert match(Command('sudo systemctl nginx start', stderr='Unknown operation \'nginx\'.'), None)
|
||||||
|
assert not match(Command('systemctl start nginx'), None)
|
||||||
|
assert not match(Command('systemctl start nginx'), None)
|
||||||
|
assert not match(Command('sudo systemctl nginx', stderr='Unknown operation \'nginx\'.'), None)
|
||||||
|
assert not match(Command('systemctl nginx', stderr='Unknown operation \'nginx\'.'), None)
|
||||||
|
assert not match(Command('systemctl start wtf', stderr='Failed to start wtf.service: Unit wtf.service failed to load: No such file or directory.'), None)
|
||||||
|
|
||||||
|
def test_get_new_command():
|
||||||
|
assert get_new_command(Command('systemctl nginx start'), None) == "systemctl start nginx"
|
||||||
|
assert get_new_command(Command('sudo systemctl nginx start'), None) == "sudo systemctl start nginx"
|
16
thefuck/rules/systemctl.py
Normal file
16
thefuck/rules/systemctl.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
"""
|
||||||
|
The confusion in systemctl's param order is massive
|
||||||
|
"""
|
||||||
|
from thefuck.utils import sudo_support
|
||||||
|
|
||||||
|
@sudo_support
|
||||||
|
def match(command, settings):
|
||||||
|
#Catches 'Unknown operation 'service'.' when executing systemctl with misordered arguments
|
||||||
|
cmd = command.script.split()
|
||||||
|
return ('systemctl' in command.script) and ('Unknown operation \'' in command.stderr) and (len(cmd) - cmd.index('systemctl') == 3);
|
||||||
|
|
||||||
|
@sudo_support
|
||||||
|
def get_new_command(command, settings):
|
||||||
|
cmd = command.script.split()
|
||||||
|
cmd[len(cmd)-1], cmd[len(cmd)-2] = cmd[len(cmd)-2], cmd[len(cmd)-1]
|
||||||
|
return ' '.join(cmd)
|
Loading…
x
Reference in New Issue
Block a user