mirror of
https://github.com/nvbn/thefuck.git
synced 2025-01-18 20:11:17 +00:00
Merge pull request #261 from maciekmm/rule-systemctl
Added systemctl rule
This commit is contained in:
commit
3203d57b36
@ -169,7 +169,7 @@ using the matched rule and runs it. Rules enabled by default are as follows:
|
||||
* `git_push` – adds `--set-upstream origin $branch` to previous failed `git push`;
|
||||
* `git_stash` – stashes you local modifications before rebasing or switching branch;
|
||||
* `go_run` – appends `.go` extension when compiling/running Go programs
|
||||
* `grep_recursive` – adds `-r` when you trying to grep directory;
|
||||
* `grep_recursive` – adds `-r` when you trying to grep directory;
|
||||
* `has_exists_script` – prepends `./` when script/binary exists;
|
||||
* `lein_not_task` – fixes wrong `lein` tasks like `lein rpl`;
|
||||
* `ls_lah` – adds -lah to ls;
|
||||
@ -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;
|
||||
* `sudo` – prepends `sudo` to previous command if it failed because of permissions;
|
||||
* `switch_layout` – switches command from your local layout to en;
|
||||
* `systemctl` – correctly orders parameters of confusing systemctl;
|
||||
* `whois` – fixes `whois` command.
|
||||
|
||||
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