1from thefuck.utils import for_app, get_close_matches, replace_command
2import re
3
4
5def _get_failed_lifecycle(command):
6    return re.search(r'\[ERROR\] Unknown lifecycle phase "(.+)"',
7                     command.output)
8
9
10def _getavailable_lifecycles(command):
11    return re.search(
12        r'Available lifecycle phases are: (.+) -> \[Help 1\]', command.output)
13
14
15@for_app('mvn')
16def match(command):
17    failed_lifecycle = _get_failed_lifecycle(command)
18    available_lifecycles = _getavailable_lifecycles(command)
19    return available_lifecycles and failed_lifecycle
20
21
22def get_new_command(command):
23    failed_lifecycle = _get_failed_lifecycle(command)
24    available_lifecycles = _getavailable_lifecycles(command)
25    if available_lifecycles and failed_lifecycle:
26        selected_lifecycle = get_close_matches(
27            failed_lifecycle.group(1), available_lifecycles.group(1).split(", "))
28        return replace_command(command, failed_lifecycle.group(1), selected_lifecycle)
29    else:
30        return []
31