Compare commits

..
28 Commits
Author SHA1 Message Date
arcanis 81c9e1e596 Release 2.21.0 2026-07-21 00:24:44 +03:00
arcanis 2693f789d0 build: explicit hatchling dep 2026-07-21 00:22:07 +03:00
arcanis 08ade0b425 build: do not use system site packages for archive target 2026-07-21 00:22:07 +03:00
arcanis c648f91662 build: skip install in publish target 2026-07-21 00:10:37 +03:00
arcanis 20482cb137 misc: rename frontend to just ahriman 2026-07-21 00:09:56 +03:00
arcanis 70829619a1 build: handle posargs for tests 2026-07-20 12:48:47 +03:00
arcanis dd659820da build: try to handle workspace packages for tests 2026-07-19 23:58:49 +03:00
arcanis e835668f7d feat: add cooldown for aur packages 2026-07-18 21:55:26 +03:00
arcanis 526edfe2cd build: update frontend dependencies 2026-07-18 20:10:32 +03:00
arcanis a4a7c13344 fix: disable colors for importing parser calls
In case if parser is used to generate docs, it remains w\o colors, but
help messages are still formatted with it
2026-07-18 14:12:33 +03:00
arcanis fd6add46f9 build: fix import paths for rtd 2026-07-17 14:57:19 +03:00
arcanisandGitHub 700893ecac build: subpackages implementation (#164)
* migrate to hatch

* reorder tests

* generic fixtures

* straight forward conftest

* fix docs generation

* fix tox environments

* reformat tomls

* cleanup pyproject

* some play with renaming

* move root conftest into pytest plugins

* fix setup script

* move fixtures to __init__.py

* remove duplicate fixtures

* disable pylint warning

* simplify configuration fixture

* remove empty conftest

* remove crap from local pyprojects
2026-07-17 14:00:20 +03:00
arcanis f12278a31d build: reorganize scripts 2026-07-16 23:07:09 +03:00
arcanis 3492892cd2 build: replace deprecated ::set-output with GITHUB_OUTPUT 2026-07-08 15:01:06 +03:00
arcanis aef7fa5f93 build: update frontend dependencies 2026-07-06 16:16:31 +03:00
arcanis c412b08135 fix: remove staleTime defaults for query client 2026-07-06 15:33:20 +03:00
arcanis a3b6372c11 fix: override head method for sse endpoint to make it actually working 2026-07-06 14:44:29 +03:00
arcanis 78288befb8 build: use python 3.13 lowerbound 2026-07-06 13:56:02 +03:00
arcanis 49cd3d43c8 fix: handle errors in sse stream 2026-06-09 01:01:08 +03:00
arcanis d9b52806c0 fix: clear subscriber map on shutdown
Even though it is not a case in the application, the interface could be
used externally
2026-06-07 11:58:04 +03:00
arcanis 774db2d780 type: fix typing ignore with the last typing update 2026-05-31 20:04:25 +03:00
arcanis 68afda4c71 feat: allow readonly events with read permission 2026-05-26 20:51:06 +03:00
arcanis fa9fa73078 docs: bump python version to 2.13 2026-05-08 10:25:24 +03:00
arcanisandGitHub 3e1e24cb50 feat: SSE support (#162)
* event bus implementation

* update tests

* docs update

* review fixes

* update configs

* fix typo

* frontend changes

* install missing pacakge

* queue processing simplification
2026-05-08 10:20:03 +03:00
arcanis 18fe38c30b build: use build_date argument for docker image instead of guessing from pacman root 2026-05-05 13:45:42 +03:00
arcanis 6ee8b26bd5 feat: show aur url in interface 2026-04-22 06:56:28 +03:00
arcanis fce49f22c9 type: fix mypy warnings in updated version 2026-04-03 13:36:41 +03:00
arcanis af8e2c9e9b build: update rtd.io image 2026-03-30 19:20:03 +03:00
847 changed files with 4513 additions and 2982 deletions
+5
View File
@@ -0,0 +1,5 @@
[tool.bandit]
skips = [
"B404",
"B603",
]
-3
View File
@@ -1,3 +0,0 @@
skips:
- B404
- B603
@@ -12,11 +12,11 @@ pacman -Syyu --noconfirm
# main dependencies # main dependencies
pacman -S --noconfirm devtools git npm pyalpm python-bcrypt python-filelock python-inflection python-pyelftools python-requests python-systemd sudo pacman -S --noconfirm devtools git npm pyalpm python-bcrypt python-filelock python-inflection python-pyelftools python-requests python-systemd sudo
# make dependencies # make dependencies
pacman -S --noconfirm --asdeps base-devel python-build python-flit python-installer python-tox python-wheel pacman -S --noconfirm --asdeps base-devel python-build python-hatchling python-installer python-tox python-wheel
# optional dependencies # optional dependencies
if [[ -z $MINIMAL_INSTALL ]]; then if [[ -z $MINIMAL_INSTALL ]]; then
# web server # web server
pacman -S --noconfirm python-aioauth-client python-aiohttp python-aiohttp-apispec-git python-aiohttp-cors python-aiohttp-jinja2 python-aiohttp-security python-aiohttp-session python-cryptography python-jinja pacman -S --noconfirm python-aioauth-client python-aiohttp python-aiohttp-apispec-git python-aiohttp-cors python-aiohttp-jinja2 python-aiohttp-security python-aiohttp-session python-aiohttp-sse-git python-cryptography python-jinja
# additional features # additional features
pacman -S --noconfirm gnupg ipython python-boto3 python-cerberus python-matplotlib rsync pacman -S --noconfirm gnupg ipython python-boto3 python-cerberus python-matplotlib rsync
fi fi
@@ -26,10 +26,10 @@ cp "docker/systemd-nspawn.sh" "/usr/local/bin/systemd-nspawn"
# create fresh tarball # create fresh tarball
tox -e archive tox -e archive
# run makepkg # run makepkg
PKGVER=$(python -c "from src.ahriman import __version__; print(__version__)") PKGVER=$(PYTHONPATH=ahriman-core/src python -c "from ahriman import __version__; print(__version__)")
mv "dist/ahriman-$PKGVER.tar.gz" package/archlinux mv "dist/ahriman-$PKGVER.tar.gz" archlinux
chmod +777 package/archlinux # because fuck you that's why chmod +777 archlinux # because fuck you that's why
cd package/archlinux cd archlinux
sudo -u nobody -- makepkg -cf --skipchecksums --noconfirm sudo -u nobody -- makepkg -cf --skipchecksums --noconfirm
sudo -u nobody -- makepkg --packagelist | grep "ahriman-core-$PKGVER" | pacman -U --noconfirm --nodeps - sudo -u nobody -- makepkg --packagelist | grep "ahriman-core-$PKGVER" | pacman -U --noconfirm --nodeps -
if [[ -z $MINIMAL_INSTALL ]]; then if [[ -z $MINIMAL_INSTALL ]]; then
+6
View File
@@ -26,6 +26,10 @@ jobs:
- uses: docker/setup-buildx-action@v3 - uses: docker/setup-buildx-action@v3
- name: Set image date
id: args
run: echo "date=$(date -d yesterday +'%Y-%m-%d')" >> "$GITHUB_OUTPUT"
- name: Login to docker hub - name: Login to docker hub
uses: docker/login-action@v3 uses: docker/login-action@v3
with: with:
@@ -53,6 +57,8 @@ jobs:
- name: Build an image and push - name: Build an image and push
uses: docker/build-push-action@v6 uses: docker/build-push-action@v6
with: with:
build-args: |
BUILD_DATE=${{ steps.args.outputs.date }}
file: docker/Dockerfile file: docker/Dockerfile
push: true push: true
tags: ${{ steps.meta.outputs.tags }} tags: ${{ steps.meta.outputs.tags }}
+2 -2
View File
@@ -26,7 +26,7 @@ jobs:
- name: Extract version - name: Extract version
id: version id: version
run: echo ::set-output name=VERSION::${GITHUB_REF#refs/tags/} run: echo "version=${GITHUB_REF#refs/tags/}" >> "$GITHUB_OUTPUT"
- name: Create changelog - name: Create changelog
id: changelog id: changelog
@@ -38,7 +38,7 @@ jobs:
- name: Create archive - name: Create archive
run: tox -e archive run: tox -e archive
env: env:
VERSION: ${{ steps.version.outputs.VERSION }} VERSION: ${{ steps.version.outputs.version }}
- name: Publish release - name: Publish release
uses: softprops/action-gh-release@v2 uses: softprops/action-gh-release@v2
+2 -2
View File
@@ -27,7 +27,7 @@ jobs:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Setup the minimal service in arch linux container - name: Setup the minimal service in arch linux container
run: .github/workflows/setup.sh minimal run: .github/scripts/setup.sh minimal
run-setup: run-setup:
@@ -43,4 +43,4 @@ jobs:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Setup the service in arch linux container - name: Setup the service in arch linux container
run: .github/workflows/setup.sh run: .github/scripts/setup.sh
+5 -2
View File
@@ -103,5 +103,8 @@ docs/html/
# Frontend # Frontend
node_modules/ node_modules/
package-lock.json package-lock.json
package/share/ahriman/templates/static/index.js ahriman-web/package/share/ahriman/templates/static/index.js
package/share/ahriman/templates/static/index.css ahriman-web/package/share/ahriman/templates/static/index.css
# local configs
/*.ini
-5
View File
@@ -1,5 +0,0 @@
[pytest]
addopts = --cov=ahriman --cov-report=term-missing:skip-covered --no-cov-on-fail --cov-fail-under=100 --spec
asyncio_default_fixture_loop_scope = function
asyncio_mode = auto
spec_test_format = {result} {docstring_summary}
+8
View File
@@ -0,0 +1,8 @@
[pytest]
addopts = [
"--spec",
]
asyncio_default_fixture_loop_scope = "function"
asyncio_mode = "auto"
"resource-path.directory-name-test-resources" = "../../tests/testresources"
spec_test_format = "{result} {docstring_summary}"
+5 -2
View File
@@ -1,15 +1,18 @@
version: 2 version: 2
build: build:
os: ubuntu-20.04 os: ubuntu-lts-latest
tools: tools:
python: "3.12" python: "3.14"
apt_packages: apt_packages:
- graphviz - graphviz
python: python:
install: install:
- requirements: docs/requirements.txt - requirements: docs/requirements.txt
- path: ahriman-core
- path: ahriman-triggers
- path: ahriman-web
formats: formats:
- pdf - pdf
@@ -42,6 +42,8 @@ retry_backoff = 1.0
;include_debug_packages = yes ;include_debug_packages = yes
; List of additional flags passed to makechrootpkg command. ; List of additional flags passed to makechrootpkg command.
;makechrootpkg_flags = ;makechrootpkg_flags =
; Minimal age in seconds since the latest AUR package modification before automatic updates are allowed.
;min_age = 0
; List of additional flags passed to makepkg command. ; List of additional flags passed to makepkg command.
makepkg_flags = --nocolor --ignorearch makepkg_flags = --nocolor --ignorearch
; List of paths to be used for implicit dependency scan. Regular expressions are supported. ; List of paths to be used for implicit dependency scan. Regular expressions are supported.
@@ -1,9 +1,9 @@
# AUTOMATICALLY GENERATED by `shtab` # AUTOMATICALLY GENERATED by `shtab`
_shtab_ahriman_subparsers=('add' 'aur-search' 'check' 'clean' 'config' 'config-validate' 'copy' 'daemon' 'help' 'help-commands-unsafe' 'help-updates' 'help-version' 'init' 'key-import' 'package-add' 'package-changes' 'package-changes-remove' 'package-copy' 'package-remove' 'package-status' 'package-status-remove' 'package-status-update' 'package-update' 'patch-add' 'patch-list' 'patch-remove' 'patch-set-add' 'rebuild' 'remove' 'remove-unknown' 'repo-backup' 'repo-check' 'repo-clean' 'repo-config' 'repo-config-validate' 'repo-create-keyring' 'repo-create-mirrorlist' 'repo-daemon' 'repo-init' 'repo-rebuild' 'repo-remove-unknown' 'repo-report' 'repo-restore' 'repo-setup' 'repo-sign' 'repo-statistics' 'repo-status-update' 'repo-sync' 'repo-tree' 'repo-triggers' 'repo-update' 'report' 'run' 'search' 'service-clean' 'service-config' 'service-config-validate' 'service-key-import' 'service-repositories' 'service-run' 'service-setup' 'service-shell' 'service-tree-migrate' 'setup' 'shell' 'sign' 'status' 'status-update' 'sync' 'update' 'user-add' 'user-list' 'user-remove' 'version' 'web' 'web-reload') _shtab_ahriman_subparsers=('add' 'aur-search' 'check' 'clean' 'config' 'config-validate' 'copy' 'daemon' 'help' 'help-commands-unsafe' 'help-updates' 'help-version' 'init' 'key-import' 'package-add' 'package-archives' 'package-changes' 'package-changes-remove' 'package-copy' 'package-hold' 'package-pkgbuild' 'package-pkgbuild-remove' 'package-remove' 'package-rollback' 'package-status' 'package-status-remove' 'package-status-update' 'package-unhold' 'package-update' 'patch-add' 'patch-list' 'patch-remove' 'patch-set-add' 'rebuild' 'remove' 'remove-unknown' 'repo-backup' 'repo-check' 'repo-clean' 'repo-config' 'repo-config-validate' 'repo-create-keyring' 'repo-create-mirrorlist' 'repo-daemon' 'repo-init' 'repo-rebuild' 'repo-remove-unknown' 'repo-report' 'repo-restore' 'repo-setup' 'repo-sign' 'repo-statistics' 'repo-status-update' 'repo-sync' 'repo-tree' 'repo-triggers' 'repo-update' 'report' 'run' 'search' 'service-clean' 'service-config' 'service-config-validate' 'service-key-import' 'service-repositories' 'service-run' 'service-setup' 'service-shell' 'service-tree-migrate' 'setup' 'shell' 'sign' 'status' 'status-update' 'sync' 'update' 'user-add' 'user-list' 'user-remove' 'version' 'web' 'web-reload')
_shtab_ahriman_option_strings=('-h' '--help' '-a' '--architecture' '-c' '--configuration' '--force' '-l' '--lock' '--log-handler' '-q' '--quiet' '--report' '--no-report' '-r' '--repository' '--unsafe' '-V' '--version' '--wait-timeout') _shtab_ahriman_option_strings=('-h' '--help' '-a' '--architecture' '-c' '--configuration' '--force' '-l' '--lock' '--log-handler' '-q' '--quiet' '--report' '--no-report' '-r' '--repository' '--unsafe' '-V' '--version' '--wait-timeout')
_shtab_ahriman_add_option_strings=('-h' '--help' '--changes' '--no-changes' '--dependencies' '--no-dependencies' '-e' '--exit-code' '--increment' '--no-increment' '-n' '--now' '-y' '--refresh' '-s' '--source' '-u' '--username' '-v' '--variable') _shtab_ahriman_add_option_strings=('-h' '--help' '--changes' '--no-changes' '--dependencies' '--no-dependencies' '-e' '--exit-code' '--increment' '--no-increment' '-n' '--now' '-s' '--source' '-u' '--username' '-v' '--variable' '-y' '--refresh')
_shtab_ahriman_aur_search_option_strings=('-h' '--help' '-e' '--exit-code' '--info' '--no-info' '--sort-by') _shtab_ahriman_aur_search_option_strings=('-h' '--help' '-e' '--exit-code' '--info' '--no-info' '--sort-by')
_shtab_ahriman_check_option_strings=('-h' '--help' '--changes' '--no-changes' '--check-files' '--no-check-files' '-e' '--exit-code' '--vcs' '--no-vcs' '-y' '--refresh') _shtab_ahriman_check_option_strings=('-h' '--help' '--changes' '--no-changes' '--check-files' '--no-check-files' '-e' '--exit-code' '--vcs' '--no-vcs' '-y' '--refresh')
_shtab_ahriman_clean_option_strings=('-h' '--help' '--cache' '--no-cache' '--chroot' '--no-chroot' '--manual' '--no-manual' '--packages' '--no-packages' '--pacman' '--no-pacman') _shtab_ahriman_clean_option_strings=('-h' '--help' '--cache' '--no-cache' '--chroot' '--no-chroot' '--manual' '--no-manual' '--packages' '--no-packages' '--pacman' '--no-pacman')
@@ -17,15 +17,21 @@ _shtab_ahriman_help_updates_option_strings=('-h' '--help' '-e' '--exit-code')
_shtab_ahriman_help_version_option_strings=('-h' '--help') _shtab_ahriman_help_version_option_strings=('-h' '--help')
_shtab_ahriman_init_option_strings=('-h' '--help' '--build-as-user' '--from-configuration' '--generate-salt' '--no-generate-salt' '--makeflags-jobs' '--no-makeflags-jobs' '--mirror' '--multilib' '--no-multilib' '--packager' '--server' '--sign-key' '--sign-target' '--web-port' '--web-unix-socket') _shtab_ahriman_init_option_strings=('-h' '--help' '--build-as-user' '--from-configuration' '--generate-salt' '--no-generate-salt' '--makeflags-jobs' '--no-makeflags-jobs' '--mirror' '--multilib' '--no-multilib' '--packager' '--server' '--sign-key' '--sign-target' '--web-port' '--web-unix-socket')
_shtab_ahriman_key_import_option_strings=('-h' '--help' '--key-server') _shtab_ahriman_key_import_option_strings=('-h' '--help' '--key-server')
_shtab_ahriman_package_add_option_strings=('-h' '--help' '--changes' '--no-changes' '--dependencies' '--no-dependencies' '-e' '--exit-code' '--increment' '--no-increment' '-n' '--now' '-y' '--refresh' '-s' '--source' '-u' '--username' '-v' '--variable') _shtab_ahriman_package_add_option_strings=('-h' '--help' '--changes' '--no-changes' '--dependencies' '--no-dependencies' '-e' '--exit-code' '--increment' '--no-increment' '-n' '--now' '-s' '--source' '-u' '--username' '-v' '--variable' '-y' '--refresh')
_shtab_ahriman_package_archives_option_strings=('-h' '--help' '-e' '--exit-code' '--info' '--no-info')
_shtab_ahriman_package_changes_option_strings=('-h' '--help' '-e' '--exit-code') _shtab_ahriman_package_changes_option_strings=('-h' '--help' '-e' '--exit-code')
_shtab_ahriman_package_changes_remove_option_strings=('-h' '--help') _shtab_ahriman_package_changes_remove_option_strings=('-h' '--help')
_shtab_ahriman_package_copy_option_strings=('-h' '--help' '-e' '--exit-code' '--remove') _shtab_ahriman_package_copy_option_strings=('-h' '--help' '-e' '--exit-code' '--remove')
_shtab_ahriman_package_hold_option_strings=('-h' '--help')
_shtab_ahriman_package_pkgbuild_option_strings=('-h' '--help' '-e' '--exit-code')
_shtab_ahriman_package_pkgbuild_remove_option_strings=('-h' '--help')
_shtab_ahriman_package_remove_option_strings=('-h' '--help') _shtab_ahriman_package_remove_option_strings=('-h' '--help')
_shtab_ahriman_package_rollback_option_strings=('-h' '--help' '--hold' '--no-hold' '-u' '--username')
_shtab_ahriman_package_status_option_strings=('-h' '--help' '--ahriman' '-e' '--exit-code' '--info' '--no-info' '-s' '--status') _shtab_ahriman_package_status_option_strings=('-h' '--help' '--ahriman' '-e' '--exit-code' '--info' '--no-info' '-s' '--status')
_shtab_ahriman_package_status_remove_option_strings=('-h' '--help') _shtab_ahriman_package_status_remove_option_strings=('-h' '--help')
_shtab_ahriman_package_status_update_option_strings=('-h' '--help' '-s' '--status') _shtab_ahriman_package_status_update_option_strings=('-h' '--help' '-s' '--status')
_shtab_ahriman_package_update_option_strings=('-h' '--help' '--changes' '--no-changes' '--dependencies' '--no-dependencies' '-e' '--exit-code' '--increment' '--no-increment' '-n' '--now' '-y' '--refresh' '-s' '--source' '-u' '--username' '-v' '--variable') _shtab_ahriman_package_unhold_option_strings=('-h' '--help')
_shtab_ahriman_package_update_option_strings=('-h' '--help' '--changes' '--no-changes' '--dependencies' '--no-dependencies' '-e' '--exit-code' '--increment' '--no-increment' '-n' '--now' '-s' '--source' '-u' '--username' '-v' '--variable' '-y' '--refresh')
_shtab_ahriman_patch_add_option_strings=('-h' '--help') _shtab_ahriman_patch_add_option_strings=('-h' '--help')
_shtab_ahriman_patch_list_option_strings=('-h' '--help' '-e' '--exit-code' '-v' '--variable') _shtab_ahriman_patch_list_option_strings=('-h' '--help' '-e' '--exit-code' '-v' '--variable')
_shtab_ahriman_patch_remove_option_strings=('-h' '--help' '-v' '--variable') _shtab_ahriman_patch_remove_option_strings=('-h' '--help' '-v' '--variable')
@@ -82,7 +88,7 @@ _shtab_ahriman_web_reload_option_strings=('-h' '--help')
_shtab_ahriman_pos_0_choices=('add' 'aur-search' 'check' 'clean' 'config' 'config-validate' 'copy' 'daemon' 'help' 'help-commands-unsafe' 'help-updates' 'help-version' 'init' 'key-import' 'package-add' 'package-changes' 'package-changes-remove' 'package-copy' 'package-remove' 'package-status' 'package-status-remove' 'package-status-update' 'package-update' 'patch-add' 'patch-list' 'patch-remove' 'patch-set-add' 'rebuild' 'remove' 'remove-unknown' 'repo-backup' 'repo-check' 'repo-clean' 'repo-config' 'repo-config-validate' 'repo-create-keyring' 'repo-create-mirrorlist' 'repo-daemon' 'repo-init' 'repo-rebuild' 'repo-remove-unknown' 'repo-report' 'repo-restore' 'repo-setup' 'repo-sign' 'repo-statistics' 'repo-status-update' 'repo-sync' 'repo-tree' 'repo-triggers' 'repo-update' 'report' 'run' 'search' 'service-clean' 'service-config' 'service-config-validate' 'service-key-import' 'service-repositories' 'service-run' 'service-setup' 'service-shell' 'service-tree-migrate' 'setup' 'shell' 'sign' 'status' 'status-update' 'sync' 'update' 'user-add' 'user-list' 'user-remove' 'version' 'web' 'web-reload') _shtab_ahriman_pos_0_choices=('add' 'aur-search' 'check' 'clean' 'config' 'config-validate' 'copy' 'daemon' 'help' 'help-commands-unsafe' 'help-updates' 'help-version' 'init' 'key-import' 'package-add' 'package-archives' 'package-changes' 'package-changes-remove' 'package-copy' 'package-hold' 'package-pkgbuild' 'package-pkgbuild-remove' 'package-remove' 'package-rollback' 'package-status' 'package-status-remove' 'package-status-update' 'package-unhold' 'package-update' 'patch-add' 'patch-list' 'patch-remove' 'patch-set-add' 'rebuild' 'remove' 'remove-unknown' 'repo-backup' 'repo-check' 'repo-clean' 'repo-config' 'repo-config-validate' 'repo-create-keyring' 'repo-create-mirrorlist' 'repo-daemon' 'repo-init' 'repo-rebuild' 'repo-remove-unknown' 'repo-report' 'repo-restore' 'repo-setup' 'repo-sign' 'repo-statistics' 'repo-status-update' 'repo-sync' 'repo-tree' 'repo-triggers' 'repo-update' 'report' 'run' 'search' 'service-clean' 'service-config' 'service-config-validate' 'service-key-import' 'service-repositories' 'service-run' 'service-setup' 'service-shell' 'service-tree-migrate' 'setup' 'shell' 'sign' 'status' 'status-update' 'sync' 'update' 'user-add' 'user-list' 'user-remove' 'version' 'web' 'web-reload')
_shtab_ahriman___log_handler_choices=('console' 'syslog' 'journald') _shtab_ahriman___log_handler_choices=('console' 'syslog' 'journald')
_shtab_ahriman_add__s_choices=('auto' 'archive' 'aur' 'directory' 'local' 'remote' 'repository') _shtab_ahriman_add__s_choices=('auto' 'archive' 'aur' 'directory' 'local' 'remote' 'repository')
_shtab_ahriman_add___source_choices=('auto' 'archive' 'aur' 'directory' 'local' 'remote' 'repository') _shtab_ahriman_add___source_choices=('auto' 'archive' 'aur' 'directory' 'local' 'remote' 'repository')
@@ -102,8 +108,8 @@ _shtab_ahriman_repo_init___sign_target_choices=('disabled' 'packages' 'repositor
_shtab_ahriman_repo_rebuild__s_choices=('unknown' 'pending' 'building' 'failed' 'success') _shtab_ahriman_repo_rebuild__s_choices=('unknown' 'pending' 'building' 'failed' 'success')
_shtab_ahriman_repo_rebuild___status_choices=('unknown' 'pending' 'building' 'failed' 'success') _shtab_ahriman_repo_rebuild___status_choices=('unknown' 'pending' 'building' 'failed' 'success')
_shtab_ahriman_repo_setup___sign_target_choices=('disabled' 'packages' 'repository') _shtab_ahriman_repo_setup___sign_target_choices=('disabled' 'packages' 'repository')
_shtab_ahriman_repo_statistics__e_choices=('package-outdated' 'package-removed' 'package-update-failed' 'package-updated') _shtab_ahriman_repo_statistics__e_choices=('build-log' 'package-held' 'package-outdated' 'package-removed' 'package-status-changed' 'package-update-failed' 'package-updated' 'service-status-changed')
_shtab_ahriman_repo_statistics___event_choices=('package-outdated' 'package-removed' 'package-update-failed' 'package-updated') _shtab_ahriman_repo_statistics___event_choices=('build-log' 'package-held' 'package-outdated' 'package-removed' 'package-status-changed' 'package-update-failed' 'package-updated' 'service-status-changed')
_shtab_ahriman_repo_status_update__s_choices=('unknown' 'pending' 'building' 'failed' 'success') _shtab_ahriman_repo_status_update__s_choices=('unknown' 'pending' 'building' 'failed' 'success')
_shtab_ahriman_repo_status_update___status_choices=('unknown' 'pending' 'building' 'failed' 'success') _shtab_ahriman_repo_status_update___status_choices=('unknown' 'pending' 'building' 'failed' 'success')
_shtab_ahriman_search___sort_by_choices=('description' 'first_submitted' 'id' 'last_modified' 'maintainer' 'name' 'num_votes' 'out_of_date' 'package_base' 'package_base_id' 'popularity' 'repository' 'submitter' 'url' 'url_path' 'version') _shtab_ahriman_search___sort_by_choices=('description' 'first_submitted' 'id' 'last_modified' 'maintainer' 'name' 'num_votes' 'out_of_date' 'package_base' 'package_base_id' 'popularity' 'repository' 'submitter' 'url' 'url_path' 'version')
@@ -251,6 +257,12 @@ _shtab_ahriman_package_add__n_nargs=0
_shtab_ahriman_package_add___now_nargs=0 _shtab_ahriman_package_add___now_nargs=0
_shtab_ahriman_package_add__y_nargs=0 _shtab_ahriman_package_add__y_nargs=0
_shtab_ahriman_package_add___refresh_nargs=0 _shtab_ahriman_package_add___refresh_nargs=0
_shtab_ahriman_package_archives__h_nargs=0
_shtab_ahriman_package_archives___help_nargs=0
_shtab_ahriman_package_archives__e_nargs=0
_shtab_ahriman_package_archives___exit_code_nargs=0
_shtab_ahriman_package_archives___info_nargs=0
_shtab_ahriman_package_archives___no_info_nargs=0
_shtab_ahriman_package_changes__h_nargs=0 _shtab_ahriman_package_changes__h_nargs=0
_shtab_ahriman_package_changes___help_nargs=0 _shtab_ahriman_package_changes___help_nargs=0
_shtab_ahriman_package_changes__e_nargs=0 _shtab_ahriman_package_changes__e_nargs=0
@@ -263,9 +275,22 @@ _shtab_ahriman_package_copy___help_nargs=0
_shtab_ahriman_package_copy__e_nargs=0 _shtab_ahriman_package_copy__e_nargs=0
_shtab_ahriman_package_copy___exit_code_nargs=0 _shtab_ahriman_package_copy___exit_code_nargs=0
_shtab_ahriman_package_copy___remove_nargs=0 _shtab_ahriman_package_copy___remove_nargs=0
_shtab_ahriman_package_hold_pos_0_nargs=+
_shtab_ahriman_package_hold__h_nargs=0
_shtab_ahriman_package_hold___help_nargs=0
_shtab_ahriman_package_pkgbuild__h_nargs=0
_shtab_ahriman_package_pkgbuild___help_nargs=0
_shtab_ahriman_package_pkgbuild__e_nargs=0
_shtab_ahriman_package_pkgbuild___exit_code_nargs=0
_shtab_ahriman_package_pkgbuild_remove__h_nargs=0
_shtab_ahriman_package_pkgbuild_remove___help_nargs=0
_shtab_ahriman_package_remove_pos_0_nargs=+ _shtab_ahriman_package_remove_pos_0_nargs=+
_shtab_ahriman_package_remove__h_nargs=0 _shtab_ahriman_package_remove__h_nargs=0
_shtab_ahriman_package_remove___help_nargs=0 _shtab_ahriman_package_remove___help_nargs=0
_shtab_ahriman_package_rollback__h_nargs=0
_shtab_ahriman_package_rollback___help_nargs=0
_shtab_ahriman_package_rollback___hold_nargs=0
_shtab_ahriman_package_rollback___no_hold_nargs=0
_shtab_ahriman_package_status_pos_0_nargs=* _shtab_ahriman_package_status_pos_0_nargs=*
_shtab_ahriman_package_status__h_nargs=0 _shtab_ahriman_package_status__h_nargs=0
_shtab_ahriman_package_status___help_nargs=0 _shtab_ahriman_package_status___help_nargs=0
@@ -280,6 +305,9 @@ _shtab_ahriman_package_status_remove___help_nargs=0
_shtab_ahriman_package_status_update_pos_0_nargs=* _shtab_ahriman_package_status_update_pos_0_nargs=*
_shtab_ahriman_package_status_update__h_nargs=0 _shtab_ahriman_package_status_update__h_nargs=0
_shtab_ahriman_package_status_update___help_nargs=0 _shtab_ahriman_package_status_update___help_nargs=0
_shtab_ahriman_package_unhold_pos_0_nargs=+
_shtab_ahriman_package_unhold__h_nargs=0
_shtab_ahriman_package_unhold___help_nargs=0
_shtab_ahriman_package_update_pos_0_nargs=+ _shtab_ahriman_package_update_pos_0_nargs=+
_shtab_ahriman_package_update__h_nargs=0 _shtab_ahriman_package_update__h_nargs=0
_shtab_ahriman_package_update___help_nargs=0 _shtab_ahriman_package_update___help_nargs=0
@@ -1,9 +1,9 @@
.TH AHRIMAN "1" "2026\-03\-08" "ahriman 2.20.0" "ArcH linux ReposItory MANager" .TH AHRIMAN "1" "2026\-07\-21" "ahriman 2.21.0" "ArcH linux ReposItory MANager"
.SH NAME .SH NAME
ahriman \- ArcH linux ReposItory MANager ahriman \- ArcH linux ReposItory MANager
.SH SYNOPSIS .SH SYNOPSIS
.B ahriman .B ahriman
[-h] [-a ARCHITECTURE] [-c CONFIGURATION] [--force] [-l LOCK] [--log-handler {console,syslog,journald}] [-q] [--report | --no-report] [-r REPOSITORY] [--unsafe] [-V] [--wait-timeout WAIT_TIMEOUT] {add,aur-search,check,clean,config,config-validate,copy,daemon,help,help-commands-unsafe,help-updates,help-version,init,key-import,package-add,package-changes,package-changes-remove,package-copy,package-remove,package-status,package-status-remove,package-status-update,package-update,patch-add,patch-list,patch-remove,patch-set-add,rebuild,remove,remove-unknown,repo-backup,repo-check,repo-clean,repo-config,repo-config-validate,repo-create-keyring,repo-create-mirrorlist,repo-daemon,repo-init,repo-rebuild,repo-remove-unknown,repo-report,repo-restore,repo-setup,repo-sign,repo-statistics,repo-status-update,repo-sync,repo-tree,repo-triggers,repo-update,report,run,search,service-clean,service-config,service-config-validate,service-key-import,service-repositories,service-run,service-setup,service-shell,service-tree-migrate,setup,shell,sign,status,status-update,sync,update,user-add,user-list,user-remove,version,web,web-reload} ... [-h] [-a ARCHITECTURE] [-c CONFIGURATION] [--force] [-l LOCK] [--log-handler {console,syslog,journald}] [-q] [--report | --no-report] [-r REPOSITORY] [--unsafe] [-V] [--wait-timeout WAIT_TIMEOUT] {add,aur-search,check,clean,config,config-validate,copy,daemon,help,help-commands-unsafe,help-updates,help-version,init,key-import,package-add,package-archives,package-changes,package-changes-remove,package-copy,package-hold,package-pkgbuild,package-pkgbuild-remove,package-remove,package-rollback,package-status,package-status-remove,package-status-update,package-unhold,package-update,patch-add,patch-list,patch-remove,patch-set-add,rebuild,remove,remove-unknown,repo-backup,repo-check,repo-clean,repo-config,repo-config-validate,repo-create-keyring,repo-create-mirrorlist,repo-daemon,repo-init,repo-rebuild,repo-remove-unknown,repo-report,repo-restore,repo-setup,repo-sign,repo-statistics,repo-status-update,repo-sync,repo-tree,repo-triggers,repo-update,report,run,search,service-clean,service-config,service-config-validate,service-key-import,service-repositories,service-run,service-setup,service-shell,service-tree-migrate,setup,shell,sign,status,status-update,sync,update,user-add,user-list,user-remove,version,web,web-reload} ...
.SH DESCRIPTION .SH DESCRIPTION
ArcH linux ReposItory MANager ArcH linux ReposItory MANager
@@ -74,6 +74,9 @@ application version
\fBahriman\fR \fI\,package\-add\/\fR \fBahriman\fR \fI\,package\-add\/\fR
add package add package
.TP .TP
\fBahriman\fR \fI\,package\-archives\/\fR
list package archive versions
.TP
\fBahriman\fR \fI\,package\-changes\/\fR \fBahriman\fR \fI\,package\-changes\/\fR
get package changes get package changes
.TP .TP
@@ -83,9 +86,21 @@ remove package changes
\fBahriman\fR \fI\,package\-copy\/\fR \fBahriman\fR \fI\,package\-copy\/\fR
copy package from another repository copy package from another repository
.TP .TP
\fBahriman\fR \fI\,package\-hold\/\fR
hold package
.TP
\fBahriman\fR \fI\,package\-pkgbuild\/\fR
get package pkgbuild
.TP
\fBahriman\fR \fI\,package\-pkgbuild\-remove\/\fR
remove package pkgbuild
.TP
\fBahriman\fR \fI\,package\-remove\/\fR \fBahriman\fR \fI\,package\-remove\/\fR
remove package remove package
.TP .TP
\fBahriman\fR \fI\,package\-rollback\/\fR
rollback package
.TP
\fBahriman\fR \fI\,package\-status\/\fR \fBahriman\fR \fI\,package\-status\/\fR
get package status get package status
.TP .TP
@@ -95,6 +110,9 @@ remove package status
\fBahriman\fR \fI\,package\-status\-update\/\fR \fBahriman\fR \fI\,package\-status\-update\/\fR
update package status update package status
.TP .TP
\fBahriman\fR \fI\,package\-unhold\/\fR
unhold package
.TP
\fBahriman\fR \fI\,patch\-add\/\fR \fBahriman\fR \fI\,patch\-add\/\fR
add patch for PKGBUILD function add patch for PKGBUILD function
.TP .TP
@@ -198,9 +216,9 @@ web server
reload configuration reload configuration
.SH COMMAND \fI\,'ahriman aur\-search'\/\fR .SH COMMAND \fI\,'ahriman aur\-search'\/\fR
usage: ahriman aur\-search [\-h] [\-e] [\-\-info | \-\-no\-info] usage: ahriman aur\-search [\-h] [\-e] [\-\-info | \-\-no\-info]
[\-\-sort\-by {description,first_submitted,id,last_modified,maintainer,name,num_votes,out_of_date,package_base,package_base_id,popularity,repository,submitter,url,url_path,version}] [\-\-sort\-by {description,first_submitted,id,last_modified,maintainer,name,num_votes,out_of_date,package_base,package_base_id,popularity,repository,submitter,url,url_path,version}]
search [search ...] search [search ...]
search for package in AUR using API search for package in AUR using API
@@ -223,7 +241,7 @@ sort field by this field. In case if two packages have the same value of the spe
by name by name
.SH COMMAND \fI\,'ahriman help'\/\fR .SH COMMAND \fI\,'ahriman help'\/\fR
usage: ahriman help [\-h] [subcommand] usage: ahriman help [\-h] [subcommand]
show help message for application or command and exit show help message for application or command and exit
@@ -232,7 +250,7 @@ show help message for application or command and exit
show help message for specific command show help message for specific command
.SH COMMAND \fI\,'ahriman help\-commands\-unsafe'\/\fR .SH COMMAND \fI\,'ahriman help\-commands\-unsafe'\/\fR
usage: ahriman help\-commands\-unsafe [\-h] [subcommand ...] usage: ahriman help\-commands\-unsafe [\-h] [subcommand ...]
list unsafe commands as defined in default args list unsafe commands as defined in default args
@@ -242,7 +260,7 @@ instead of showing commands, just test command line for unsafe subcommand and re
otherwise otherwise
.SH COMMAND \fI\,'ahriman help\-updates'\/\fR .SH COMMAND \fI\,'ahriman help\-updates'\/\fR
usage: ahriman help\-updates [\-h] [\-e] usage: ahriman help\-updates [\-h] [\-e]
request AUR for current version and compare with current service version request AUR for current version and compare with current service version
@@ -252,15 +270,15 @@ request AUR for current version and compare with current service version
return non\-zero exit code if updates available return non\-zero exit code if updates available
.SH COMMAND \fI\,'ahriman help\-version'\/\fR .SH COMMAND \fI\,'ahriman help\-version'\/\fR
usage: ahriman help\-version [\-h] usage: ahriman help\-version [\-h]
print application and its dependencies versions print application and its dependencies versions
.SH COMMAND \fI\,'ahriman package\-add'\/\fR .SH COMMAND \fI\,'ahriman package\-add'\/\fR
usage: ahriman package\-add [\-h] [\-\-changes | \-\-no\-changes] [\-\-dependencies | \-\-no\-dependencies] [\-e] usage: ahriman package\-add [\-h] [\-\-changes | \-\-no\-changes] [\-\-dependencies | \-\-no\-dependencies] [\-e]
[\-\-increment | \-\-no\-increment] [\-n] [\-y] [\-\-increment | \-\-no\-increment] [\-n] [\-s {auto,archive,aur,directory,local,remote,repository}]
[\-s {auto,archive,aur,directory,local,remote,repository}] [\-u USERNAME] [\-v VARIABLE] [\-u USERNAME] [\-v VARIABLE] [\-y]
package [package ...] package [package ...]
add existing or new package to the build queue add existing or new package to the build queue
@@ -289,10 +307,6 @@ increment package release (pkgrel) version on duplicate
\fB\-n\fR, \fB\-\-now\fR \fB\-n\fR, \fB\-\-now\fR
run update function after run update function after
.TP
\fB\-y\fR, \fB\-\-refresh\fR
download fresh package databases from the mirror before actions, \-yy to force refresh even if up to date
.TP .TP
\fB\-s\fR \fI\,{auto,archive,aur,directory,local,remote,repository}\/\fR, \fB\-\-source\fR \fI\,{auto,archive,aur,directory,local,remote,repository}\/\fR \fB\-s\fR \fI\,{auto,archive,aur,directory,local,remote,repository}\/\fR, \fB\-\-source\fR \fI\,{auto,archive,aur,directory,local,remote,repository}\/\fR
explicitly specify the package source for this command explicitly specify the package source for this command
@@ -305,8 +319,30 @@ build as user
\fB\-v\fR \fI\,VARIABLE\/\fR, \fB\-\-variable\fR \fI\,VARIABLE\/\fR \fB\-v\fR \fI\,VARIABLE\/\fR, \fB\-\-variable\fR \fI\,VARIABLE\/\fR
apply specified makepkg variables to the next build apply specified makepkg variables to the next build
.TP
\fB\-y\fR, \fB\-\-refresh\fR
download fresh package databases from the mirror before actions, \-yy to force refresh even if up to date
.SH COMMAND \fI\,'ahriman package\-archives'\/\fR
usage: ahriman package\-archives [\-h] [\-e] [\-\-info | \-\-no\-info] package
list available archive versions for the package
.TP
\fBpackage\fR
package base
.SH OPTIONS \fI\,'ahriman package\-archives'\/\fR
.TP
\fB\-e\fR, \fB\-\-exit\-code\fR
return non\-zero exit status if result is empty
.TP
\fB\-\-info\fR, \fB\-\-no\-info\fR
show additional package information
.SH COMMAND \fI\,'ahriman package\-changes'\/\fR .SH COMMAND \fI\,'ahriman package\-changes'\/\fR
usage: ahriman package\-changes [\-h] [\-e] package usage: ahriman package\-changes [\-h] [\-e] package
retrieve package changes stored in database retrieve package changes stored in database
@@ -320,7 +356,7 @@ package base
return non\-zero exit status if result is empty return non\-zero exit status if result is empty
.SH COMMAND \fI\,'ahriman package\-changes\-remove'\/\fR .SH COMMAND \fI\,'ahriman package\-changes\-remove'\/\fR
usage: ahriman package\-changes\-remove [\-h] package usage: ahriman package\-changes\-remove [\-h] package
remove the package changes stored remotely remove the package changes stored remotely
@@ -329,7 +365,7 @@ remove the package changes stored remotely
package base package base
.SH COMMAND \fI\,'ahriman package\-copy'\/\fR .SH COMMAND \fI\,'ahriman package\-copy'\/\fR
usage: ahriman package\-copy [\-h] [\-e] [\-\-remove] source package [package ...] usage: ahriman package\-copy [\-h] [\-e] [\-\-remove] source package [package ...]
copy package and its metadata from another repository copy package and its metadata from another repository
@@ -350,8 +386,40 @@ return non\-zero exit status if result is empty
\fB\-\-remove\fR \fB\-\-remove\fR
remove package from the source repository after remove package from the source repository after
.SH COMMAND \fI\,'ahriman package\-hold'\/\fR
usage: ahriman package\-hold [\-h] package [package ...]
hold package from automatic updates
.TP
\fBpackage\fR
package base
.SH COMMAND \fI\,'ahriman package\-pkgbuild'\/\fR
usage: ahriman package\-pkgbuild [\-h] [\-e] package
retrieve package PKGBUILD stored in database
.TP
\fBpackage\fR
package base
.SH OPTIONS \fI\,'ahriman package\-pkgbuild'\/\fR
.TP
\fB\-e\fR, \fB\-\-exit\-code\fR
return non\-zero exit status if result is empty
.SH COMMAND \fI\,'ahriman package\-pkgbuild\-remove'\/\fR
usage: ahriman package\-pkgbuild\-remove [\-h] package
remove the package PKGBUILD stored remotely
.TP
\fBpackage\fR
package base
.SH COMMAND \fI\,'ahriman package\-remove'\/\fR .SH COMMAND \fI\,'ahriman package\-remove'\/\fR
usage: ahriman package\-remove [\-h] package [package ...] usage: ahriman package\-remove [\-h] package [package ...]
remove package from the repository remove package from the repository
@@ -359,9 +427,31 @@ remove package from the repository
\fBpackage\fR \fBpackage\fR
package name or base package name or base
.SH COMMAND \fI\,'ahriman package\-rollback'\/\fR
usage: ahriman package\-rollback [\-h] [\-\-hold | \-\-no\-hold] [\-u USERNAME] package version
rollback package to specified version from archives
.TP
\fBpackage\fR
package base
.TP
\fBversion\fR
package version
.SH OPTIONS \fI\,'ahriman package\-rollback'\/\fR
.TP
\fB\-\-hold\fR, \fB\-\-no\-hold\fR
hold package afterwards
.TP
\fB\-u\fR \fI\,USERNAME\/\fR, \fB\-\-username\fR \fI\,USERNAME\/\fR
build as user
.SH COMMAND \fI\,'ahriman package\-status'\/\fR .SH COMMAND \fI\,'ahriman package\-status'\/\fR
usage: ahriman package\-status [\-h] [\-\-ahriman] [\-e] [\-\-info | \-\-no\-info] [\-s {unknown,pending,building,failed,success}] usage: ahriman package\-status [\-h] [\-\-ahriman] [\-e] [\-\-info | \-\-no\-info] [\-s {unknown,pending,building,failed,success}]
[package ...] [package ...]
request status of the package request status of the package
@@ -387,7 +477,7 @@ show additional package information
filter packages by status filter packages by status
.SH COMMAND \fI\,'ahriman package\-status\-remove'\/\fR .SH COMMAND \fI\,'ahriman package\-status\-remove'\/\fR
usage: ahriman package\-status\-remove [\-h] package [package ...] usage: ahriman package\-status\-remove [\-h] package [package ...]
remove the package from the status page remove the package from the status page
@@ -396,7 +486,7 @@ remove the package from the status page
remove specified packages from status page remove specified packages from status page
.SH COMMAND \fI\,'ahriman package\-status\-update'\/\fR .SH COMMAND \fI\,'ahriman package\-status\-update'\/\fR
usage: ahriman package\-status\-update [\-h] [\-s {unknown,pending,building,failed,success}] [package ...] usage: ahriman package\-status\-update [\-h] [\-s {unknown,pending,building,failed,success}] [package ...]
update package status on the status page update package status on the status page
@@ -409,8 +499,17 @@ set status for specified packages. If no packages supplied, service status will
\fB\-s\fR \fI\,{unknown,pending,building,failed,success}\/\fR, \fB\-\-status\fR \fI\,{unknown,pending,building,failed,success}\/\fR \fB\-s\fR \fI\,{unknown,pending,building,failed,success}\/\fR, \fB\-\-status\fR \fI\,{unknown,pending,building,failed,success}\/\fR
new package build status new package build status
.SH COMMAND \fI\,'ahriman package\-unhold'\/\fR
usage: ahriman package\-unhold [\-h] package [package ...]
remove package hold, allowing automatic updates
.TP
\fBpackage\fR
package base
.SH COMMAND \fI\,'ahriman patch\-add'\/\fR .SH COMMAND \fI\,'ahriman patch\-add'\/\fR
usage: ahriman patch\-add [\-h] package variable [patch] usage: ahriman patch\-add [\-h] package variable [patch]
create or update patched PKGBUILD function or variable create or update patched PKGBUILD function or variable
@@ -427,7 +526,7 @@ PKGBUILD variable or function name. If variable is a function, it must end with
path to file which contains function or variable value. If not set, the value will be read from stdin path to file which contains function or variable value. If not set, the value will be read from stdin
.SH COMMAND \fI\,'ahriman patch\-list'\/\fR .SH COMMAND \fI\,'ahriman patch\-list'\/\fR
usage: ahriman patch\-list [\-h] [\-e] [\-v VARIABLE] package usage: ahriman patch\-list [\-h] [\-e] [\-v VARIABLE] package
list available patches for the package list available patches for the package
@@ -445,7 +544,7 @@ return non\-zero exit status if result is empty
if set, show only patches for specified PKGBUILD variables if set, show only patches for specified PKGBUILD variables
.SH COMMAND \fI\,'ahriman patch\-remove'\/\fR .SH COMMAND \fI\,'ahriman patch\-remove'\/\fR
usage: ahriman patch\-remove [\-h] [\-v VARIABLE] package usage: ahriman patch\-remove [\-h] [\-v VARIABLE] package
remove patches for the package remove patches for the package
@@ -460,7 +559,7 @@ should be used for single\-function patches in case if you wold like to remove o
if not set, it will remove all patches related to the package if not set, it will remove all patches related to the package
.SH COMMAND \fI\,'ahriman patch\-set\-add'\/\fR .SH COMMAND \fI\,'ahriman patch\-set\-add'\/\fR
usage: ahriman patch\-set\-add [\-h] [\-t TRACK] package usage: ahriman patch\-set\-add [\-h] [\-t TRACK] package
create or update source patches create or update source patches
@@ -474,7 +573,7 @@ path to directory with changed files for patch addition/update
files which has to be tracked files which has to be tracked
.SH COMMAND \fI\,'ahriman repo\-backup'\/\fR .SH COMMAND \fI\,'ahriman repo\-backup'\/\fR
usage: ahriman repo\-backup [\-h] path usage: ahriman repo\-backup [\-h] path
backup repository settings and database backup repository settings and database
@@ -483,9 +582,9 @@ backup repository settings and database
path of the output archive path of the output archive
.SH COMMAND \fI\,'ahriman repo\-check'\/\fR .SH COMMAND \fI\,'ahriman repo\-check'\/\fR
usage: ahriman repo\-check [\-h] [\-\-changes | \-\-no\-changes] [\-\-check\-files | \-\-no\-check\-files] [\-e] [\-\-vcs | \-\-no\-vcs] usage: ahriman repo\-check [\-h] [\-\-changes | \-\-no\-changes] [\-\-check\-files | \-\-no\-check\-files] [\-e] [\-\-vcs | \-\-no\-vcs]
[\-y] [\-y]
[package ...] [package ...]
check for packages updates. Same as repo\-update \-\-dry\-run \-\-no\-manual check for packages updates. Same as repo\-update \-\-dry\-run \-\-no\-manual
@@ -515,20 +614,20 @@ fetch actual version of VCS packages
download fresh package databases from the mirror before actions, \-yy to force refresh even if up to date download fresh package databases from the mirror before actions, \-yy to force refresh even if up to date
.SH COMMAND \fI\,'ahriman repo\-create\-keyring'\/\fR .SH COMMAND \fI\,'ahriman repo\-create\-keyring'\/\fR
usage: ahriman repo\-create\-keyring [\-h] usage: ahriman repo\-create\-keyring [\-h]
create package which contains list of trusted keys as set by configuration. Note, that this action will only create package, the package itself has to be built manually create package which contains list of trusted keys as set by configuration. Note, that this action will only create package, the package itself has to be built manually
.SH COMMAND \fI\,'ahriman repo\-create\-mirrorlist'\/\fR .SH COMMAND \fI\,'ahriman repo\-create\-mirrorlist'\/\fR
usage: ahriman repo\-create\-mirrorlist [\-h] usage: ahriman repo\-create\-mirrorlist [\-h]
create package which contains list of available mirrors as set by configuration. Note, that this action will only create package, the package itself has to be built manually create package which contains list of available mirrors as set by configuration. Note, that this action will only create package, the package itself has to be built manually
.SH COMMAND \fI\,'ahriman repo\-daemon'\/\fR .SH COMMAND \fI\,'ahriman repo\-daemon'\/\fR
usage: ahriman repo\-daemon [\-h] [\-i INTERVAL] [\-\-aur | \-\-no\-aur] [\-\-changes | \-\-no\-changes] usage: ahriman repo\-daemon [\-h] [\-i INTERVAL] [\-\-aur | \-\-no\-aur] [\-\-changes | \-\-no\-changes]
[\-\-check\-files | \-\-no\-check\-files] [\-\-dependencies | \-\-no\-dependencies] [\-\-dry\-run] [\-\-check\-files | \-\-no\-check\-files] [\-\-dependencies | \-\-no\-dependencies] [\-\-dry\-run]
[\-\-increment | \-\-no\-increment] [\-\-local | \-\-no\-local] [\-\-manual | \-\-no\-manual] [\-\-increment | \-\-no\-increment] [\-\-local | \-\-no\-local] [\-\-manual | \-\-no\-manual]
[\-\-partitions | \-\-no\-partitions] [\-u USERNAME] [\-\-vcs | \-\-no\-vcs] [\-y] [\-\-partitions | \-\-no\-partitions] [\-u USERNAME] [\-\-vcs | \-\-no\-vcs] [\-y]
start process which periodically will run update process start process which periodically will run update process
@@ -586,8 +685,8 @@ fetch actual version of VCS packages
download fresh package databases from the mirror before actions, \-yy to force refresh even if up to date download fresh package databases from the mirror before actions, \-yy to force refresh even if up to date
.SH COMMAND \fI\,'ahriman repo\-rebuild'\/\fR .SH COMMAND \fI\,'ahriman repo\-rebuild'\/\fR
usage: ahriman repo\-rebuild [\-h] [\-\-depends\-on DEPENDS_ON] [\-\-dry\-run] [\-\-from\-database] [\-\-increment | \-\-no\-increment] usage: ahriman repo\-rebuild [\-h] [\-\-depends\-on DEPENDS_ON] [\-\-dry\-run] [\-\-from\-database] [\-\-increment | \-\-no\-increment]
[\-e] [\-s {unknown,pending,building,failed,success}] [\-u USERNAME] [\-e] [\-s {unknown,pending,building,failed,success}] [\-u USERNAME]
force rebuild whole repository force rebuild whole repository
@@ -623,7 +722,7 @@ filter packages by status. Requires \-\-from\-database to be set
build as user build as user
.SH COMMAND \fI\,'ahriman repo\-remove\-unknown'\/\fR .SH COMMAND \fI\,'ahriman repo\-remove\-unknown'\/\fR
usage: ahriman repo\-remove\-unknown [\-h] [\-\-dry\-run] usage: ahriman repo\-remove\-unknown [\-h] [\-\-dry\-run]
remove packages which are missing in AUR and do not have local PKGBUILDs remove packages which are missing in AUR and do not have local PKGBUILDs
@@ -633,12 +732,12 @@ remove packages which are missing in AUR and do not have local PKGBUILDs
just perform check for packages without removal just perform check for packages without removal
.SH COMMAND \fI\,'ahriman repo\-report'\/\fR .SH COMMAND \fI\,'ahriman repo\-report'\/\fR
usage: ahriman repo\-report [\-h] usage: ahriman repo\-report [\-h]
generate repository report according to current settings generate repository report according to current settings
.SH COMMAND \fI\,'ahriman repo\-restore'\/\fR .SH COMMAND \fI\,'ahriman repo\-restore'\/\fR
usage: ahriman repo\-restore [\-h] [\-o OUTPUT] path usage: ahriman repo\-restore [\-h] [\-o OUTPUT] path
restore settings and database restore settings and database
@@ -652,7 +751,7 @@ path of the input archive
root path of the extracted files root path of the extracted files
.SH COMMAND \fI\,'ahriman repo\-sign'\/\fR .SH COMMAND \fI\,'ahriman repo\-sign'\/\fR
usage: ahriman repo\-sign [\-h] [package ...] usage: ahriman repo\-sign [\-h] [package ...]
(re\-)sign packages and repository database according to current settings (re\-)sign packages and repository database according to current settings
@@ -661,10 +760,10 @@ root path of the extracted files
sign only specified packages sign only specified packages
.SH COMMAND \fI\,'ahriman repo\-statistics'\/\fR .SH COMMAND \fI\,'ahriman repo\-statistics'\/\fR
usage: ahriman repo\-statistics [\-h] [\-\-chart CHART] usage: ahriman repo\-statistics [\-h] [\-\-chart CHART]
[\-e {package\-outdated,package\-removed,package\-update\-failed,package\-updated}] [\-e {build\-log,package\-held,package\-outdated,package\-removed,package\-status\-changed,package\-update\-failed,package\-updated,service\-status\-changed}]
[\-\-from\-date FROM_DATE] [\-\-limit LIMIT] [\-\-offset OFFSET] [\-\-to\-date TO_DATE] [\-\-from\-date FROM_DATE] [\-\-limit LIMIT] [\-\-offset OFFSET] [\-\-to\-date TO_DATE]
[package] [package]
fetch repository statistics fetch repository statistics
@@ -678,7 +777,7 @@ fetch only events for the specified package
create updates chart and save it to the specified path create updates chart and save it to the specified path
.TP .TP
\fB\-e\fR \fI\,{package\-outdated,package\-removed,package\-update\-failed,package\-updated}\/\fR, \fB\-\-event\fR \fI\,{package\-outdated,package\-removed,package\-update\-failed,package\-updated}\/\fR \fB\-e\fR \fI\,{build\-log,package\-held,package\-outdated,package\-removed,package\-status\-changed,package\-update\-failed,package\-updated,service\-status\-changed}\/\fR, \fB\-\-event\fR \fI\,{build\-log,package\-held,package\-outdated,package\-removed,package\-status\-changed,package\-update\-failed,package\-updated,service\-status\-changed}\/\fR
event type filter event type filter
.TP .TP
@@ -698,7 +797,7 @@ skip specified amount of events
only fetch events which are older than the date only fetch events which are older than the date
.SH COMMAND \fI\,'ahriman repo\-status\-update'\/\fR .SH COMMAND \fI\,'ahriman repo\-status\-update'\/\fR
usage: ahriman repo\-status\-update [\-h] [\-s {unknown,pending,building,failed,success}] usage: ahriman repo\-status\-update [\-h] [\-s {unknown,pending,building,failed,success}]
update repository status on the status page update repository status on the status page
@@ -708,12 +807,12 @@ update repository status on the status page
new status new status
.SH COMMAND \fI\,'ahriman repo\-sync'\/\fR .SH COMMAND \fI\,'ahriman repo\-sync'\/\fR
usage: ahriman repo\-sync [\-h] usage: ahriman repo\-sync [\-h]
sync repository files to remote server according to current settings sync repository files to remote server according to current settings
.SH COMMAND \fI\,'ahriman repo\-tree'\/\fR .SH COMMAND \fI\,'ahriman repo\-tree'\/\fR
usage: ahriman repo\-tree [\-h] [\-p PARTITIONS] usage: ahriman repo\-tree [\-h] [\-p PARTITIONS]
dump repository tree based on packages dependencies dump repository tree based on packages dependencies
@@ -723,7 +822,7 @@ dump repository tree based on packages dependencies
also divide packages by independent partitions also divide packages by independent partitions
.SH COMMAND \fI\,'ahriman repo\-triggers'\/\fR .SH COMMAND \fI\,'ahriman repo\-triggers'\/\fR
usage: ahriman repo\-triggers [\-h] [trigger ...] usage: ahriman repo\-triggers [\-h] [trigger ...]
run triggers on empty build result as configured by settings run triggers on empty build result as configured by settings
@@ -732,10 +831,10 @@ run triggers on empty build result as configured by settings
instead of running all triggers as set by configuration, just process specified ones in order of mention instead of running all triggers as set by configuration, just process specified ones in order of mention
.SH COMMAND \fI\,'ahriman repo\-update'\/\fR .SH COMMAND \fI\,'ahriman repo\-update'\/\fR
usage: ahriman repo\-update [\-h] [\-\-aur | \-\-no\-aur] [\-\-changes | \-\-no\-changes] [\-\-check\-files | \-\-no\-check\-files] usage: ahriman repo\-update [\-h] [\-\-aur | \-\-no\-aur] [\-\-changes | \-\-no\-changes] [\-\-check\-files | \-\-no\-check\-files]
[\-\-dependencies | \-\-no\-dependencies] [\-\-dry\-run] [\-e] [\-\-increment | \-\-no\-increment] [\-\-dependencies | \-\-no\-dependencies] [\-\-dry\-run] [\-e] [\-\-increment | \-\-no\-increment]
[\-\-local | \-\-no\-local] [\-\-manual | \-\-no\-manual] [\-u USERNAME] [\-\-vcs | \-\-no\-vcs] [\-y] [\-\-local | \-\-no\-local] [\-\-manual | \-\-no\-manual] [\-u USERNAME] [\-\-vcs | \-\-no\-vcs] [\-y]
[package ...] [package ...]
check for packages updates and run build process if requested check for packages updates and run build process if requested
@@ -793,8 +892,8 @@ fetch actual version of VCS packages
download fresh package databases from the mirror before actions, \-yy to force refresh even if up to date download fresh package databases from the mirror before actions, \-yy to force refresh even if up to date
.SH COMMAND \fI\,'ahriman service\-clean'\/\fR .SH COMMAND \fI\,'ahriman service\-clean'\/\fR
usage: ahriman service\-clean [\-h] [\-\-cache | \-\-no\-cache] [\-\-chroot | \-\-no\-chroot] [\-\-manual | \-\-no\-manual] usage: ahriman service\-clean [\-h] [\-\-cache | \-\-no\-cache] [\-\-chroot | \-\-no\-chroot] [\-\-manual | \-\-no\-manual]
[\-\-packages | \-\-no\-packages] [\-\-pacman | \-\-no\-pacman] [\-\-packages | \-\-no\-packages] [\-\-pacman | \-\-no\-pacman]
remove local caches remove local caches
@@ -820,7 +919,7 @@ clear directory with built packages
clear directory with pacman local database cache clear directory with pacman local database cache
.SH COMMAND \fI\,'ahriman service\-config'\/\fR .SH COMMAND \fI\,'ahriman service\-config'\/\fR
usage: ahriman service\-config [\-h] [\-\-info | \-\-no\-info] [\-\-secure | \-\-no\-secure] [section] [key] usage: ahriman service\-config [\-h] [\-\-info | \-\-no\-info] [\-\-secure | \-\-no\-secure] [section] [key]
dump configuration for the specified architecture dump configuration for the specified architecture
@@ -842,7 +941,7 @@ show additional information, e.g. configuration files
hide passwords and secrets from output hide passwords and secrets from output
.SH COMMAND \fI\,'ahriman service\-config\-validate'\/\fR .SH COMMAND \fI\,'ahriman service\-config\-validate'\/\fR
usage: ahriman service\-config\-validate [\-h] [\-e] usage: ahriman service\-config\-validate [\-h] [\-e]
validate configuration and print found errors validate configuration and print found errors
@@ -852,7 +951,7 @@ validate configuration and print found errors
return non\-zero exit status if configuration is invalid return non\-zero exit status if configuration is invalid
.SH COMMAND \fI\,'ahriman service\-key\-import'\/\fR .SH COMMAND \fI\,'ahriman service\-key\-import'\/\fR
usage: ahriman service\-key\-import [\-h] [\-\-key\-server KEY_SERVER] key usage: ahriman service\-key\-import [\-h] [\-\-key\-server KEY_SERVER] key
import PGP key from public sources to the repository user import PGP key from public sources to the repository user
@@ -866,7 +965,7 @@ PGP key to import from public server
key server for key import key server for key import
.SH COMMAND \fI\,'ahriman service\-repositories'\/\fR .SH COMMAND \fI\,'ahriman service\-repositories'\/\fR
usage: ahriman service\-repositories [\-h] [\-\-id\-only | \-\-no\-id\-only] usage: ahriman service\-repositories [\-h] [\-\-id\-only | \-\-no\-id\-only]
list all available repositories list all available repositories
@@ -876,7 +975,7 @@ list all available repositories
show machine readable identifier instead show machine readable identifier instead
.SH COMMAND \fI\,'ahriman service\-run'\/\fR .SH COMMAND \fI\,'ahriman service\-run'\/\fR
usage: ahriman service\-run [\-h] command [command ...] usage: ahriman service\-run [\-h] command [command ...]
run multiple commands on success run of the previous command run multiple commands on success run of the previous command
@@ -885,11 +984,11 @@ run multiple commands on success run of the previous command
command to be run (quoted) without ``ahriman`` command to be run (quoted) without ``ahriman``
.SH COMMAND \fI\,'ahriman service\-setup'\/\fR .SH COMMAND \fI\,'ahriman service\-setup'\/\fR
usage: ahriman service\-setup [\-h] [\-\-build\-as\-user BUILD_AS_USER] [\-\-from\-configuration FROM_CONFIGURATION] usage: ahriman service\-setup [\-h] [\-\-build\-as\-user BUILD_AS_USER] [\-\-from\-configuration FROM_CONFIGURATION]
[\-\-generate\-salt | \-\-no\-generate\-salt] [\-\-makeflags\-jobs | \-\-no\-makeflags\-jobs] [\-\-generate\-salt | \-\-no\-generate\-salt] [\-\-makeflags\-jobs | \-\-no\-makeflags\-jobs]
[\-\-mirror MIRROR] [\-\-multilib | \-\-no\-multilib] \-\-packager PACKAGER [\-\-server SERVER] [\-\-mirror MIRROR] [\-\-multilib | \-\-no\-multilib] \-\-packager PACKAGER [\-\-server SERVER]
[\-\-sign\-key SIGN_KEY] [\-\-sign\-target {disabled,packages,repository}] [\-\-web\-port WEB_PORT] [\-\-sign\-key SIGN_KEY] [\-\-sign\-target {disabled,packages,repository}] [\-\-web\-port WEB_PORT]
[\-\-web\-unix\-socket WEB_UNIX_SOCKET] [\-\-web\-unix\-socket WEB_UNIX_SOCKET]
create initial service configuration, requires root create initial service configuration, requires root
@@ -943,7 +1042,7 @@ port of the web service
path to unix socket used for interprocess communications path to unix socket used for interprocess communications
.SH COMMAND \fI\,'ahriman service\-shell'\/\fR .SH COMMAND \fI\,'ahriman service\-shell'\/\fR
usage: ahriman service\-shell [\-h] [\-o OUTPUT] [code] usage: ahriman service\-shell [\-h] [\-o OUTPUT] [code]
drop into python shell drop into python shell
@@ -957,13 +1056,13 @@ instead of dropping into shell, just execute the specified code
output commands and result to the file output commands and result to the file
.SH COMMAND \fI\,'ahriman service\-tree\-migrate'\/\fR .SH COMMAND \fI\,'ahriman service\-tree\-migrate'\/\fR
usage: ahriman service\-tree\-migrate [\-h] usage: ahriman service\-tree\-migrate [\-h]
migrate repository tree between versions migrate repository tree between versions
.SH COMMAND \fI\,'ahriman user\-add'\/\fR .SH COMMAND \fI\,'ahriman user\-add'\/\fR
usage: ahriman user\-add [\-h] [\-\-key KEY] [\-\-packager PACKAGER] [\-p PASSWORD] [\-R {unauthorized,read,reporter,full}] usage: ahriman user\-add [\-h] [\-\-key KEY] [\-\-packager PACKAGER] [\-p PASSWORD] [\-R {unauthorized,read,reporter,full}]
username username
update user for web services with the given password and role. In case if password was not entered it will be asked interactively update user for web services with the given password and role. In case if password was not entered it will be asked interactively
@@ -990,7 +1089,7 @@ authorization type.
user access level user access level
.SH COMMAND \fI\,'ahriman user\-list'\/\fR .SH COMMAND \fI\,'ahriman user\-list'\/\fR
usage: ahriman user\-list [\-h] [\-e] [\-R {unauthorized,read,reporter,full}] [username] usage: ahriman user\-list [\-h] [\-e] [\-R {unauthorized,read,reporter,full}] [username]
list users from the user mapping and their roles list users from the user mapping and their roles
@@ -1008,7 +1107,7 @@ return non\-zero exit status if result is empty
filter users by role filter users by role
.SH COMMAND \fI\,'ahriman user\-remove'\/\fR .SH COMMAND \fI\,'ahriman user\-remove'\/\fR
usage: ahriman user\-remove [\-h] username usage: ahriman user\-remove [\-h] username
remove user from the user mapping and update the configuration remove user from the user mapping and update the configuration
@@ -1017,12 +1116,12 @@ remove user from the user mapping and update the configuration
username for web service username for web service
.SH COMMAND \fI\,'ahriman web'\/\fR .SH COMMAND \fI\,'ahriman web'\/\fR
usage: ahriman web [\-h] usage: ahriman web [\-h]
start web server start web server
.SH COMMAND \fI\,'ahriman web\-reload'\/\fR .SH COMMAND \fI\,'ahriman web\-reload'\/\fR
usage: ahriman web\-reload [\-h] usage: ahriman web\-reload [\-h]
reload web server configuration reload web server configuration
@@ -20,13 +20,19 @@ _shtab_ahriman_commands() {
"init:create initial service configuration, requires root" "init:create initial service configuration, requires root"
"key-import:import PGP key from public sources to the repository user" "key-import:import PGP key from public sources to the repository user"
"package-add:add existing or new package to the build queue" "package-add:add existing or new package to the build queue"
"package-archives:list available archive versions for the package"
"package-changes:retrieve package changes stored in database" "package-changes:retrieve package changes stored in database"
"package-changes-remove:remove the package changes stored remotely" "package-changes-remove:remove the package changes stored remotely"
"package-copy:copy package and its metadata from another repository" "package-copy:copy package and its metadata from another repository"
"package-hold:hold package from automatic updates"
"package-pkgbuild:retrieve package PKGBUILD stored in database"
"package-pkgbuild-remove:remove the package PKGBUILD stored remotely"
"package-remove:remove package from the repository" "package-remove:remove package from the repository"
"package-rollback:rollback package to specified version from archives"
"package-status:request status of the package" "package-status:request status of the package"
"package-status-remove:remove the package from the status page" "package-status-remove:remove the package from the status page"
"package-status-update:update package status on the status page" "package-status-update:update package status on the status page"
"package-unhold:remove package hold, allowing automatic updates"
"package-update:add existing or new package to the build queue" "package-update:add existing or new package to the build queue"
"patch-add:create or update patched PKGBUILD function or variable" "patch-add:create or update patched PKGBUILD function or variable"
"patch-list:list available patches for the package" "patch-list:list available patches for the package"
@@ -110,10 +116,10 @@ _shtab_ahriman_add_options=(
{-e,--exit-code}"[return non-zero exit status if result is empty (default\: False)]" {-e,--exit-code}"[return non-zero exit status if result is empty (default\: False)]"
{--increment,--no-increment}"[increment package release (pkgrel) version on duplicate (default\: True)]:increment:" {--increment,--no-increment}"[increment package release (pkgrel) version on duplicate (default\: True)]:increment:"
{-n,--now}"[run update function after (default\: False)]" {-n,--now}"[run update function after (default\: False)]"
"*"{-y,--refresh}"[download fresh package databases from the mirror before actions, -yy to force refresh even if up to date (default\: False)]"
{-s,--source}"[explicitly specify the package source for this command (default\: auto)]:source:(auto archive aur directory local remote repository)" {-s,--source}"[explicitly specify the package source for this command (default\: auto)]:source:(auto archive aur directory local remote repository)"
{-u,--username}"[build as user (default\: None)]:username:" {-u,--username}"[build as user (default\: None)]:username:"
"*"{-v,--variable}"[apply specified makepkg variables to the next build (default\: None)]:variable:" "*"{-v,--variable}"[apply specified makepkg variables to the next build (default\: None)]:variable:"
"*"{-y,--refresh}"[download fresh package databases from the mirror before actions, -yy to force refresh even if up to date (default\: False)]"
"(*):package source (base name, path to local files, remote URL):" "(*):package source (base name, path to local files, remote URL):"
) )
@@ -272,16 +278,26 @@ _shtab_ahriman_package_add_options=(
{-e,--exit-code}"[return non-zero exit status if result is empty (default\: False)]" {-e,--exit-code}"[return non-zero exit status if result is empty (default\: False)]"
{--increment,--no-increment}"[increment package release (pkgrel) version on duplicate (default\: True)]:increment:" {--increment,--no-increment}"[increment package release (pkgrel) version on duplicate (default\: True)]:increment:"
{-n,--now}"[run update function after (default\: False)]" {-n,--now}"[run update function after (default\: False)]"
"*"{-y,--refresh}"[download fresh package databases from the mirror before actions, -yy to force refresh even if up to date (default\: False)]"
{-s,--source}"[explicitly specify the package source for this command (default\: auto)]:source:(auto archive aur directory local remote repository)" {-s,--source}"[explicitly specify the package source for this command (default\: auto)]:source:(auto archive aur directory local remote repository)"
{-u,--username}"[build as user (default\: None)]:username:" {-u,--username}"[build as user (default\: None)]:username:"
"*"{-v,--variable}"[apply specified makepkg variables to the next build (default\: None)]:variable:" "*"{-v,--variable}"[apply specified makepkg variables to the next build (default\: None)]:variable:"
"*"{-y,--refresh}"[download fresh package databases from the mirror before actions, -yy to force refresh even if up to date (default\: False)]"
"(*):package source (base name, path to local files, remote URL):" "(*):package source (base name, path to local files, remote URL):"
) )
# guard to ensure default positional specs are added only once per session # guard to ensure default positional specs are added only once per session
_shtab_ahriman_package_add_defaults_added=0 _shtab_ahriman_package_add_defaults_added=0
_shtab_ahriman_package_archives_options=(
"(- : *)"{-h,--help}"[show this help message and exit]"
{-e,--exit-code}"[return non-zero exit status if result is empty (default\: False)]"
{--info,--no-info}"[show additional package information (default\: False)]:info:"
":package base:"
)
# guard to ensure default positional specs are added only once per session
_shtab_ahriman_package_archives_defaults_added=0
_shtab_ahriman_package_changes_options=( _shtab_ahriman_package_changes_options=(
"(- : *)"{-h,--help}"[show this help message and exit]" "(- : *)"{-h,--help}"[show this help message and exit]"
{-e,--exit-code}"[return non-zero exit status if result is empty (default\: False)]" {-e,--exit-code}"[return non-zero exit status if result is empty (default\: False)]"
@@ -310,6 +326,31 @@ _shtab_ahriman_package_copy_options=(
# guard to ensure default positional specs are added only once per session # guard to ensure default positional specs are added only once per session
_shtab_ahriman_package_copy_defaults_added=0 _shtab_ahriman_package_copy_defaults_added=0
_shtab_ahriman_package_hold_options=(
"(- : *)"{-h,--help}"[show this help message and exit]"
"(*):package base:"
)
# guard to ensure default positional specs are added only once per session
_shtab_ahriman_package_hold_defaults_added=0
_shtab_ahriman_package_pkgbuild_options=(
"(- : *)"{-h,--help}"[show this help message and exit]"
{-e,--exit-code}"[return non-zero exit status if result is empty (default\: False)]"
":package base:"
)
# guard to ensure default positional specs are added only once per session
_shtab_ahriman_package_pkgbuild_defaults_added=0
_shtab_ahriman_package_pkgbuild_remove_options=(
"(- : *)"{-h,--help}"[show this help message and exit]"
":package base:"
)
# guard to ensure default positional specs are added only once per session
_shtab_ahriman_package_pkgbuild_remove_defaults_added=0
_shtab_ahriman_package_remove_options=( _shtab_ahriman_package_remove_options=(
"(- : *)"{-h,--help}"[show this help message and exit]" "(- : *)"{-h,--help}"[show this help message and exit]"
"(*):package name or base:" "(*):package name or base:"
@@ -318,6 +359,17 @@ _shtab_ahriman_package_remove_options=(
# guard to ensure default positional specs are added only once per session # guard to ensure default positional specs are added only once per session
_shtab_ahriman_package_remove_defaults_added=0 _shtab_ahriman_package_remove_defaults_added=0
_shtab_ahriman_package_rollback_options=(
"(- : *)"{-h,--help}"[show this help message and exit]"
{--hold,--no-hold}"[hold package afterwards (default\: True)]:hold:"
{-u,--username}"[build as user (default\: None)]:username:"
":package base:"
":package version:"
)
# guard to ensure default positional specs are added only once per session
_shtab_ahriman_package_rollback_defaults_added=0
_shtab_ahriman_package_status_options=( _shtab_ahriman_package_status_options=(
"(- : *)"{-h,--help}"[show this help message and exit]" "(- : *)"{-h,--help}"[show this help message and exit]"
"--ahriman[get service status itself (default\: False)]" "--ahriman[get service status itself (default\: False)]"
@@ -347,6 +399,14 @@ _shtab_ahriman_package_status_update_options=(
# guard to ensure default positional specs are added only once per session # guard to ensure default positional specs are added only once per session
_shtab_ahriman_package_status_update_defaults_added=0 _shtab_ahriman_package_status_update_defaults_added=0
_shtab_ahriman_package_unhold_options=(
"(- : *)"{-h,--help}"[show this help message and exit]"
"(*):package base:"
)
# guard to ensure default positional specs are added only once per session
_shtab_ahriman_package_unhold_defaults_added=0
_shtab_ahriman_package_update_options=( _shtab_ahriman_package_update_options=(
"(- : *)"{-h,--help}"[show this help message and exit]" "(- : *)"{-h,--help}"[show this help message and exit]"
{--changes,--no-changes}"[calculate changes from the latest known commit if available (default\: True)]:changes:" {--changes,--no-changes}"[calculate changes from the latest known commit if available (default\: True)]:changes:"
@@ -354,10 +414,10 @@ _shtab_ahriman_package_update_options=(
{-e,--exit-code}"[return non-zero exit status if result is empty (default\: False)]" {-e,--exit-code}"[return non-zero exit status if result is empty (default\: False)]"
{--increment,--no-increment}"[increment package release (pkgrel) version on duplicate (default\: True)]:increment:" {--increment,--no-increment}"[increment package release (pkgrel) version on duplicate (default\: True)]:increment:"
{-n,--now}"[run update function after (default\: False)]" {-n,--now}"[run update function after (default\: False)]"
"*"{-y,--refresh}"[download fresh package databases from the mirror before actions, -yy to force refresh even if up to date (default\: False)]"
{-s,--source}"[explicitly specify the package source for this command (default\: auto)]:source:(auto archive aur directory local remote repository)" {-s,--source}"[explicitly specify the package source for this command (default\: auto)]:source:(auto archive aur directory local remote repository)"
{-u,--username}"[build as user (default\: None)]:username:" {-u,--username}"[build as user (default\: None)]:username:"
"*"{-v,--variable}"[apply specified makepkg variables to the next build (default\: None)]:variable:" "*"{-v,--variable}"[apply specified makepkg variables to the next build (default\: None)]:variable:"
"*"{-y,--refresh}"[download fresh package databases from the mirror before actions, -yy to force refresh even if up to date (default\: False)]"
"(*):package source (base name, path to local files, remote URL):" "(*):package source (base name, path to local files, remote URL):"
) )
@@ -605,7 +665,7 @@ _shtab_ahriman_repo_sign_defaults_added=0
_shtab_ahriman_repo_statistics_options=( _shtab_ahriman_repo_statistics_options=(
"(- : *)"{-h,--help}"[show this help message and exit]" "(- : *)"{-h,--help}"[show this help message and exit]"
"--chart[create updates chart and save it to the specified path (default\: None)]:chart:" "--chart[create updates chart and save it to the specified path (default\: None)]:chart:"
{-e,--event}"[event type filter (default\: package-updated)]:event:(package-outdated package-removed package-update-failed package-updated)" {-e,--event}"[event type filter (default\: package-updated)]:event:(build-log package-held package-outdated package-removed package-status-changed package-update-failed package-updated service-status-changed)"
"--from-date[only fetch events which are newer than the date (default\: None)]:from_date:" "--from-date[only fetch events which are newer than the date (default\: None)]:from_date:"
"--limit[limit response by specified amount of events (default\: -1)]:limit:" "--limit[limit response by specified amount of events (default\: -1)]:limit:"
"--offset[skip specified amount of events (default\: 0)]:offset:" "--offset[skip specified amount of events (default\: 0)]:offset:"
@@ -953,13 +1013,19 @@ _shtab_ahriman() {
init) _arguments -C -s $_shtab_ahriman_init_options ;; init) _arguments -C -s $_shtab_ahriman_init_options ;;
key-import) _arguments -C -s $_shtab_ahriman_key_import_options ;; key-import) _arguments -C -s $_shtab_ahriman_key_import_options ;;
package-add) _arguments -C -s $_shtab_ahriman_package_add_options ;; package-add) _arguments -C -s $_shtab_ahriman_package_add_options ;;
package-archives) _arguments -C -s $_shtab_ahriman_package_archives_options ;;
package-changes) _arguments -C -s $_shtab_ahriman_package_changes_options ;; package-changes) _arguments -C -s $_shtab_ahriman_package_changes_options ;;
package-changes-remove) _arguments -C -s $_shtab_ahriman_package_changes_remove_options ;; package-changes-remove) _arguments -C -s $_shtab_ahriman_package_changes_remove_options ;;
package-copy) _arguments -C -s $_shtab_ahriman_package_copy_options ;; package-copy) _arguments -C -s $_shtab_ahriman_package_copy_options ;;
package-hold) _arguments -C -s $_shtab_ahriman_package_hold_options ;;
package-pkgbuild) _arguments -C -s $_shtab_ahriman_package_pkgbuild_options ;;
package-pkgbuild-remove) _arguments -C -s $_shtab_ahriman_package_pkgbuild_remove_options ;;
package-remove) _arguments -C -s $_shtab_ahriman_package_remove_options ;; package-remove) _arguments -C -s $_shtab_ahriman_package_remove_options ;;
package-rollback) _arguments -C -s $_shtab_ahriman_package_rollback_options ;;
package-status) _arguments -C -s $_shtab_ahriman_package_status_options ;; package-status) _arguments -C -s $_shtab_ahriman_package_status_options ;;
package-status-remove) _arguments -C -s $_shtab_ahriman_package_status_remove_options ;; package-status-remove) _arguments -C -s $_shtab_ahriman_package_status_remove_options ;;
package-status-update) _arguments -C -s $_shtab_ahriman_package_status_update_options ;; package-status-update) _arguments -C -s $_shtab_ahriman_package_status_update_options ;;
package-unhold) _arguments -C -s $_shtab_ahriman_package_unhold_options ;;
package-update) _arguments -C -s $_shtab_ahriman_package_update_options ;; package-update) _arguments -C -s $_shtab_ahriman_package_update_options ;;
patch-add) _arguments -C -s $_shtab_ahriman_patch_add_options ;; patch-add) _arguments -C -s $_shtab_ahriman_patch_add_options ;;
patch-list) _arguments -C -s $_shtab_ahriman_patch_list_options ;; patch-list) _arguments -C -s $_shtab_ahriman_patch_list_options ;;
+64
View File
@@ -0,0 +1,64 @@
[build-system]
requires = [
"hatchling",
]
build-backend = "hatchling.build"
[project]
name = "ahriman-core"
dependencies = [
"bcrypt",
"filelock",
"inflection",
"pyelftools",
"requests",
]
description = "ArcH linux ReposItory MANager, core package"
dynamic = [
"version",
]
requires-python = ">=3.14"
[project.optional-dependencies]
journald = [
"systemd-python",
]
# FIXME technically this dependency is required, but in some cases we do not have access to
# the libalpm which is required in order to install the package. Thus in case if we do not
# really need to run the application we can move it to "optional" dependencies
pacman = [
"pyalpm",
]
reports = [
"Jinja2",
]
s3 = [
"boto3",
]
shell = [
"IPython",
]
stats = [
"matplotlib",
]
unixsocket = [
"requests-unixsocket2", # required by unix socket support
]
validator = [
"cerberus",
]
[project.scripts]
ahriman = "ahriman.application.ahriman:run"
[tool.hatch.build.targets.wheel]
packages = [
"src/ahriman",
]
[tool.hatch.build.targets.wheel.shared-data]
"package/lib" = "lib"
"package/share" = "share"
[tool.hatch.version]
path = "src/ahriman/__init__.py"
@@ -17,4 +17,4 @@
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
__version__ = "2.20.0" __version__ = "2.21.0"
@@ -19,6 +19,7 @@
# #
import argparse import argparse
from functools import partial
from pathlib import Path from pathlib import Path
import ahriman.application.handlers import ahriman.application.handlers
@@ -34,10 +35,13 @@ from ahriman.models.log_handler import LogHandler
__all__: list[str] = [] __all__: list[str] = []
def _parser() -> argparse.ArgumentParser: def _parser(*, color: bool = False) -> argparse.ArgumentParser:
""" """
command line parser generator command line parser generator
Args:
color(bool, optional): enable colors in help messages (Default value = False)
Returns: Returns:
argparse.ArgumentParser: command line parser for the application argparse.ArgumentParser: command line parser for the application
""" """
@@ -63,7 +67,7 @@ Start web service (requires additional configuration):
>>> ahriman web >>> ahriman web
""", """,
fromfile_prefix_chars="@", formatter_class=_HelpFormatter) fromfile_prefix_chars="@", formatter_class=_HelpFormatter, color=color)
parser.add_argument("-a", "--architecture", help="filter by target architecture") parser.add_argument("-a", "--architecture", help="filter by target architecture")
parser.add_argument("-c", "--configuration", help="configuration path", type=Path, parser.add_argument("-c", "--configuration", help="configuration path", type=Path,
default=Path("/") / "etc" / "ahriman.ini") default=Path("/") / "etc" / "ahriman.ini")
@@ -92,8 +96,9 @@ Start web service (requires additional configuration):
for handler in implementations(ahriman.application.handlers, Handler): for handler in implementations(ahriman.application.handlers, Handler):
for subparser_parser in handler.arguments: for subparser_parser in handler.arguments:
subparser = subparser_parser(subparsers) subparser = subparser_parser(subparsers)
subparser.color = color
subparser.formatter_class = _HelpFormatter subparser.formatter_class = _HelpFormatter
subparser.set_defaults(handler=handler, parser=_parser) subparser.set_defaults(handler=handler, parser=partial(_parser, color=color))
# sort actions alphabetically in both choices and help message # sort actions alphabetically in both choices and help message
# pylint: disable=protected-access # pylint: disable=protected-access
@@ -110,7 +115,7 @@ def run() -> int:
Returns: Returns:
int: application status code int: application status code
""" """
parser = _parser() parser = _parser(color=True)
args = parser.parse_args() args = parser.parse_args()
if args.command is None: # in case of empty command we would like to print help message if args.command is None: # in case of empty command we would like to print help message
@@ -72,17 +72,17 @@ class PackageArchive:
if not PackageArchive.is_elf(binary_file): if not PackageArchive.is_elf(binary_file):
return [] return []
elf_file = ELFFile(binary_file) # type: ignore[no-untyped-call] elf_file = ELFFile(binary_file)
dynamic_section = next( dynamic_section = next(
(section for section in elf_file.iter_sections() # type: ignore[no-untyped-call] (section for section in elf_file.iter_sections()
if isinstance(section, DynamicSection)), if isinstance(section, DynamicSection)),
None) None)
if dynamic_section is None: if dynamic_section is None:
return [] return []
return [ return [
tag.needed tag.needed # type: ignore[attr-defined]
for tag in dynamic_section.iter_tags() # type: ignore[no-untyped-call] for tag in dynamic_section.iter_tags()
if tag.entry.d_tag == "DT_NEEDED" if tag.entry.d_tag == "DT_NEEDED"
] ]
@@ -22,6 +22,7 @@ from ahriman.core.configuration import Configuration
from ahriman.core.log import LazyLogging from ahriman.core.log import LazyLogging
from ahriman.core.utils import full_version, utcnow from ahriman.core.utils import full_version, utcnow
from ahriman.models.package import Package from ahriman.models.package import Package
from ahriman.models.package_source import PackageSource
from ahriman.models.pkgbuild import Pkgbuild from ahriman.models.pkgbuild import Pkgbuild
@@ -64,7 +65,7 @@ class PackageVersion(LazyLogging):
return full_version(pkgbuild.get("epoch"), pkgbuild["pkgver"], pkgbuild["pkgrel"]) return full_version(pkgbuild.get("epoch"), pkgbuild["pkgver"], pkgbuild["pkgrel"])
except Exception: except Exception:
self.logger.exception("cannot determine version of VCS package") self.logger.exception("cannot determine version of VCS package %s", self.package.base)
finally: finally:
# clear log files generated by devtools # clear log files generated by devtools
for log_file in paths.cache_for(self.package.base).glob("*.log"): for log_file in paths.cache_for(self.package.base).glob("*.log"):
@@ -103,9 +104,14 @@ class PackageVersion(LazyLogging):
Returns: Returns:
bool: ``True`` if the package is out-of-dated and ``False`` otherwise bool: ``True`` if the package is out-of-dated and ``False`` otherwise
""" """
min_allowed_age = configuration.getint("build", "min_age", fallback=0)
min_build_date = utcnow().timestamp() - min_allowed_age
if remote.remote.source == PackageSource.AUR and PackageVersion(remote).is_newer_than(min_build_date):
self.logger.info("package %s was modified too recently, skip update", remote.base)
return False
vcs_allowed_age = configuration.getint("build", "vcs_allowed_age", fallback=0) vcs_allowed_age = configuration.getint("build", "vcs_allowed_age", fallback=0)
min_vcs_build_date = utcnow().timestamp() - vcs_allowed_age min_vcs_build_date = utcnow().timestamp() - vcs_allowed_age
if calculate_version and not self.is_newer_than(min_vcs_build_date): if calculate_version and not self.is_newer_than(min_vcs_build_date):
remote_version = PackageVersion(remote).actual_version(configuration) remote_version = PackageVersion(remote).actual_version(configuration)
else: else:

Some files were not shown because too many files have changed in this diff Show More