CLI/git: rename environment variables.

Although the code required to support both new and old environment
variables is small, it complicates the semantics of configuration, and
make the documentation harder to follow.
This commit is contained in:
David Bremner 2022-05-15 13:47:54 -03:00
parent a85c82f99a
commit b010584163
2 changed files with 17 additions and 24 deletions

View file

@ -18,13 +18,6 @@
""" """
Manage notmuch tags with Git Manage notmuch tags with Git
Environment variables:
* NMBGIT specifies the location of the git repository used by nmbug.
If not specified $HOME/.nmbug is used.
* NMBPREFIX specifies the prefix in the notmuch database for tags of
interest to nmbug. If not specified 'notmuch::' is used.
""" """
from __future__ import print_function from __future__ import print_function
@ -50,7 +43,7 @@ _LOG = _logging.getLogger('nmbug')
_LOG.setLevel(_logging.WARNING) _LOG.setLevel(_logging.WARNING)
_LOG.addHandler(_logging.StreamHandler()) _LOG.addHandler(_logging.StreamHandler())
NMBGIT = None NOTMUCH_GIT_DIR = None
TAG_PREFIX = None TAG_PREFIX = None
_HEX_ESCAPE_REGEX = _re.compile('%[0-9A-F]{2}') _HEX_ESCAPE_REGEX = _re.compile('%[0-9A-F]{2}')
@ -198,7 +191,7 @@ def _spawn(args, input=None, additional_env=None, wait=False, stdin=None,
def _git(args, **kwargs): def _git(args, **kwargs):
args = ['git', '--git-dir', NMBGIT] + list(args) args = ['git', '--git-dir', NOTMUCH_GIT_DIR] + list(args)
return _spawn(args=args, **kwargs) return _spawn(args=args, **kwargs)
@ -266,7 +259,7 @@ def clone(repository):
with _tempfile.TemporaryDirectory(prefix='nmbug-clone.') as workdir: with _tempfile.TemporaryDirectory(prefix='nmbug-clone.') as workdir:
_spawn( _spawn(
args=[ args=[
'git', 'clone', '--no-checkout', '--separate-git-dir', NMBGIT, 'git', 'clone', '--no-checkout', '--separate-git-dir', NOTMUCH_GIT_DIR,
repository, workdir], repository, workdir],
wait=True) wait=True)
_git(args=['config', '--unset', 'core.worktree'], wait=True, expect=(0, 5)) _git(args=['config', '--unset', 'core.worktree'], wait=True, expect=(0, 5))
@ -358,7 +351,7 @@ def init(remote=None):
This wraps 'git init' with a few extra steps to support subsequent This wraps 'git init' with a few extra steps to support subsequent
status and commit commands. status and commit commands.
""" """
_spawn(args=['git', '--git-dir', NMBGIT, 'init', '--bare'], wait=True) _spawn(args=['git', '--git-dir', NOTMUCH_GIT_DIR, 'init', '--bare'], wait=True)
_git(args=['config', 'core.logallrefupdates', 'true'], wait=True) _git(args=['config', 'core.logallrefupdates', 'true'], wait=True)
# create an empty blob (e69de29bb2d1d6434b8b29ae775ad8c2e48c5391) # create an empty blob (e69de29bb2d1d6434b8b29ae775ad8c2e48c5391)
_git(args=['hash-object', '-w', '--stdin'], input='', wait=True) _git(args=['hash-object', '-w', '--stdin'], input='', wait=True)
@ -366,7 +359,7 @@ def init(remote=None):
args=[ args=[
'commit', '--allow-empty', '-m', 'Start a new nmbug repository' 'commit', '--allow-empty', '-m', 'Start a new nmbug repository'
], ],
additional_env={'GIT_WORK_TREE': NMBGIT}, additional_env={'GIT_WORK_TREE': NOTMUCH_GIT_DIR},
wait=True) wait=True)
@ -589,7 +582,7 @@ def get_status():
def _index_tags(): def _index_tags():
"Write notmuch tags to the nmbug.index." "Write notmuch tags to the nmbug.index."
path = _os.path.join(NMBGIT, 'nmbug.index') path = _os.path.join(NOTMUCH_GIT_DIR, 'nmbug.index')
query = ' '.join('tag:"{tag}"'.format(tag=tag) for tag in get_tags()) query = ' '.join('tag:"{tag}"'.format(tag=tag) for tag in get_tags())
prefix = '+{0}'.format(_ENCODED_TAG_PREFIX) prefix = '+{0}'.format(_ENCODED_TAG_PREFIX)
_git( _git(
@ -708,7 +701,7 @@ if __name__ == '__main__':
help='Git repository to operate on.') help='Git repository to operate on.')
parser.add_argument( parser.add_argument(
'-p', '--tag-prefix', metavar='PREFIX', '-p', '--tag-prefix', metavar='PREFIX',
default = _os.getenv('NMBPREFIX', 'notmuch::'), default = _os.getenv('NOTMUCH_GIT_PREFIX', 'notmuch::'),
help='Prefix of tags to operate on.') help='Prefix of tags to operate on.')
parser.add_argument( parser.add_argument(
'-l', '--log-level', '-l', '--log-level',
@ -821,13 +814,13 @@ if __name__ == '__main__':
args = parser.parse_args() args = parser.parse_args()
if args.git_dir: if args.git_dir:
NMBGIT = args.git_dir NOTMUCH_GIT_DIR = args.git_dir
else: else:
NMBGIT = _os.path.expanduser( NOTMUCH_GIT_DIR = _os.path.expanduser(
_os.getenv('NMBGIT', _os.path.join('~', '.nmbug'))) _os.getenv('NOTMUCH_GIT_DIR', _os.path.join('~', '.nmbug')))
_NMBGIT = _os.path.join(NMBGIT, '.git') _NOTMUCH_GIT_DIR = _os.path.join(NOTMUCH_GIT_DIR, '.git')
if _os.path.isdir(_NMBGIT): if _os.path.isdir(_NOTMUCH_GIT_DIR):
NMBGIT = _NMBGIT NOTMUCH_GIT_DIR = _NOTMUCH_GIT_DIR
TAG_PREFIX = args.tag_prefix TAG_PREFIX = args.tag_prefix
_ENCODED_TAG_PREFIX = _hex_quote(TAG_PREFIX, safe='+@=,') # quote ':' _ENCODED_TAG_PREFIX = _hex_quote(TAG_PREFIX, safe='+@=,') # quote ':'
@ -837,7 +830,7 @@ if __name__ == '__main__':
_LOG.setLevel(level) _LOG.setLevel(level)
# for test suite # for test suite
for var in ['NMBGIT', 'NMBPREFIX', 'NOTMUCH_PROFILE', 'NOTMUCH_CONFIG' ]: for var in ['NOTMUCH_GIT_DIR', 'NOTMUCH_GIT_PREFIX', 'NOTMUCH_PROFILE', 'NOTMUCH_CONFIG' ]:
_LOG.debug('env {:s} = {:s}'.format(var, _os.getenv(var,'%None%'))) _LOG.debug('env {:s} = {:s}'.format(var, _os.getenv(var,'%None%')))
if not getattr(args, 'func', None): if not getattr(args, 'func', None):

View file

@ -80,11 +80,11 @@ EOF
test_expect_equal_file EXPECTED OUTPUT test_expect_equal_file EXPECTED OUTPUT
test_begin_subtest "environment passed through when run as 'notmuch git'" test_begin_subtest "environment passed through when run as 'notmuch git'"
env NMBGIT=foo NMBPREFIX=bar NOTMUCH_PROFILE=default notmuch git -C tags.git -p '' -ldebug status |& \ env NOTMUCH_GIT_DIR=foo NOTMUCH_GIT_PREFIX=bar NOTMUCH_PROFILE=default notmuch git -C tags.git -p '' -ldebug status |& \
grep '^env ' | notmuch_dir_sanitize > OUTPUT grep '^env ' | notmuch_dir_sanitize > OUTPUT
cat <<EOF > EXPECTED cat <<EOF > EXPECTED
env NMBGIT = foo env NOTMUCH_GIT_DIR = foo
env NMBPREFIX = bar env NOTMUCH_GIT_PREFIX = bar
env NOTMUCH_PROFILE = default env NOTMUCH_PROFILE = default
env NOTMUCH_CONFIG = CWD/notmuch-config env NOTMUCH_CONFIG = CWD/notmuch-config
EOF EOF