put fix_pyver before printing command help

If pyver forces koji to reload under different interpreter, it could
happen, that different set of plugins is available. In such case help
printed under original interpreter can be misleading.

Fixes: https://pagure.io/koji/issue/1276
This commit is contained in:
Tomas Kopecek 2019-02-25 16:15:00 +01:00 committed by Mike McLean
parent 9036e0e74f
commit 15421a5637

View file

@ -167,12 +167,11 @@ def get_options():
(sys.prefix, sys.version_info[0], sys.version_info[1]) (sys.prefix, sys.version_info[0], sys.version_info[1])
load_plugins(options, plugins_path) load_plugins(options, plugins_path)
if options.help_commands:
list_commands()
sys.exit(0)
if not args: if not args:
list_commands() options.help_commands = True
sys.exit(0) if options.help_commands:
# hijack args to [return_code, message]
return options, '_list_commands', [0, '']
aliases = { aliases = {
'cancel-task' : 'cancel', 'cancel-task' : 'cancel',
@ -199,9 +198,8 @@ def get_options():
elif ('handle_' + cmd) in globals(): elif ('handle_' + cmd) in globals():
cmd = 'handle_' + cmd cmd = 'handle_' + cmd
else: else:
list_commands() # hijack args to [return_code, message]
parser.error('Unknown command: %s' % args[0]) return options, '_list_commands', [1, 'Unknown command: %s' % args[0]]
assert False # pragma: no cover
return options, cmd, args[1:] return options, cmd, args[1:]
@ -305,6 +303,12 @@ if __name__ == "__main__":
session_opts = koji.grab_session_options(options) session_opts = koji.grab_session_options(options)
session = koji.ClientSession(options.server, session_opts) session = koji.ClientSession(options.server, session_opts)
if command == '_list_commands':
list_commands()
if args[0] != 0:
logger.error(args[1])
sys.exit(args[0])
# run handler
rv = 0 rv = 0
try: try:
rv = locals()[command].__call__(options, session, args) rv = locals()[command].__call__(options, session, args)