diff --git a/tests/rules/test_yarn_help.py b/tests/rules/test_yarn_help.py index 499528f0..4bb06b26 100644 --- a/tests/rules/test_yarn_help.py +++ b/tests/rules/test_yarn_help.py @@ -1,6 +1,7 @@ import pytest from thefuck.rules.yarn_help import match, get_new_command from tests.utils import Command +from thefuck.system import open_command stdout_clean = ''' @@ -50,6 +51,6 @@ def test_match(command): @pytest.mark.parametrize('command, new_command', [ - (Command('yarn help clean', stdout=stdout_clean), 'open https://yarnpkg.com/en/docs/cli/clean')]) + (Command('yarn help clean', stdout=stdout_clean), open_command('https://yarnpkg.com/en/docs/cli/clean'))]) def test_get_new_command(command, new_command): assert get_new_command(command) == new_command diff --git a/thefuck/rules/yarn_help.py b/thefuck/rules/yarn_help.py index 7fb8280f..3902eb5e 100644 --- a/thefuck/rules/yarn_help.py +++ b/thefuck/rules/yarn_help.py @@ -1,5 +1,6 @@ import re from thefuck.utils import for_app +from thefuck.system import open_command @for_app('yarn', at_least=2) @@ -8,6 +9,6 @@ def match(command): def get_new_command(command): - fix = re.findall(r'Visit ([^ ]*) for documentation about this command.', command.stdout)[0] + url = re.findall(r'Visit ([^ ]*) for documentation about this command.', command.stdout)[0] - return 'open ' + fix + return open_command(url) diff --git a/thefuck/system/unix.py b/thefuck/system/unix.py index ca878033..aac25323 100644 --- a/thefuck/system/unix.py +++ b/thefuck/system/unix.py @@ -3,6 +3,7 @@ import sys import tty import termios import colorama +from distutils.spawn import find_executable from .. import const init_output = colorama.init @@ -35,6 +36,13 @@ def get_key(): return ch + +def open_command(arg): + if (find_executable('xdg-open')): + return 'xdg-open ' + arg + return 'open ' + arg + + try: from pathlib import Path except ImportError: diff --git a/thefuck/system/win32.py b/thefuck/system/win32.py index 5e49ff6e..2851498b 100644 --- a/thefuck/system/win32.py +++ b/thefuck/system/win32.py @@ -26,6 +26,11 @@ def get_key(): encoding = sys.stdout.encoding or os.environ.get('PYTHONIOENCODING', 'utf-8') return ch.decode(encoding) + +def open_command(arg): + return 'cmd /c start ' + arg + + try: from pathlib import Path except ImportError: