Skip to content

Commit

Permalink
[cli] Use program name from argv rather than hard-coded 'dnf'.
Browse files Browse the repository at this point in the history
  • Loading branch information
Daniel Mach authored and j-mracek committed Mar 6, 2019
1 parent ab63eb3 commit 3670558
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 16 deletions.
2 changes: 1 addition & 1 deletion dnf/cli/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -910,7 +910,7 @@ def configure(self, args, option_parser=None):
# save our original args out
self.base.args = args
# save out as a nice command string
self.cmdstring = dnf.const.PROGRAM_NAME + ' '
self.cmdstring = self.optparser.prog + ' '
for arg in self.base.args:
self.cmdstring += '%s ' % arg

Expand Down
12 changes: 6 additions & 6 deletions dnf/cli/option_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,8 +152,7 @@ def _main_parser(self):
""" Standard options known to all dnf subcommands. """
# All defaults need to be a None, so we can always tell whether the user
# has set something or whether we are getting a default.
main_parser = argparse.ArgumentParser(dnf.const.PROGRAM_NAME,
add_help=False)
main_parser = argparse.ArgumentParser(add_help=False)
main_parser._optionals.title = _("Optional arguments")
main_parser.add_argument("-c", "--config", dest="config_file_path",
default=None, metavar='[config file]',
Expand Down Expand Up @@ -332,7 +331,8 @@ def _main_parser(self):
return main_parser

def _command_parser(self, command):
prog = "%s %s" % (dnf.const.PROGRAM_NAME, command._basecmd)
parser = argparse.ArgumentParser()
prog = "%s %s" % (parser.prog, command._basecmd)
super(OptionParser, self).__init__(prog, add_help=False,
parents=[self.main_parser],
description=command.summary)
Expand Down Expand Up @@ -364,8 +364,8 @@ def get_usage(self):
""" get the usage information to show the user. """
desc = {'main': _('List of Main Commands:'),
'plugin': _('List of Plugin Commands:')}
name = dnf.const.PROGRAM_NAME
usage = '%s [options] COMMAND\n' % name
parser = argparse.ArgumentParser()
usage = '%s [options] COMMAND\n' % parser.prog
for grp in ['main', 'plugin']:
if not grp in self._cmd_groups:
# dont add plugin usage, if we dont have plugins
Expand All @@ -385,7 +385,7 @@ def add_argument(self, *args, **kwargs):
return self.command_arg_parser.add_argument(*args, **kwargs)

def parse_main_args(self, args):
parser = argparse.ArgumentParser(dnf.const.PROGRAM_NAME, add_help=False,
parser = argparse.ArgumentParser(add_help=False,
parents=[self.main_parser])
parser.add_argument('command', nargs='?', help=argparse.SUPPRESS)
namespace, _unused_args = parser.parse_known_args(args)
Expand Down
5 changes: 2 additions & 3 deletions dnf/const.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,9 @@ TMPDIR='/var/tmp/'
VERBOSE_LEVEL=6

PREFIX=NAME.lower()
PROGRAM_NAME=NAME.lower()
PROGRAM_NAME=NAME.lower() # Deprecated - no longer used, Argparser prints program name based on sys.argv
PLUGINCONFPATH = '/etc/dnf/plugins' # :api
PLUGINPATH = '%s/%s-plugins' % (distutils.sysconfig.get_python_lib(),
PROGRAM_NAME)
PLUGINPATH = '%s/dnf-plugins' % distutils.sysconfig.get_python_lib()
VERSION='@DNF_VERSION@'
USER_AGENT = "dnf/%s" % VERSION

Expand Down
5 changes: 4 additions & 1 deletion tests/cli/test_option_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
from __future__ import absolute_import
from __future__ import unicode_literals

import argparse

from dnf.cli.option_parser import OptionParser

import dnf.cli.commands
Expand Down Expand Up @@ -120,8 +122,9 @@ def test_help_option_notset(self):
self.assertFalse(opts.help)

def test_get_usage(self):
parser = argparse.ArgumentParser()
output = [
u'dnf [options] COMMAND',
u'%s [options] COMMAND' % parser.prog,
u'',
u'List of Main Commands:',
u'',
Expand Down
15 changes: 10 additions & 5 deletions tests/test_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
from __future__ import absolute_import
from __future__ import unicode_literals

import argparse
import os
import re
from argparse import Namespace
Expand Down Expand Up @@ -192,7 +193,9 @@ def test_configure_user(self):
self.cli.configure(['update', '-c', self.conffile])
reg = re.compile('^/var/tmp/dnf-[.a-zA-Z0-9_-]+$')
self.assertIsNotNone(reg.match(self.base.conf.cachedir))
self.assertEqual(self.cli.cmdstring, "dnf update -c %s " % self.conffile)
parser = argparse.ArgumentParser()
expected = "%s update -c %s " % (parser.prog, self.conffile)
self.assertEqual(self.cli.cmdstring, expected)

@mock.patch('dnf.util.am_i_root', lambda: True)
def test_configure_root(self):
Expand All @@ -202,14 +205,16 @@ def test_configure_root(self):
self.cli.configure(['update', '--nogpgcheck', '-c', self.conffile])
reg = re.compile('^/var/cache/dnf$')
self.assertIsNotNone(reg.match(self.base.conf.system_cachedir))
self.assertEqual(self.cli.cmdstring,
"dnf update --nogpgcheck -c %s " % self.conffile)
parser = argparse.ArgumentParser()
expected = "%s update --nogpgcheck -c %s " % (parser.prog, self.conffile)
self.assertEqual(self.cli.cmdstring, expected)

def test_configure_verbose(self):
with mock.patch('dnf.rpm.detect_releasever', return_value=69):
self.cli.configure(['-v', 'update', '-c', self.conffile])
self.assertEqual(self.cli.cmdstring, "dnf -v update -c %s " %
self.conffile)
parser = argparse.ArgumentParser()
expected = "%s -v update -c %s " % (parser.prog, self.conffile)
self.assertEqual(self.cli.cmdstring, expected)
self.assertEqual(self.base.conf.debuglevel, 6)
self.assertEqual(self.base.conf.errorlevel, 6)

Expand Down

0 comments on commit 3670558

Please sign in to comment.