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.
"""
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
_LOG.setLevel(_logging.WARNING)
_LOG.addHandler(_logging.StreamHandler())
_LOG.setLevel(_logging.WARNING)
_LOG.addHandler(_logging.StreamHandler())
TAG_PREFIX = None
_HEX_ESCAPE_REGEX = _re.compile('%[0-9A-F]{2}')
TAG_PREFIX = None
_HEX_ESCAPE_REGEX = _re.compile('%[0-9A-F]{2}')
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)
with _tempfile.TemporaryDirectory(prefix='nmbug-clone.') as workdir:
_spawn(
args=[
with _tempfile.TemporaryDirectory(prefix='nmbug-clone.') as workdir:
_spawn(
args=[
- 'git', 'clone', '--no-checkout', '--separate-git-dir', NMBGIT,
+ 'git', 'clone', '--no-checkout', '--separate-git-dir', NOTMUCH_GIT_DIR,
repository, workdir],
wait=True)
_git(args=['config', '--unset', 'core.worktree'], wait=True, expect=(0, 5))
repository, workdir],
wait=True)
_git(args=['config', '--unset', 'core.worktree'], wait=True, expect=(0, 5))
This wraps 'git init' with a few extra steps to support subsequent
status and commit commands.
"""
This wraps 'git init' with a few extra steps to support subsequent
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)
# create an empty blob (e69de29bb2d1d6434b8b29ae775ad8c2e48c5391)
_git(args=['hash-object', '-w', '--stdin'], input='', wait=True)
_git(args=['config', 'core.logallrefupdates', 'true'], wait=True)
# create an empty blob (e69de29bb2d1d6434b8b29ae775ad8c2e48c5391)
_git(args=['hash-object', '-w', '--stdin'], input='', wait=True)
args=[
'commit', '--allow-empty', '-m', 'Start a new nmbug repository'
],
args=[
'commit', '--allow-empty', '-m', 'Start a new nmbug repository'
],
- additional_env={'GIT_WORK_TREE': NMBGIT},
+ additional_env={'GIT_WORK_TREE': NOTMUCH_GIT_DIR},
def _index_tags():
"Write notmuch tags to the nmbug.index."
def _index_tags():
"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())
prefix = '+{0}'.format(_ENCODED_TAG_PREFIX)
_git(
query = ' '.join('tag:"{tag}"'.format(tag=tag) for tag in get_tags())
prefix = '+{0}'.format(_ENCODED_TAG_PREFIX)
_git(
help='Git repository to operate on.')
parser.add_argument(
'-p', '--tag-prefix', metavar='PREFIX',
help='Git repository to operate on.')
parser.add_argument(
'-p', '--tag-prefix', metavar='PREFIX',
- default = _os.getenv('NMBPREFIX', 'notmuch::'),
+ default = _os.getenv('NOTMUCH_GIT_PREFIX', 'notmuch::'),
help='Prefix of tags to operate on.')
parser.add_argument(
'-l', '--log-level',
help='Prefix of tags to operate on.')
parser.add_argument(
'-l', '--log-level',
args = parser.parse_args()
if args.git_dir:
args = parser.parse_args()
if args.git_dir:
+ NOTMUCH_GIT_DIR = args.git_dir
- NMBGIT = _os.path.expanduser(
- _os.getenv('NMBGIT', _os.path.join('~', '.nmbug')))
- _NMBGIT = _os.path.join(NMBGIT, '.git')
- if _os.path.isdir(_NMBGIT):
- NMBGIT = _NMBGIT
+ NOTMUCH_GIT_DIR = _os.path.expanduser(
+ _os.getenv('NOTMUCH_GIT_DIR', _os.path.join('~', '.nmbug')))
+ _NOTMUCH_GIT_DIR = _os.path.join(NOTMUCH_GIT_DIR, '.git')
+ if _os.path.isdir(_NOTMUCH_GIT_DIR):
+ NOTMUCH_GIT_DIR = _NOTMUCH_GIT_DIR
TAG_PREFIX = args.tag_prefix
_ENCODED_TAG_PREFIX = _hex_quote(TAG_PREFIX, safe='+@=,') # quote ':'
TAG_PREFIX = args.tag_prefix
_ENCODED_TAG_PREFIX = _hex_quote(TAG_PREFIX, safe='+@=,') # quote ':'
_LOG.setLevel(level)
# for test suite
_LOG.setLevel(level)
# 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%')))
if not getattr(args, 'func', None):
_LOG.debug('env {:s} = {:s}'.format(var, _os.getenv(var,'%None%')))
if not getattr(args, 'func', None):
test_expect_equal_file EXPECTED OUTPUT
test_begin_subtest "environment passed through when run as 'notmuch git'"
test_expect_equal_file EXPECTED OUTPUT
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
cat <<EOF > EXPECTED
grep '^env ' | notmuch_dir_sanitize > OUTPUT
cat <<EOF > EXPECTED
-env NMBGIT = foo
-env NMBPREFIX = bar
+env NOTMUCH_GIT_DIR = foo
+env NOTMUCH_GIT_PREFIX = bar
env NOTMUCH_PROFILE = default
env NOTMUCH_CONFIG = CWD/notmuch-config
EOF
env NOTMUCH_PROFILE = default
env NOTMUCH_CONFIG = CWD/notmuch-config
EOF