This change catches exceptions derived from Exception and
KeyboardInterrupt raised by `installer`, while run by multiple
processes, and propagates them back to earlier stack entries. This will
prevent any OSError and BrokenPipe exceptions that would otherwise be
raised when one process has an exception while the other processes are
still running.
This also handles the MemoryError exception we saw in #416, and offers
some suggestions for solving the issue.
This recreates the legacy behavior, where `aqt tool` would fail to
install a tool variant when the version in the xml file does not match
the version requested in cli arguments.
This also recreates a bug where `aqt tool` cannot install tools that
do not have a valid semantic version.
This reduces code duplication, with the intent of initializing the
parsers more consistently.
Why:
In #413, it was discovered that the interface of `aqt tool` did not
match the stated interface in the v1.2.5 documentation. After that,
I found that the interface for `aqt examples` and `aqt src` did not
fit that documentation either. This refactor places all of the
interface definitions in one location, with common code paths to
create each parser. This removes most of the code duplication involved
here, so that each parser is built more consistently. It also makes
it easier to visually inspect the differences between the parsers.
This catch-all exception handler will catch anything derived from
Exception, but not BaseException. It will catch every exception that we
have not explicitly wrapped in an AqtException, which means it will
catch every error we did not anticipate. It prints a stacktrace and asks
the user to submit a bug report.
This combination-checking code is both obsolete and invalid.
All of these checks are done better by the `combinations.json` file,
which is now kept current by a bot running in CI.
The existing version check does not account for Qt 6.2, which leads to
an inappropriate warning when you install Qt 6.2 on windows desktop.
* Introduce tooldata class
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
* Refactoring list command
- Introduce show_list function that is part of UI
- ListCommand class can be used as library to retrieve metadata.
- Rename ListCommand to MetadataFactory
- Rename action method to getList
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
- Introduce `run_installer` that consume `List[QtArchives]` data
to be same structure as `show_list` and `ToolData` data class.
Signed-off-by: Hiroshi Miura <miurahr@linux.com>