aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKonstantin Ryabitsev <konstantin@linuxfoundation.org>2021-07-29 09:28:23 -0400
committerKonstantin Ryabitsev <konstantin@linuxfoundation.org>2021-07-29 09:28:23 -0400
commite56929df1a50ab454c578d6710dfd4b6984ca491 (patch)
tree8a8e5994f74c834cc599a8477abd1ab846686547
parent77c62d68b841f295b2ab72e15e59821d2e4c4473 (diff)
downloadgrokmirror-e56929df1a50ab454c578d6710dfd4b6984ca491.tar.gz
Add ability to pass native public-inbox flags
Instead of duplicating all possible public-inbox flags, add ability to set --pi-index-flags, --pi-init-flags, and --pi-extindex-flags so they are passed along verbatim to proper commands. Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
-rw-r--r--grokmirror/pi_indexer.py25
1 files changed, 24 insertions, 1 deletions
diff --git a/grokmirror/pi_indexer.py b/grokmirror/pi_indexer.py
index cb26b1e..0b38cc3 100644
--- a/grokmirror/pi_indexer.py
+++ b/grokmirror/pi_indexer.py
@@ -8,6 +8,7 @@ import os
import sys
import re
import shutil
+import shlex
import grokmirror
@@ -39,7 +40,13 @@ def index_pi_inbox(inboxdir: str, opts) -> bool:
logger.info('Inboxdir not initialized: %s', inboxdir)
return False
- piargs = ['public-inbox-index', '--no-update-extindex', inboxdir]
+ piargs = ['public-inbox-index', '--no-update-extindex']
+ if opts.pi_index_flags:
+ sp = shlex.shlex(opts.pi_index_flags, posix=True)
+ sp.whitespace_split = True
+ piargs += list(sp)
+
+ piargs.append(inboxdir)
env = {
'PI_CONFIG': opts.piconfig,
@@ -143,6 +150,10 @@ def init_pi_inbox(inboxdir: str, opts) -> bool:
piargs = ['public-inbox-init', '-V2', '-L', opts.indexlevel]
if newsgroup:
piargs += ['--ng', newsgroup]
+ if opts.pi_init_flags:
+ sp = shlex.shlex(opts.pi_init_flags, posix=True)
+ sp.whitespace_split = True
+ piargs += list(sp)
for opt, val in extraopts:
piargs += ['-c', f'{opt}={val}']
piargs += [inboxname, inboxdir, local_url]
@@ -242,6 +253,10 @@ def cmd_extindex(opts):
}
logger.info('Running extindex --all')
piargs = ['public-inbox-extindex', '--all']
+ if opts.pi_extindex_flags:
+ sp = shlex.shlex(opts.pi_extindex_flags, posix=True)
+ sp.whitespace_split = True
+ piargs += list(sp)
try:
ec, out, err = grokmirror.run_shell_command(piargs, env=env)
if ec > 0:
@@ -284,6 +299,10 @@ def command():
help='Indexlevel to use with public-inbox-init (full, medium, basic)')
sp_init.add_argument('--force-reinit', dest='forceinit', action='store_true', default=False,
help='Force a full (re-)init of an inboxdir')
+ sp_init.add_argument('--pi-init-flags', dest='pi_init_flags',
+ help='Additional flags to pass verbatim to public-inbox-init')
+ sp_init.add_argument('--pi-index-flags', dest='pi_index_flags',
+ help='Additional flags to pass verbatim to public-inbox-index')
sp_init.add_argument('inboxdir', nargs='?',
help='Path to toplevel inboxdir (non-hook mode)')
sp_init.set_defaults(func=cmd_init)
@@ -291,9 +310,13 @@ def command():
sp_update = sp.add_parser('update', help='Run public-inbox-index on passed repository path')
sp_update.add_argument('repo', nargs=1,
help='Full path to foo/git/N.git public-inbox repository')
+ sp_update.add_argument('--pi-index-flags', dest='pi_index_flags',
+ help='Additional flags to pass verbatim to public-inbox-index')
sp_update.set_defaults(func=cmd_update)
sp_extindex = sp.add_parser('extindex', help='Run extindex on all inboxes')
+ sp_extindex.add_argument('--pi-extindex-flags', dest='pi_extindex_flags',
+ help='Additional flags to pass verbatim to public-inbox-extindex')
sp_extindex.set_defaults(func=cmd_extindex)
opts = ap.parse_args()