Skip to content

Commit

Permalink
Merge e1f0ff4 into 365db1e
Browse files Browse the repository at this point in the history
  • Loading branch information
ProfessorTom committed Jun 30, 2020
2 parents 365db1e + e1f0ff4 commit ede1399
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Expand Up @@ -206,6 +206,7 @@ following rules are enabled by default:
* `git_branch_delete_checked_out` – changes `git branch -d` to `git checkout master && git branch -D` when trying to delete a checked out branch;
* `git_branch_exists` – offers `git branch -d foo`, `git branch -D foo` or `git checkout foo` when creating a branch that already exists;
* `git_branch_list` – catches `git branch list` in place of `git branch` and removes created branch;
* `git_branch_flag_0_to_flag_dash_v` – undoes `git branch 0v` and runs `git branch -v` in its place;
* `git_checkout` – fixes branch name or creates new branch;
* `git_commit_amend` – offers `git commit --amend` after previous commit;
* `git_commit_reset` – offers `git reset HEAD~` after previous commit;
Expand Down
19 changes: 19 additions & 0 deletions tests/rules/test_git_branch_flag_0_to_flag_dash_v.py
@@ -0,0 +1,19 @@
import pytest
from thefuck.rules.git_branch_flag_0_to_flag_dash_v import match, get_new_command
from thefuck.types import Command


@pytest.fixture
def output():
return ""


def test_match(output):
assert match(Command('git branch 0v', output))
assert not match(Command('git branch -v', ''))
assert not match(Command('ls', output))


def test_get_new_command(output):
assert get_new_command(Command('git branch 0v', output))\
== 'git branch -D 0v && git branch -v'
36 changes: 36 additions & 0 deletions thefuck/rules/git_branch_flag_0_to_flag_dash_v.py
@@ -0,0 +1,36 @@
from thefuck.shells import shell
from thefuck.specific.git import git_support
from thefuck.utils import memoize

'''
keys are fatfingered entry, values are two-element tuples
where the first element is "the fix" and the second element
is "what you meant to do
'''
# clunky when there's only one key, but as others get added, I _think_
# this will be cleaner
flags_and_their_fixes = dict()
flags_and_their_fixes["v"] = ('git branch -D 0v', 'git branch -v')


@memoize
def _supported_flag_fix(command):
flag = command.script_parts[2:][0]

if len(flag) == 2 and flag.startswith("0"):
return flags_and_their_fixes[flag[1]]
else:
return None


@git_support
def match(command):
return (command.script_parts
and command.script_parts[1] == 'branch'
and _supported_flag_fix(command) is not None)


@git_support
def get_new_command(command):
fix_parts = _supported_flag_fix(command)
return shell.and_(fix_parts[0], fix_parts[1])

0 comments on commit ede1399

Please sign in to comment.