diff --git a/.gitignore b/.gitignore index f38419e..c954632 100644 --- a/.gitignore +++ b/.gitignore @@ -5,5 +5,6 @@ __pycache__ *~ *.tar.gz *.patch +.pytest_cache .tox tags diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 93f076b..9a1ed84 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,35 +1,51 @@ -- repo: git@github.com:pre-commit/pre-commit-hooks.git - sha: v0.9.1 - hooks: - - id: autopep8-wrapper - args: - - --in-place - - --aggressive - - --aggressive - - --max-line-length=131 - - --ignore=E126,E128,E402,E731 - - id: check-added-large-files - - id: check-ast - - id: check-case-conflict - - id: check-docstring-first - - id: debug-statements - - id: double-quote-string-fixer - - id: end-of-file-fixer - - id: fix-encoding-pragma - - id: flake8 - args: - - --max-complexity=10 - - --max-line-length=131 - - --ignore=E126,E128,E402,E731 - - --exclude=bin/autojump_argparse.py - - id: requirements-txt-fixer - - id: trailing-whitespace -- repo: git@github.com:asottile/reorder_python_imports.git - sha: v0.3.5 - hooks: - - id: reorder-python-imports - language_version: python2.7 -- repo: https://github.com/asottile/add-trailing-comma - sha: v0.6.1 - hooks: - - id: add-trailing-comma +repos: +- repo: git@github.com:pre-commit/pre-commit-hooks.git + rev: v1.4.0 + hooks: + - id: autopep8-wrapper + language_version: python2 + args: + - --in-place + - --aggressive + - --aggressive + - --ignore=E731 + - --max-line-length=131 + - id: check-added-large-files + language_version: python2 + - id: check-ast + language_version: python2 + - id: check-case-conflict + language_version: python2 + - id: check-docstring-first + language_version: python2 + - id: debug-statements + language_version: python2 + - id: double-quote-string-fixer + language_version: python2 + - id: end-of-file-fixer + language_version: python2 + exclude_types: [batch, lua] + - id: fix-encoding-pragma + language_version: python2 + - id: flake8 + language_version: python2 + args: + - --max-complexity=10 + - --max-line-length=131 + - --ignore=E402,E731 + - --exclude=bin/autojump_argparse.py + - id: name-tests-test + language_version: python2 + - id: requirements-txt-fixer + language_version: python2 + - id: trailing-whitespace + language_version: python2 +- repo: git@github.com:asottile/reorder_python_imports.git + rev: v1.1.1 + hooks: + - id: reorder-python-imports + language_version: python2 +- repo: git@github.com:asottile/add-trailing-comma + rev: v0.7.0 + hooks: + - id: add-trailing-comma diff --git a/CHANGES.md b/CHANGES.md index 68d058e..568a722 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,5 @@ ## Summary of release changes, see commit history for more details: -## https://github.com/joelthelion/autojump/commits/master/ +## https://github.com/wting/autojump/commits/master/ ### Release v22.4.0: - minor zsh performance improvement diff --git a/Makefile b/Makefile index 2e8da45..c0c828c 100644 --- a/Makefile +++ b/Makefile @@ -1,15 +1,19 @@ VERSION = $(shell grep -oE "[0-9]+\.[0-9]+\.[0-9]+" bin/autojump) TAGNAME = release-v$(VERSION) -.PHONY: clean docs install uninstall pre-commit lint tar test - +.PHONY: install install: ./install.py +.PHONY: uninstall uninstall: ./uninstall.py +.PHONY: docs docs: + @echo "% autojump(1) ${TAGNAME}" >docs/manpage_header.md + @echo "%" >>docs/manpage_header.md + @echo "% $(shell \date +%Y-%m-%d)" >>docs/manpage_header.md pandoc -s -w man docs/manpage_header.md docs/header.md docs/body.md -o docs/autojump.1 pandoc -s -w markdown docs/header.md docs/install.md docs/body.md -o README.md @@ -17,9 +21,11 @@ docs: lint: pre-commit @tox -e pre-commit -- run --all-files +.PHONY: pre-commit pre-commit: @tox -e pre-commit -- install -f --install-hooks +.PHONY: release release: docs # Check for tag existence # git describe release-$(VERSION) 2>&1 >/dev/null || exit 1 @@ -37,20 +43,25 @@ release: docs git archive --format=tar --prefix autojump_v$(VERSION)/ $(TAGNAME) | gzip > autojump_v$(VERSION).tar.gz sha1sum autojump_v$(VERSION).tar.gz +.PHONY: tar tar: # Create tagged archive git archive --format=tar --prefix autojump_v$(VERSION)/ $(TAGNAME) | gzip > autojump_v$(VERSION).tar.gz sha1sum autojump_v$(VERSION).tar.gz +.PHONY: test test: pre-commit @tox +.PHONY: test-xfail test-xfail: pre-commit @tox -- --runxfail +.PHONY: test-fast test-fast: pre-commit @tox -e py27 +.PHONY: clean clean: @find . -type f -iname '*.py[co]' -delete @find . -type d -iname '__pycache__' -delete diff --git a/README.md b/README.md index 15970e1..495226a 100644 --- a/README.md +++ b/README.md @@ -63,29 +63,61 @@ INSTALLATION ### REQUIREMENTS -- Python v2.6+ except v3.2 -- Supported shells: - - bash v4.0+ - - zsh - - fish - - tcsh (experimental) - - clink (Windows, experimental) +- Python v2.6+ or Python v3.3+ +- Supported shells + - bash - first class support + - zsh - first class support + - fish - community supported + - tcsh - community supported + - clink - community supported +- Supported platforms + - Linux - first class support + - OS X - first class support + - Windows - community supported + - BSD - community supported +- Supported installation methods + - source code - first class support + - Debian and derivatives - first class support + - ArchLinux / Gentoo / openSUSE / RedHat and derivatives - + community supported + - Homebrew / MacPorts - community supported + +Due to limited time and resources, only "first class support" items will +be maintained by the primary committers. All "community supported" items +will be updated based on pull requests submitted by the general public. + +Please continue opening issues and providing feedback for community +supported items since consolidating information helps other users +troubleshoot and submit enhancements and fixes. + +### MANUAL + +Grab a copy of autojump: + + git clone git://github.com/wting/autojump.git + +Run the installation script and follow on screen instructions. + + cd autojump + ./install.py or ./uninstall.py ### AUTOMATIC #### Linux autojump is included in the following distro repositories, please use -relevant package management utilities to install (e.g. yum, apt-get, -etc): +relevant package management utilities to install (e.g. apt-get, yum, +pacman, etc): -- Debian testing/unstable, Ubuntu, Linux Mint +- Debian, Ubuntu, Linux Mint All Debian-derived distros require manual activation for policy reasons, please see `/usr/share/doc/autojump/README.Debian`. -- RedHat, Fedora, CentOS (install `autojump-zsh` for zsh, - `autojump-fish` for fish, etc.) +- RedHat, Fedora, CentOS + + Install `autojump-zsh` for zsh, `autojump-fish` for fish, etc. + - ArchLinux - Gentoo - Frugalware @@ -97,7 +129,7 @@ Homebrew is the recommended installation method for Mac OS X: brew install autojump -MacPorts also available: +MacPorts is also available: port install autojump @@ -107,17 +139,6 @@ Windows Windows support is enabled by [clink](https://mridgers.github.io/clink/) which should be installed prior to installing autojump. -### MANUAL - -Grab a copy of autojump: - - git clone git://github.com/joelthelion/autojump.git - -Run the installation script and follow on screen instructions. - - cd autojump - ./install.py or ./uninstall.py - KNOWN ISSUES ------------ diff --git a/bin/autojump b/bin/autojump index e7b061d..ed0151d 100755 --- a/bin/autojump +++ b/bin/autojump @@ -65,7 +65,7 @@ from autojump_utils import sanitize from autojump_utils import take from autojump_utils import unico -VERSION = '22.5.1' +VERSION = '22.5.3' FUZZY_MATCH_THRESHOLD = 0.6 TAB_ENTRIES_COUNT = 9 TAB_SEPARATOR = '__' diff --git a/bin/autojump_argparse.py b/bin/autojump_argparse.py index 950db4d..bb14666 100644 --- a/bin/autojump_argparse.py +++ b/bin/autojump_argparse.py @@ -311,9 +311,11 @@ class HelpFormatter(object): return help def _join_parts(self, part_strings): - return ''.join([part - for part in part_strings - if part and part is not SUPPRESS]) + return ''.join([ + part + for part in part_strings + if part and part is not SUPPRESS + ]) def _format_usage(self, usage, actions, groups, prefix): if prefix is None: @@ -1526,9 +1528,11 @@ class _ActionsContainer(object): def _handle_conflict_error(self, action, conflicting_actions): message = _('conflicting option string(s): %s') - conflict_string = ', '.join([option_string - for option_string, action - in conflicting_actions]) + conflict_string = ', '.join([ + option_string + for option_string, action + in conflicting_actions + ]) raise ArgumentError(action, message % conflict_string) def _handle_conflict_resolve(self, action, conflicting_actions): @@ -1760,14 +1764,18 @@ class ArgumentParser(_AttributeHolder, _ActionsContainer): return action def _get_optional_actions(self): - return [action - for action in self._actions - if action.option_strings] + return [ + action + for action in self._actions + if action.option_strings + ] def _get_positional_actions(self): - return [action - for action in self._actions - if not action.option_strings] + return [ + action + for action in self._actions + if not action.option_strings + ] # ===================================== # Command line argument parsing methods @@ -1991,7 +1999,8 @@ class ArgumentParser(_AttributeHolder, _ActionsContainer): next_option_string_index = min([ index for index in option_string_indices - if index >= start_index]) + if index >= start_index + ]) if start_index != next_option_string_index: positionals_end_index = consume_positionals(start_index) @@ -2040,9 +2049,11 @@ class ArgumentParser(_AttributeHolder, _ActionsContainer): # if no actions were used, report the error else: - names = [_get_action_name(action) - for action in group._group_actions - if action.help is not SUPPRESS] + names = [ + _get_action_name(action) + for action in group._group_actions + if action.help is not SUPPRESS + ] msg = _('one of the arguments %s is required') self.error(msg % ' '.join(names)) @@ -2106,8 +2117,10 @@ class ArgumentParser(_AttributeHolder, _ActionsContainer): result = [] for i in range(len(actions), 0, -1): actions_slice = actions[:i] - pattern = ''.join([self._get_nargs_pattern(action) - for action in actions_slice]) + pattern = ''.join([ + self._get_nargs_pattern(action) + for action in actions_slice + ]) match = _re.match(pattern, arg_strings_pattern) if match is not None: result.extend([len(string) for string in match.groups()]) diff --git a/bin/autojump_data.py b/bin/autojump_data.py index 2ba7fbb..d647a42 100644 --- a/bin/autojump_data.py +++ b/bin/autojump_data.py @@ -120,11 +120,12 @@ def migrate_osx_xdg_data(config): def save(config, data): """Save data and create backup, creating a new data file if necessary.""" - create_dir(os.path.dirname(config['data_path'])) + data_dir = os.path.dirname(config['data_path']) + create_dir(data_dir) # atomically save by writing to temporary file and moving to destination try: - temp = NamedTemporaryFile(delete=False) + temp = NamedTemporaryFile(delete=False, dir=data_dir) # Windows cannot reuse the same open file name temp.close() diff --git a/docs/autojump.1 b/docs/autojump.1 index 98e0d44..08c841e 100644 --- a/docs/autojump.1 +++ b/docs/autojump.1 @@ -1,6 +1,6 @@ .\" Automatically generated by Pandoc 1.16.0.2 .\" -.TH "autojump" "1" "10 April 2012" "release\-v22" "" +.TH "autojump" "1" "2018\-09\-09" "release\-v22.5.3" "" .hy .SS NAME .PP @@ -120,7 +120,7 @@ For any questions or issues please visit: .IP .nf \f[C] -https://github.com/joelthelion/autojump/issues +https://github.com/wting/autojump/issues \f[] .fi .SS AUTHORS diff --git a/docs/body.md b/docs/body.md index 91a169e..dc79b7d 100644 --- a/docs/body.md +++ b/docs/body.md @@ -17,7 +17,7 @@ REPORTING BUGS For any questions or issues please visit: - https://github.com/joelthelion/autojump/issues + https://github.com/wting/autojump/issues AUTHORS ------- diff --git a/docs/install.md b/docs/install.md index 2a2604b..d4e4867 100644 --- a/docs/install.md +++ b/docs/install.md @@ -2,28 +2,59 @@ ### REQUIREMENTS -- Python v2.6+ except v3.2 -- Supported shells: - - bash v4.0+ - - zsh - - fish - - tcsh (experimental) - - clink (Windows, experimental) +- Python v2.6+ or Python v3.3+ +- Supported shells + - bash - first class support + - zsh - first class support + - fish - community supported + - tcsh - community supported + - clink - community supported +- Supported platforms + - Linux - first class support + - OS X - first class support + - Windows - community supported + - BSD - community supported +- Supported installation methods + - source code - first class support + - Debian and derivatives - first class support + - ArchLinux / Gentoo / openSUSE / RedHat and derivatives - community supported + - Homebrew / MacPorts - community supported + +Due to limited time and resources, only "first class support" items will be +maintained by the primary committers. All "community supported" items will be +updated based on pull requests submitted by the general public. + +Please continue opening issues and providing feedback for community supported +items since consolidating information helps other users troubleshoot and submit +enhancements and fixes. + +### MANUAL + +Grab a copy of autojump: + + git clone git://github.com/wting/autojump.git + +Run the installation script and follow on screen instructions. + + cd autojump + ./install.py or ./uninstall.py ### AUTOMATIC #### Linux autojump is included in the following distro repositories, please use relevant -package management utilities to install (e.g. yum, apt-get, etc): +package management utilities to install (e.g. apt-get, yum, pacman, etc): - Debian, Ubuntu, Linux Mint All Debian-derived distros require manual activation for policy reasons, please see `/usr/share/doc/autojump/README.Debian`. -- RedHat, Fedora, CentOS (install `autojump-zsh` for zsh, `autojump-fish` for - fish, etc.) +- RedHat, Fedora, CentOS + + Install `autojump-zsh` for zsh, `autojump-fish` for fish, etc. + - ArchLinux - Gentoo - Frugalware @@ -35,7 +66,7 @@ Homebrew is the recommended installation method for Mac OS X: brew install autojump -MacPorts also available: +MacPorts is also available: port install autojump @@ -43,14 +74,3 @@ MacPorts also available: Windows support is enabled by [clink](https://mridgers.github.io/clink/) which should be installed prior to installing autojump. - -### MANUAL - -Grab a copy of autojump: - - git clone git://github.com/joelthelion/autojump.git - -Run the installation script and follow on screen instructions. - - cd autojump - ./install.py or ./uninstall.py diff --git a/docs/manpage_header.md b/docs/manpage_header.md index 14e1938..a7b28dc 100644 --- a/docs/manpage_header.md +++ b/docs/manpage_header.md @@ -1,3 +1,3 @@ -% autojump(1) release-v22 +% autojump(1) release-v22.5.3 % -% 10 April 2012 +% 2018-09-09