diff --git a/README.md b/README.md index fef76ffd..1ba5b9e4 100644 --- a/README.md +++ b/README.md @@ -242,6 +242,7 @@ using the matched rule and runs it. Rules enabled by default are as follows: * `no_such_file` – creates missing directories with `mv` and `cp` commands; * `open` – either prepends `http://` to address passed to `open` or create a new file or directory and passes it to `open`; * `pip_unknown_command` – fixes wrong `pip` commands, for example `pip instatl/pip install`; +* `php_s` – replaces `-s` by `-S` when trying to run a local php server; * `port_already_in_use` – kills process that bound port; * `python_command` – prepends `python` when you trying to run not executable/without `./` python script; * `python_execute` – appends missing `.py` when executing Python files; diff --git a/tests/rules/test_php_s.py b/tests/rules/test_php_s.py new file mode 100644 index 00000000..54949eef --- /dev/null +++ b/tests/rules/test_php_s.py @@ -0,0 +1,20 @@ +import pytest +from thefuck.rules.php_s import get_new_command, match +from thefuck.types import Command + + +def test_match(): + assert match(Command('php -s localhost:8000', '')) + + +@pytest.mark.parametrize('command', [ + Command('php -S localhost:8000', ''), + Command('vim php -s', '') +]) +def test_not_match(command): + assert not match(command) + + +def test_get_new_command(): + new_command = get_new_command(Command('php -s localhost:8000', '')) + assert new_command == 'php -S localhost:8000' diff --git a/thefuck/rules/php_s.py b/thefuck/rules/php_s.py new file mode 100644 index 00000000..10c09964 --- /dev/null +++ b/thefuck/rules/php_s.py @@ -0,0 +1,13 @@ +from thefuck.utils import replace_argument, for_app + + +@for_app('php') +def match(command): + return "php -s" in command.script + + +def get_new_command(command): + return replace_argument(command.script, "-s", "-S") + + +requires_output = False