* Create `cat_dir` rule for replacing `cat` with `ls` when you try to run `cat` on a directory.
* Changed to string methods in response to feedback.
Added a test to make sure lines like 'cat cat' don't become 'ls ls'.
Added trailing '\n's to test cases.
commit 8573f94c2f3ba17ec5d7dd123338c14a550e57e6
Author: Vladimir Iakovlev <nvbn.rm@gmail.com>
Date: Fri Feb 23 20:45:01 2018 +0100
#785: Remove functional test
commit 5484576d6e3ef4a53d69860ef953bb48037e8a72
Merge: a36a8b4f59aa93
Author: Vladimir Iakovlev <nvbn.rm@gmail.com>
Date: Fri Feb 23 20:44:20 2018 +0100
Merge branch 'master' of https://github.com/alexbarcelo/thefuck into alexbarcelo-master
commit f59aa931c3
Author: Alex Barcelo <alex.barcelo@gmail.com>
Date: Fri Feb 16 23:43:43 2018 +0100
rewritten match + fish output check for cd_* rules
commit 150ecee00f
Author: Alex Barcelo <alex.barcelo@gmail.com>
Date: Fri Feb 16 23:43:19 2018 +0100
Adding unittest for cd_correction (with extra fish test case, also for cd_mkdir)
commit e73dd3f6d1
Author: Alex Barcelo <alex.barcelo@gmail.com>
Date: Fri Feb 16 22:48:22 2018 +0100
adding functional test for cd_correction rule
commit d1dbbb57d9
Author: Alex Barcelo <alex@betarho.net>
Date: Fri Feb 16 12:21:33 2018 +0100
Include root (start with /) case
* apt_list_upgradable: Prepend sudo to suggestion if used in command
* Add apt_upgrade rule
This suggests `apt upgrade` after `apt list --upgradable` if there are
packages to upgrade. It pairs well with the `apt_list_upgradable` rule,
which suggests `apt list --upgradable` after `apt update` if there are
packages to upgrade.
* Add apt_upgrade rule to README
This fixes https://github.com/nvbn/thefuck/issues/632
This uses `script_parts` instead of `script.startswith`
to let it work even if there's extra spaces in the command, e.g.
git checkout unknown
Unfortunately, I didn't catch these issues while reviewing #702.
After looking more closely at `php` options, `-S` requires additional
arguments (<address>:<port>) and `-s` may produce output if used that
way. So, matching ` -s ` seems to be better.
Also, `@for_app('php')` already asserts the presence of `php ` in the
command script. Matching `php -s` prevents the rule from fixing commands
like `php -t public -s 0.0.0.0:8080`.
heroku updated its command suggestion formatting, so account for that.
For example:
$ heroku log
▸ log is not a heroku command.
▸ Perhaps you meant logs?
▸ Run heroku _ to run heroku logs.
▸ Run heroku help for a list of available commands.
$ fuck
heroku logs [enter/↑/↓/ctrl+c]
For example, if an "etl" script is defined in package.json, it can be
run with `yarn etl`. However, if `yarn etil` is run, `yarn` will
suggest the correction. This change lets `thefuck` take advantage of
that:
$ yarn etil
yarn etil v0.21.3
error Command "etil" not found. Did you mean "etl"?
$ fuck
yarn etl [enter/?/?/ctrl+c]
Yarn likes to keep its documentation online, rather than in `yarn help`
output. For example, `yarn help clean` doesn't tell you anything about
the `clean` subcommand. Instead, it points you towards
https://yarnpkg.com/en/docs/cli/clean
This rule detects when that happens, and suggests opening the URL. One
caveat is the currently only OSX is supported, as Linux uses `xdg-open`
instead of `open`.
* remove comments/doctrings at the top of files;
* move sudo-related stuff to sudo rule;
* for no_command case try to find most similar command, like, for example, in react_native_command_unrecognized rule.
This adds `--force` to `git add` when needed. For example:
$ git add dist/*.js
The following paths are ignored by one of your .gitignore files:
dist/app.js
dist/background.js
dist/options.js
Use -f if you really want to add them.
$ fuck
git add --force dist/app.js dist/background.js dist/options.js [enter/↑/↓/ctrl+c]
$
This adds `--force` to `git tag` when needed. For example:
$ git tag alert
fatal: tag 'alert' already exists
$ fuck
git tag --force alert [enter/↑/↓/ctrl+c]
Updated tag 'alert' (was dec6956)
$
When there are local changes to a file, and a git stash is popped that
contains other changes to that same file, git fails as follows:
$ git stash pop
error: Your local changes to the following files would be overwritten by merge:
src/index.js
Please commit your changes or stash them before you merge.
Aborting
$
This change adds a rule that corrects this problem as suggested [here]:
$ git stash pop
error: Your local changes to the following files would be overwritten by merge:
src/index.js
Please commit your changes or stash them before you merge.
Aborting
$ fuck
git add . && git stash pop && git reset . [enter/↑/↓/ctrl+c]
Auto-merging src/index.js
On branch flow
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: src/index.js
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: src/index.js
Dropped refs/stash@{0} (f94776d484c4278997ac6837a7b138b9b9cdead1)
Unstaged changes after reset:
M src/index.js
$
[here]: https://stackoverflow.com/questions/15126463/how-do-i-merge-local-modifications-with-a-git-stash-without-an-extra-commit/15126489#15126489
These were found by creating a `.flake8` file containing:
[flake8]
ignore = E501,W503
exclude = venv
then running:
flake8 $(git diff master... --name-only)
See https://github.com/nvbn/thefuck/pull/563 for running `flake8` in CI
For example:
$ git log README.md -p
fatal: bad flag '-p' used after filename
$ fuck
git log -p README.md [enter/↑/↓/ctrl+c]
Aborted
$ git log -p README.md --name-only
fatal: bad flag '--name-only' used after filename
$ fuck
git log -p --name-only README.md [enter/↑/↓/ctrl+c]
Aborted
$ git log README.md -p CONTRIBUTING.md
fatal: bad flag '-p' used after filename
$ fuck
git log -p README.md CONTRIBUTING.md [enter/↑/↓/ctrl+c]