Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 10 additions & 5 deletions src/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -753,10 +753,12 @@ def app_upgrade(
# "app" is a bad name for this arg but meh that's legacy and possibly can't easily be changed
# (and actually a bit relevant in terms of what's shown in --help)
raw_requested_targets = app
single_app_to_upgrade = None
if not raw_requested_targets:
requested_targets = _installed_apps()
elif isinstance(raw_requested_targets, str):
requested_targets = [raw_requested_targets]
single_app_to_upgrade = raw_requested_targets
else:
requested_targets = raw_requested_targets.copy()
# Remove possible duplicates
Expand All @@ -775,6 +777,7 @@ def app_upgrade(

def _check_upgrade_targets(
requested_targets: list[str],
single_app_to_upgrade: str | None,
) -> Iterator[tuple[str, str, str]]:
if (url or file) and len(requested_targets) > 1 and not isinstance(file, dict):
raise YunohostValidationError(
Expand Down Expand Up @@ -834,8 +837,12 @@ def _check_upgrade_targets(
new_version=new_version,
)
yield (app_, msg, new_app_src)
elif status == "up_to_date":
if force:
elif status == "up_to_date" or status == "bad_quality":
force_this_app = force
if status == "bad_quality":
logger.warning(m18n.n("app_upgrade_cli_bad_quality", app=app_))
force_this_app = force and app_ == single_app_to_upgrade
if force_this_app:
msg = m18n.n(
"app_upgrade_cli_will_force_upgrade",
app=app_,
Expand All @@ -850,8 +857,6 @@ def _check_upgrade_targets(
current_version=current_version,
)
)
elif status == "bad_quality":
logger.warning(m18n.n("app_upgrade_cli_bad_quality", app=app_))
else:
logger.error(f"Unknown upgrade status '{status}' for {app_} !?")

Expand Down Expand Up @@ -1150,7 +1155,7 @@ def _upgrade_single_app(
#
#

actual_targets = list(_check_upgrade_targets(requested_targets))
actual_targets = list(_check_upgrade_targets(requested_targets, single_app_to_upgrade))
actual_targets_with_manifests_and_workdir = []

# Fetch app dirs and check requirements before actually launching upgrades
Expand Down