diff --git a/docs/migration.rst b/docs/migration.rst
index 12e0ba64..0a6ba9c8 100644
--- a/docs/migration.rst
+++ b/docs/migration.rst
@@ -54,6 +54,8 @@ In order to migrate to new filesystem tree the following actions are required:
Alternatively it can be done by running ``service-setup`` command again.
+#. If you didn't run setup command on the previous step, make sure to remove architecture reference from ``web`` section (if any).
+
#.
Make sure to update remote synchronization services if any. Almost all of them rely on current repository tree by default, so you need to setup either redirects or configure to synchronize to the old locations (e.g. ``object_path`` option for S3 synchronization).
diff --git a/package/share/ahriman/templates/build-status.jinja2 b/package/share/ahriman/templates/build-status.jinja2
index 6877dbd1..fdfc0aab 100644
--- a/package/share/ahriman/templates/build-status.jinja2
+++ b/package/share/ahriman/templates/build-status.jinja2
@@ -55,11 +55,6 @@
update
-
-
- update all
-
-
rebuild
diff --git a/package/share/ahriman/templates/build-status/table.jinja2 b/package/share/ahriman/templates/build-status/table.jinja2
index 025930d2..97140251 100644
--- a/package/share/ahriman/templates/build-status/table.jinja2
+++ b/package/share/ahriman/templates/build-status/table.jinja2
@@ -4,7 +4,6 @@
const packageRebuildButton = $("#package-rebuild-button");
const packageRemoveButton = $("#package-remove-button");
const packageUpdateButton = $("#package-update-button");
- const packageUpdateAllButton = $("#package-update-all-button");
let repository = null;
$("#repositories a").on("click", (event) => {
@@ -97,24 +96,12 @@
doPackageAction(url, currentSelection, repository, onSuccess, onFailure);
}
- function updateAllPackages() {
- const onSuccess = _ => "Repository update has been run";
- const onFailure = error => `Packages update failed: ${error}`;
- {% for repository in repositories %}
- doPackageAction("/api/v1/service/update", [], {
- architecture: "{{ repository.architecture }}",
- repository: "{{ repository.repository }}",
- }, onSuccess, onFailure);
- {% endfor %}
- }
-
function hideControls(hidden) {
keyImportButton.attr("hidden", hidden);
packageAddButton.attr("hidden", hidden);
packageRebuildButton.attr("hidden", hidden);
packageRemoveButton.attr("hidden", hidden);
packageUpdateButton.attr("hidden", hidden);
- packageUpdateAllButton.attr("hidden", hidden);
}
function reload() {
diff --git a/src/ahriman/application/handlers/status_update.py b/src/ahriman/application/handlers/status_update.py
index ff1f63f4..f448515e 100644
--- a/src/ahriman/application/handlers/status_update.py
+++ b/src/ahriman/application/handlers/status_update.py
@@ -45,14 +45,18 @@ class StatusUpdate(Handler):
configuration(Configuration): configuration instance
report(bool): force enable or disable reporting
"""
- # we are using reporter here
- client = Application(repository_id, configuration, report=True).repository.reporter
+ application = Application(repository_id, configuration, report=True)
+ client = application.repository.reporter
match args.action:
case Action.Update if args.package:
# update packages statuses
- for package in args.package:
- client.package_update(package, args.status)
+ packages = application.repository.packages()
+ for base in args.package:
+ if (local := next((package for package in packages if package.base == base), None)) is not None:
+ client.package_add(local, args.status)
+ else:
+ client.package_update(base, args.status)
case Action.Update:
# update service status
client.status_update(args.status)
diff --git a/src/ahriman/core/configuration/configuration.py b/src/ahriman/core/configuration/configuration.py
index e963023b..92356294 100644
--- a/src/ahriman/core/configuration/configuration.py
+++ b/src/ahriman/core/configuration/configuration.py
@@ -63,7 +63,7 @@ class Configuration(configparser.RawConfigParser):
>>> path, repository_id = configuration.check_loaded()
"""
- ARCHITECTURE_SPECIFIC_SECTIONS = ["alpm", "build", "sign", "web"]
+ ARCHITECTURE_SPECIFIC_SECTIONS = ["alpm", "build", "sign"]
SYSTEM_CONFIGURATION_PATH = Path(sys.prefix) / "share" / "ahriman" / "settings" / "ahriman.ini"
converters: dict[str, Callable[[str], Any]] # typing guard
diff --git a/tests/ahriman/application/handlers/test_handler_status_update.py b/tests/ahriman/application/handlers/test_handler_status_update.py
index 427f1ca6..99a67f60 100644
--- a/tests/ahriman/application/handlers/test_handler_status_update.py
+++ b/tests/ahriman/application/handlers/test_handler_status_update.py
@@ -47,13 +47,16 @@ def test_run_packages(args: argparse.Namespace, configuration: Configuration, re
must run command with specified packages
"""
args = _default_args(args)
- args.package = [package_ahriman.base]
+ args.package = [package_ahriman.base, "package"]
mocker.patch("ahriman.core.repository.Repository.load", return_value=repository)
+ mocker.patch("ahriman.core.repository.repository.Repository.packages", return_value=[package_ahriman])
+ add_mock = mocker.patch("ahriman.core.status.client.Client.package_add")
update_mock = mocker.patch("ahriman.core.status.client.Client.package_update")
_, repository_id = configuration.check_loaded()
StatusUpdate.run(args, repository_id, configuration, report=False)
- update_mock.assert_called_once_with(package_ahriman.base, args.status)
+ add_mock.assert_called_once_with(package_ahriman, args.status)
+ update_mock.assert_called_once_with("package", args.status)
def test_run_remove(args: argparse.Namespace, configuration: Configuration, repository: Repository,