mirror of
				https://github.com/nvbn/thefuck.git
				synced 2025-10-31 07:04:12 +00:00 
			
		
		
		
	Merge branch 'fish-put-to-history' of https://github.com/scorphus/thefuck into scorphus-fish-put-to-history
# Please enter a commit message to explain why this merge is necessary, # especially if it merges an updated upstream into a topic branch. # # Lines starting with '#' will be ignored, and an empty message aborts # the commit.
This commit is contained in:
		| @@ -78,3 +78,12 @@ class TestFish(object): | ||||
|         history_lines(['- cmd: ls', '  when: 1432613911', | ||||
|                        '- cmd: rm', '  when: 1432613916']) | ||||
|         assert list(shell.get_history()) == ['ls', 'rm'] | ||||
|  | ||||
|     @pytest.mark.parametrize('entry, entry_utf8', [ | ||||
|         ('ls', '- cmd: ls\n   when: 1430707243\n'), | ||||
|         (u'echo café', '- cmd: echo café\n   when: 1430707243\n')]) | ||||
|     def test_put_to_history(self, entry, entry_utf8, builtins_open, mocker, shell): | ||||
|         mocker.patch('thefuck.shells.fish.time', return_value=1430707243.3517463) | ||||
|         shell.put_to_history(entry) | ||||
|         builtins_open.return_value.__enter__.return_value. \ | ||||
|             write.assert_called_once_with(entry_utf8) | ||||
|   | ||||
| @@ -1,6 +1,9 @@ | ||||
| from subprocess import Popen, PIPE | ||||
| from time import time | ||||
| import os | ||||
| import sys | ||||
| import six | ||||
| from .. import logs | ||||
| from ..utils import DEVNULL, memoize, cache | ||||
| from .generic import Generic | ||||
|  | ||||
| @@ -65,3 +68,20 @@ class Fish(Generic): | ||||
|     def how_to_configure(self): | ||||
|         return (r"eval (thefuck --alias | tr '\n' ';')", | ||||
|                 '~/.config/fish/config.fish') | ||||
|  | ||||
|     def put_to_history(self, command): | ||||
|         try: | ||||
|             return self._put_to_history(command) | ||||
|         except IOError: | ||||
|             logs.exception("Can't update history", sys.exc_info()) | ||||
|  | ||||
|     def _put_to_history(self, command_script): | ||||
|         """Puts command script to shell history.""" | ||||
|         history_file_name = self._get_history_file_name() | ||||
|         if os.path.isfile(history_file_name): | ||||
|             with open(history_file_name, 'a') as history: | ||||
|                 entry = self._get_history_line(command_script) | ||||
|                 if six.PY2: | ||||
|                     history.write(entry.encode('utf-8')) | ||||
|                 else: | ||||
|                     history.write(entry) | ||||
|   | ||||
| @@ -81,3 +81,6 @@ class Generic(object): | ||||
|  | ||||
|     def _script_from_history(self, line): | ||||
|         return line | ||||
|  | ||||
|     def put_to_history(self, command): | ||||
|         pass | ||||
|   | ||||
| @@ -280,6 +280,8 @@ class CorrectedCommand(object): | ||||
|         """ | ||||
|         if self.side_effect: | ||||
|             compatibility_call(self.side_effect, old_cmd, self.script) | ||||
|         if settings.alter_history: | ||||
|             shell.put_to_history(self.script) | ||||
|         # This depends on correct setting of PYTHONIOENCODING by the alias: | ||||
|         logs.debug(u'PYTHONIOENCODING: {}'.format( | ||||
|             os.environ.get('PYTHONIOENCODING', '!!not-set!!'))) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user