In bash completion script, warn when script is out of date using script contents instead of version. (Fewer spurious warnings that way.)

This commit is contained in:
Dan Helfman 2022-05-28 15:27:11 -07:00
parent e76bfa555f
commit 6629f40cab

View file

@ -1,5 +1,3 @@
import pkg_resources
from borgmatic.commands import arguments from borgmatic.commands import arguments
UPGRADE_MESSAGE = ''' UPGRADE_MESSAGE = '''
@ -28,15 +26,15 @@ def bash_completion():
top_level_parser, subparsers = arguments.make_parsers() top_level_parser, subparsers = arguments.make_parsers()
global_flags = parser_flags(top_level_parser) global_flags = parser_flags(top_level_parser)
actions = ' '.join(subparsers.choices.keys()) actions = ' '.join(subparsers.choices.keys())
borgmatic_version = pkg_resources.require('borgmatic')[0].version
# Avert your eyes. # Avert your eyes.
return '\n'.join( return '\n'.join(
( (
'set -euo pipefail',
'check_version() {', 'check_version() {',
' local installed_version="$(borgmatic --version 2> /dev/null)"', ' local this_script="$(cat "$BASH_SOURCE" 2> /dev/null)"',
' if [ "$installed_version" != "%s" ] && [ "$installed_version" != "" ];' ' local installed_script="$(borgmatic --bash-completion 2> /dev/null)"',
% borgmatic_version, ' if [ "$this_script" != "$installed_script" ] && [ "$installed_script" != "" ];'
' then cat << EOF\n%s\nEOF' % UPGRADE_MESSAGE, ' then cat << EOF\n%s\nEOF' % UPGRADE_MESSAGE,
' fi', ' fi',
'}', '}',