def _main(base, args): """Run the dnf program from a command line interface.""" dnf.i18n.setup_locale() dnf.i18n.setup_stdout() # our core object for the cli base.logging.presetup() cli = dnf.cli.cli.Cli(base) # do our cli parsing and config file setup # also sanity check the things being passed on the cli try: cli.configure(list(map(ucd, args))) cli.check() except dnf.exceptions.LockError: raise except (IOError, OSError) as e: return ex_IOError(e) # Try to open the current directory to see if we have # read and execute access. If not, chdir to / try: f = open(".") except IOError as e: if e.errno == errno.EACCES: logger.critical( _('No read/execute access in current directory, moving to /')) os.chdir("/") else: f.close() try: cli.run() except dnf.exceptions.LockError: raise except (IOError, OSError) as e: return ex_IOError(e) if cli.demands.resolving: try: ret = resolving(cli, base) except dnf.exceptions.DepsolveError as e: ex_Error(e) if not cli.demands.allow_erasing: logger.info( _("(try to add '%s' to command line to" " replace conflicting packages)"), "--allowerasing") raise if ret: return ret cli.command.run_transaction() return cli.demands.success_exit_status
def _main(base, args): """Run the dnf program from a command line interface.""" dnf.i18n.setup_locale() dnf.i18n.setup_stdout() # our core object for the cli base.logging.presetup() cli = dnf.cli.cli.Cli(base) # do our cli parsing and config file setup # also sanity check the things being passed on the cli try: cli.configure(list(map(ucd, args))) cli.check() except dnf.exceptions.LockError: raise except (IOError, OSError) as e: return ex_IOError(e) # Try to open the current directory to see if we have # read and execute access. If not, chdir to / try: f = open(".") except IOError as e: if e.errno == errno.EACCES: logger.critical(_('No read/execute access in current directory, moving to /')) os.chdir("/") else: f.close() try: cli.run() except dnf.exceptions.LockError: raise except (IOError, OSError) as e: return ex_IOError(e) if cli.demands.resolving: try: ret = resolving(cli, base) except dnf.exceptions.DepsolveError as e: ex_Error(e) if not cli.demands.allow_erasing: logger.info(_("(try to add '%s' to command line to" " replace conflicting packages)"), "--allowerasing") raise if ret: return ret cli.command.run_transaction() return cli.demands.success_exit_status