Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

automatic: Check availability of config file #2146

Merged
merged 1 commit into from
Oct 18, 2024

Conversation

m-blaha
Copy link
Member

@m-blaha m-blaha commented Oct 17, 2024

If a configuration file is explicitly specified on the command line, ensure that it exists and is readable. If the file is not found, notify the user immediately and terminate the process.

This resolves issues where users may run dnf-automatic with unrecognized positional arguments, such as dnf-automatic install.

Resolves: https://issues.redhat.com/browse/RHEL-46030
Test: rpm-software-management/ci-dnf-stack#1571

@pep8speaks
Copy link

pep8speaks commented Oct 17, 2024

Hello @m-blaha! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:

There are currently no PEP 8 issues detected in this Pull Request. Cheers! 🍻

Comment last updated at 2024-10-18 07:33:48 UTC

@m-blaha m-blaha force-pushed the mblaha/dnf-automatic-config branch 2 times, most recently from ea1ba50 to 14b029e Compare October 17, 2024 13:04
@ppisar ppisar self-assigned this Oct 17, 2024
Copy link
Contributor

@ppisar ppisar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Otherwise your patch works for me.
If you are not going to address the two nitpicks, feel free to merge it as it is.

dnf/automatic/main.py Outdated Show resolved Hide resolved
dnf/automatic/main.py Show resolved Hide resolved
If a configuration file is explicitly specified on the command line,
ensure that it exists and is readable. If the file is not found, notify
the user immediately and terminate the process.

This resolves issues where users may run dnf-automatic with unrecognized
positional arguments, such as `dnf-automatic install`.

The most natural approach to handle a non-existing config file would be
by catching the exception thrown by the `read()` method of the
`libdnf.conf.ConfigParser` class. Unfortunately, the Python bindings
override the `read()` method at the SWIG level, causing it to suppress any
potentially raised IOError.
For details see this section of the commit
rpm-software-management/libdnf@8f1fedf

def ConfigParser__newRead(self, filenames):
    parsedFNames = []
    try:
        if isinstance(filenames, str) or isinstance(filenames, unicode):
            filenames = [filenames]
    except NameError:
        pass
    for fname in filenames:
        try:
            self.readFileName(fname)
            parsedFNames.append(fname)
        except IOError:
            pass
        except Exception as e:
            raise RuntimeError("Parsing file '%s' failed: %s" % (fname, str(e)))
    return parsedFNames
ConfigParser.read = ConfigParser__newRead

Resolves: https://issues.redhat.com/browse/RHEL-46030
Copy link
Contributor

@ppisar ppisar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good.

@ppisar ppisar merged commit 13ecc39 into master Oct 18, 2024
8 of 11 checks passed
@ppisar ppisar deleted the mblaha/dnf-automatic-config branch October 18, 2024 08:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants