#compdef ahriman

# AUTOMATICALLY GENERATED by `shtab`


_shtab_ahriman_commands() {
  local _commands=(
    "add:add existing or new package to the build queue"
    "aur-search:search for package in AUR using API"
    "check:check for packages updates. Same as repo-update --dry-run --no-manual"
    "clean:remove local caches"
    "config:dump configuration for the specified architecture"
    "config-validate:validate configuration and print found errors"
    "daemon:start process which periodically will run update process"
    "help:show help message for application or command and exit"
    "help-commands-unsafe:list unsafe commands as defined in default args"
    "help-updates:request AUR for current version and compare with current service version"
    "help-version:print application and its dependencies versions"
    "init:create initial service configuration, requires root"
    "key-import:import PGP key from public sources to the repository user"
    "package-add:add existing or new package to the build queue"
    "package-changes:retrieve package changes stored in database"
    "package-changes-remove:remove the package changes stored remotely"
    "package-remove:remove package from the repository"
    "package-status:request status of the package"
    "package-status-remove:remove the package from the status page"
    "package-status-update:update package status on the status page"
    "package-update:add existing or new package to the build queue"
    "patch-add:create or update patched PKGBUILD function or variable"
    "patch-list:list available patches for the package"
    "patch-remove:remove patches for the package"
    "patch-set-add:create or update source patches"
    "rebuild:force rebuild whole repository"
    "remove:remove package from the repository"
    "remove-unknown:remove packages which are missing in AUR and do not have local PKGBUILDs"
    "repo-backup:backup repository settings and database"
    "repo-check:check for packages updates. Same as repo-update --dry-run --no-manual"
    "repo-clean:remove local caches"
    "repo-config:dump configuration for the specified architecture"
    "repo-config-validate:validate configuration and print found errors"
    "repo-create-keyring: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"
    "repo-create-mirrorlist: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"
    "repo-daemon:start process which periodically will run update process"
    "repo-init:create initial service configuration, requires root"
    "repo-rebuild:force rebuild whole repository"
    "repo-remove-unknown:remove packages which are missing in AUR and do not have local PKGBUILDs"
    "repo-report:generate repository report according to current settings"
    "repo-restore:restore settings and database"
    "repo-setup:create initial service configuration, requires root"
    "repo-sign:(re-)sign packages and repository database according to current settings"
    "repo-status-update:update repository status on the status page"
    "repo-sync:sync repository files to remote server according to current settings"
    "repo-tree:dump repository tree based on packages dependencies"
    "repo-triggers:run triggers on empty build result as configured by settings"
    "repo-update:check for packages updates and run build process if requested"
    "report:generate repository report according to current settings"
    "run:run multiple commands on success run of the previous command"
    "search:search for package in AUR using API"
    "service-clean:remove local caches"
    "service-config:dump configuration for the specified architecture"
    "service-config-validate:validate configuration and print found errors"
    "service-key-import:import PGP key from public sources to the repository user"
    "service-repositories:list all available repositories"
    "service-run:run multiple commands on success run of the previous command"
    "service-setup:create initial service configuration, requires root"
    "service-shell:drop into python shell"
    "service-tree-migrate:migrate repository tree between versions"
    "setup:create initial service configuration, requires root"
    "shell:drop into python shell"
    "sign:(re-)sign packages and repository database according to current settings"
    "status:request status of the package"
    "status-update:update package status on the status page"
    "sync:sync repository files to remote server according to current settings"
    "update:check for packages updates and run build process if requested"
    "user-add:update user for web services with the given password and role. In case if password was not entered it will be asked interactively"
    "user-list:list users from the user mapping and their roles"
    "user-remove:remove user from the user mapping and update the configuration"
    "version:print application and its dependencies versions"
    "web:start web server"
  )
  _describe 'ahriman commands' _commands
}

_shtab_ahriman_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {-a,--architecture}"[filter by target architecture (default\: None)]:architecture:"
  {-c,--configuration}"[configuration path (default\: \/etc\/ahriman.ini)]:configuration:"
  "--force[force run, remove file lock (default\: False)]"
  {-l,--lock}"[lock file (default\: \/tmp\/ahriman.lock)]:lock:"
  "--log-handler[explicit log handler specification. If none set, the handler will be guessed from environment (default\: None)]:log_handler:(console syslog journald)"
  {-q,--quiet}"[force disable any logging (default\: False)]"
  {--report,--no-report}"[force enable or disable reporting to web service (default\: True)]:report:"
  {-r,--repository}"[filter by target repository (default\: None)]:repository:"
  "--unsafe[allow to run ahriman as non-ahriman user. Some actions might be unavailable (default\: False)]"
  "(- : *)"{-V,--version}"[show program\'s version number and exit]"
  "--wait-timeout[wait for lock to be free. Negative value will lead to immediate application run even if there is lock file. In case of zero value, the application will wait infinitely (default\: -1)]:wait_timeout:"
)

_shtab_ahriman_add_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {--dependencies,--no-dependencies}"[process missing package dependencies (default\: True)]:dependencies:"
  {-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:"
  {-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)"
  {-u,--username}"[build as user (default\: None)]:username:"
  "*"{-v,--variable}"[apply specified makepkg variables to the next build (default\: None)]:variable:"
  "(*):package source (base name, path to local files, remote URL):"
)

_shtab_ahriman_aur_search_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:"
  "--sort-by[sort field by this field. In case if two packages have the same value of the specified field, they will be always sorted by name (default\: name)]: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 terms, can be specified multiple times, the result will match all terms:"
)

_shtab_ahriman_check_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {--changes,--no-changes}"[calculate changes from the latest known commit if available. Only applicable in dry run mode (default\: True)]:changes:"
  {--check-files,--no-check-files}"[enable or disable checking of broken dependencies (e.g. dynamically linked libraries or modules directories) (default\: True)]:check_files:"
  {-e,--exit-code}"[return non-zero exit status if result is empty (default\: False)]"
  {--vcs,--no-vcs}"[fetch actual version of VCS packages (default\: True)]:vcs:"
  "*"{-y,--refresh}"[download fresh package databases from the mirror before actions, -yy to force refresh even if up to date (default\: False)]"
  "(*)::filter check by package base (default\: None):"
)

_shtab_ahriman_clean_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {--cache,--no-cache}"[clear directory with package caches (default\: False)]:cache:"
  {--chroot,--no-chroot}"[clear build chroot (default\: False)]:chroot:"
  {--manual,--no-manual}"[clear manually added packages queue (default\: False)]:manual:"
  {--packages,--no-packages}"[clear directory with built packages (default\: False)]:packages:"
  {--pacman,--no-pacman}"[clear directory with pacman local database cache (default\: False)]:pacman:"
)

_shtab_ahriman_config_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {--info,--no-info}"[show additional information, e.g. configuration files (default\: True)]:info:"
  {--secure,--no-secure}"[hide passwords and secrets from output (default\: True)]:secure:"
  ":filter settings by section (default\: None):"
  ":filter settings by key (default\: None):"
)

_shtab_ahriman_config_validate_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {-e,--exit-code}"[return non-zero exit status if configuration is invalid (default\: False)]"
)

_shtab_ahriman_daemon_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {-i,--interval}"[interval between runs in seconds (default\: 43200)]:interval:"
  {--aur,--no-aur}"[enable or disable checking for AUR updates (default\: True)]:aur:"
  {--changes,--no-changes}"[calculate changes from the latest known commit if available. Only applicable in dry run mode (default\: True)]:changes:"
  {--check-files,--no-check-files}"[enable or disable checking of broken dependencies (e.g. dynamically linked libraries or modules directories) (default\: True)]:check_files:"
  {--dependencies,--no-dependencies}"[process missing package dependencies (default\: True)]:dependencies:"
  "--dry-run[just perform check for updates, same as check command (default\: False)]"
  {--increment,--no-increment}"[increment package release (pkgrel) on duplicate (default\: True)]:increment:"
  {--local,--no-local}"[enable or disable checking of local packages for updates (default\: True)]:local:"
  {--manual,--no-manual}"[include or exclude manual updates (default\: True)]:manual:"
  {--partitions,--no-partitions}"[instead of updating whole repository, split updates into chunks (default\: True)]:partitions:"
  {-u,--username}"[build as user (default\: None)]:username:"
  {--vcs,--no-vcs}"[fetch actual version of VCS packages (default\: True)]:vcs:"
  "*"{-y,--refresh}"[download fresh package databases from the mirror before actions, -yy to force refresh even if up to date (default\: False)]"
)

_shtab_ahriman_help_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  ":show help message for specific command (default\: None):"
)

_shtab_ahriman_help_commands_unsafe_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "(*)::instead of showing commands, just test command line for unsafe subcommand and return 0 in case if command is safe and 1 otherwise (default\: None):"
)

_shtab_ahriman_help_updates_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {-e,--exit-code}"[return non-zero exit code if updates available (default\: False)]"
)

_shtab_ahriman_help_version_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
)

_shtab_ahriman_init_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "--build-as-user[force makepkg user to the specific one (default\: None)]:build_as_user:"
  "--from-configuration[path to default devtools pacman configuration (default\: \/usr\/share\/devtools\/pacman.conf.d\/extra.conf)]:from_configuration:"
  {--generate-salt,--no-generate-salt}"[generate salt for user passwords (default\: False)]:generate_salt:"
  {--makeflags-jobs,--no-makeflags-jobs}"[append MAKEFLAGS variable with parallelism set to number of cores (default\: True)]:makeflags_jobs:"
  "--mirror[use the specified explicitly mirror instead of including mirrorlist (default\: None)]:mirror:"
  {--multilib,--no-multilib}"[add or do not multilib repository (default\: True)]:multilib:"
  "--packager[packager name and email (default\: None)]:packager:"
  "--server[server to be used for devtools. If none set, local files will be used (default\: None)]:server:"
  "--sign-key[sign key id (default\: None)]:sign_key:"
  "*--sign-target[sign options (default\: None)]:sign_target:(disabled packages repository)"
  "--web-port[port of the web service (default\: None)]:web_port:"
  "--web-unix-socket[path to unix socket used for interprocess communications (default\: None)]:web_unix_socket:"
)

_shtab_ahriman_key_import_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "--key-server[key server for key import (default\: keyserver.ubuntu.com)]:key_server:"
  ":PGP key to import from public server:"
)

_shtab_ahriman_package_add_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {--dependencies,--no-dependencies}"[process missing package dependencies (default\: True)]:dependencies:"
  {-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:"
  {-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)"
  {-u,--username}"[build as user (default\: None)]:username:"
  "*"{-v,--variable}"[apply specified makepkg variables to the next build (default\: None)]:variable:"
  "(*):package source (base name, path to local files, remote URL):"
)

_shtab_ahriman_package_changes_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:"
)

_shtab_ahriman_package_changes_remove_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  ":package base:"
)

_shtab_ahriman_package_remove_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "(*):package name or base:"
)

_shtab_ahriman_package_status_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "--ahriman[get service status itself (default\: False)]"
  {-e,--exit-code}"[return non-zero exit status if result is empty (default\: False)]"
  {--info,--no-info}"[show additional package information (default\: False)]:info:"
  {-s,--status}"[filter packages by status (default\: None)]:status:(unknown pending building failed success)"
  "(*)::filter status by package base (default\: None):"
)

_shtab_ahriman_package_status_remove_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "(*):remove specified packages from status page:"
)

_shtab_ahriman_package_status_update_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {-s,--status}"[new package build status (default\: success)]:status:(unknown pending building failed success)"
  "(*)::set status for specified packages. If no packages supplied, service status will be updated (default\: None):"
)

_shtab_ahriman_package_update_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {--dependencies,--no-dependencies}"[process missing package dependencies (default\: True)]:dependencies:"
  {-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:"
  {-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)"
  {-u,--username}"[build as user (default\: None)]:username:"
  "*"{-v,--variable}"[apply specified makepkg variables to the next build (default\: None)]:variable:"
  "(*):package source (base name, path to local files, remote URL):"
)

_shtab_ahriman_patch_add_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  ":package base:"
  ":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 (default\: None):"
)

_shtab_ahriman_patch_list_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {-e,--exit-code}"[return non-zero exit status if result is empty (default\: False)]"
  "*"{-v,--variable}"[if set, show only patches for specified PKGBUILD variables (default\: None)]:variable:"
  ":package base (default\: None):"
)

_shtab_ahriman_patch_remove_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "*"{-v,--variable}"[should be used for single-function patches in case if you wold like to remove only specified PKGBUILD variables. In case if not set, it will remove all patches related to the package (default\: None)]:variable:"
  ":package base:"
)

_shtab_ahriman_patch_set_add_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "*"{-t,--track}"[files which has to be tracked (default\: \[\'\*.diff\', \'\*.patch\'\])]:track:"
  ":path to directory with changed files for patch addition\/update:"
)

_shtab_ahriman_rebuild_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "*--depends-on[only rebuild packages that depend on specified packages (default\: None)]:depends_on:"
  "--dry-run[just perform check for packages without rebuild process itself (default\: False)]"
  "--from-database[read packages from database instead of filesystem. This feature in particular is required in case if you would like to restore repository from another repository instance. Note, however, that in order to restore packages you need to have original ahriman instance run with web service and have run repo-update at least once. (default\: False)]"
  {--increment,--no-increment}"[increment package release (pkgrel) on duplicate (default\: True)]:increment:"
  {-e,--exit-code}"[return non-zero exit status if result is empty (default\: False)]"
  {-s,--status}"[filter packages by status. Requires --from-database to be set (default\: None)]:status:(unknown pending building failed success)"
  {-u,--username}"[build as user (default\: None)]:username:"
)

_shtab_ahriman_remove_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "(*):package name or base:"
)

_shtab_ahriman_remove_unknown_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "--dry-run[just perform check for packages without removal (default\: False)]"
)

_shtab_ahriman_repo_backup_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  ":path of the output archive:"
)

_shtab_ahriman_repo_check_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {--changes,--no-changes}"[calculate changes from the latest known commit if available. Only applicable in dry run mode (default\: True)]:changes:"
  {--check-files,--no-check-files}"[enable or disable checking of broken dependencies (e.g. dynamically linked libraries or modules directories) (default\: True)]:check_files:"
  {-e,--exit-code}"[return non-zero exit status if result is empty (default\: False)]"
  {--vcs,--no-vcs}"[fetch actual version of VCS packages (default\: True)]:vcs:"
  "*"{-y,--refresh}"[download fresh package databases from the mirror before actions, -yy to force refresh even if up to date (default\: False)]"
  "(*)::filter check by package base (default\: None):"
)

_shtab_ahriman_repo_clean_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {--cache,--no-cache}"[clear directory with package caches (default\: False)]:cache:"
  {--chroot,--no-chroot}"[clear build chroot (default\: False)]:chroot:"
  {--manual,--no-manual}"[clear manually added packages queue (default\: False)]:manual:"
  {--packages,--no-packages}"[clear directory with built packages (default\: False)]:packages:"
  {--pacman,--no-pacman}"[clear directory with pacman local database cache (default\: False)]:pacman:"
)

_shtab_ahriman_repo_config_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {--info,--no-info}"[show additional information, e.g. configuration files (default\: True)]:info:"
  {--secure,--no-secure}"[hide passwords and secrets from output (default\: True)]:secure:"
  ":filter settings by section (default\: None):"
  ":filter settings by key (default\: None):"
)

_shtab_ahriman_repo_config_validate_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {-e,--exit-code}"[return non-zero exit status if configuration is invalid (default\: False)]"
)

_shtab_ahriman_repo_create_keyring_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
)

_shtab_ahriman_repo_create_mirrorlist_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
)

_shtab_ahriman_repo_daemon_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {-i,--interval}"[interval between runs in seconds (default\: 43200)]:interval:"
  {--aur,--no-aur}"[enable or disable checking for AUR updates (default\: True)]:aur:"
  {--changes,--no-changes}"[calculate changes from the latest known commit if available. Only applicable in dry run mode (default\: True)]:changes:"
  {--check-files,--no-check-files}"[enable or disable checking of broken dependencies (e.g. dynamically linked libraries or modules directories) (default\: True)]:check_files:"
  {--dependencies,--no-dependencies}"[process missing package dependencies (default\: True)]:dependencies:"
  "--dry-run[just perform check for updates, same as check command (default\: False)]"
  {--increment,--no-increment}"[increment package release (pkgrel) on duplicate (default\: True)]:increment:"
  {--local,--no-local}"[enable or disable checking of local packages for updates (default\: True)]:local:"
  {--manual,--no-manual}"[include or exclude manual updates (default\: True)]:manual:"
  {--partitions,--no-partitions}"[instead of updating whole repository, split updates into chunks (default\: True)]:partitions:"
  {-u,--username}"[build as user (default\: None)]:username:"
  {--vcs,--no-vcs}"[fetch actual version of VCS packages (default\: True)]:vcs:"
  "*"{-y,--refresh}"[download fresh package databases from the mirror before actions, -yy to force refresh even if up to date (default\: False)]"
)

_shtab_ahriman_repo_init_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "--build-as-user[force makepkg user to the specific one (default\: None)]:build_as_user:"
  "--from-configuration[path to default devtools pacman configuration (default\: \/usr\/share\/devtools\/pacman.conf.d\/extra.conf)]:from_configuration:"
  {--generate-salt,--no-generate-salt}"[generate salt for user passwords (default\: False)]:generate_salt:"
  {--makeflags-jobs,--no-makeflags-jobs}"[append MAKEFLAGS variable with parallelism set to number of cores (default\: True)]:makeflags_jobs:"
  "--mirror[use the specified explicitly mirror instead of including mirrorlist (default\: None)]:mirror:"
  {--multilib,--no-multilib}"[add or do not multilib repository (default\: True)]:multilib:"
  "--packager[packager name and email (default\: None)]:packager:"
  "--server[server to be used for devtools. If none set, local files will be used (default\: None)]:server:"
  "--sign-key[sign key id (default\: None)]:sign_key:"
  "*--sign-target[sign options (default\: None)]:sign_target:(disabled packages repository)"
  "--web-port[port of the web service (default\: None)]:web_port:"
  "--web-unix-socket[path to unix socket used for interprocess communications (default\: None)]:web_unix_socket:"
)

_shtab_ahriman_repo_rebuild_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "*--depends-on[only rebuild packages that depend on specified packages (default\: None)]:depends_on:"
  "--dry-run[just perform check for packages without rebuild process itself (default\: False)]"
  "--from-database[read packages from database instead of filesystem. This feature in particular is required in case if you would like to restore repository from another repository instance. Note, however, that in order to restore packages you need to have original ahriman instance run with web service and have run repo-update at least once. (default\: False)]"
  {--increment,--no-increment}"[increment package release (pkgrel) on duplicate (default\: True)]:increment:"
  {-e,--exit-code}"[return non-zero exit status if result is empty (default\: False)]"
  {-s,--status}"[filter packages by status. Requires --from-database to be set (default\: None)]:status:(unknown pending building failed success)"
  {-u,--username}"[build as user (default\: None)]:username:"
)

_shtab_ahriman_repo_remove_unknown_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "--dry-run[just perform check for packages without removal (default\: False)]"
)

_shtab_ahriman_repo_report_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
)

_shtab_ahriman_repo_restore_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {-o,--output}"[root path of the extracted files (default\: \/)]:output:"
  ":path of the input archive:"
)

_shtab_ahriman_repo_setup_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "--build-as-user[force makepkg user to the specific one (default\: None)]:build_as_user:"
  "--from-configuration[path to default devtools pacman configuration (default\: \/usr\/share\/devtools\/pacman.conf.d\/extra.conf)]:from_configuration:"
  {--generate-salt,--no-generate-salt}"[generate salt for user passwords (default\: False)]:generate_salt:"
  {--makeflags-jobs,--no-makeflags-jobs}"[append MAKEFLAGS variable with parallelism set to number of cores (default\: True)]:makeflags_jobs:"
  "--mirror[use the specified explicitly mirror instead of including mirrorlist (default\: None)]:mirror:"
  {--multilib,--no-multilib}"[add or do not multilib repository (default\: True)]:multilib:"
  "--packager[packager name and email (default\: None)]:packager:"
  "--server[server to be used for devtools. If none set, local files will be used (default\: None)]:server:"
  "--sign-key[sign key id (default\: None)]:sign_key:"
  "*--sign-target[sign options (default\: None)]:sign_target:(disabled packages repository)"
  "--web-port[port of the web service (default\: None)]:web_port:"
  "--web-unix-socket[path to unix socket used for interprocess communications (default\: None)]:web_unix_socket:"
)

_shtab_ahriman_repo_sign_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "(*)::sign only specified packages (default\: None):"
)

_shtab_ahriman_repo_status_update_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {-s,--status}"[new status (default\: success)]:status:(unknown pending building failed success)"
)

_shtab_ahriman_repo_sync_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
)

_shtab_ahriman_repo_tree_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {-p,--partitions}"[also divide packages by independent partitions (default\: 1)]:partitions:"
)

_shtab_ahriman_repo_triggers_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "(*)::instead of running all triggers as set by configuration, just process specified ones in order of mention (default\: None):"
)

_shtab_ahriman_repo_update_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {--aur,--no-aur}"[enable or disable checking for AUR updates (default\: True)]:aur:"
  {--changes,--no-changes}"[calculate changes from the latest known commit if available. Only applicable in dry run mode (default\: True)]:changes:"
  {--check-files,--no-check-files}"[enable or disable checking of broken dependencies (e.g. dynamically linked libraries or modules directories) (default\: True)]:check_files:"
  {--dependencies,--no-dependencies}"[process missing package dependencies (default\: True)]:dependencies:"
  "--dry-run[just perform check for updates, same as check command (default\: False)]"
  {-e,--exit-code}"[return non-zero exit status if result is empty (default\: False)]"
  {--increment,--no-increment}"[increment package release (pkgrel) on duplicate (default\: True)]:increment:"
  {--local,--no-local}"[enable or disable checking of local packages for updates (default\: True)]:local:"
  {--manual,--no-manual}"[include or exclude manual updates (default\: True)]:manual:"
  {-u,--username}"[build as user (default\: None)]:username:"
  {--vcs,--no-vcs}"[fetch actual version of VCS packages (default\: True)]:vcs:"
  "*"{-y,--refresh}"[download fresh package databases from the mirror before actions, -yy to force refresh even if up to date (default\: False)]"
  "(*)::filter check by package base (default\: None):"
)

_shtab_ahriman_report_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
)

_shtab_ahriman_run_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "(*):command to be run (quoted) without \`\`ahriman\`\`:"
)

_shtab_ahriman_search_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:"
  "--sort-by[sort field by this field. In case if two packages have the same value of the specified field, they will be always sorted by name (default\: name)]: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 terms, can be specified multiple times, the result will match all terms:"
)

_shtab_ahriman_service_clean_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {--cache,--no-cache}"[clear directory with package caches (default\: False)]:cache:"
  {--chroot,--no-chroot}"[clear build chroot (default\: False)]:chroot:"
  {--manual,--no-manual}"[clear manually added packages queue (default\: False)]:manual:"
  {--packages,--no-packages}"[clear directory with built packages (default\: False)]:packages:"
  {--pacman,--no-pacman}"[clear directory with pacman local database cache (default\: False)]:pacman:"
)

_shtab_ahriman_service_config_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {--info,--no-info}"[show additional information, e.g. configuration files (default\: True)]:info:"
  {--secure,--no-secure}"[hide passwords and secrets from output (default\: True)]:secure:"
  ":filter settings by section (default\: None):"
  ":filter settings by key (default\: None):"
)

_shtab_ahriman_service_config_validate_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {-e,--exit-code}"[return non-zero exit status if configuration is invalid (default\: False)]"
)

_shtab_ahriman_service_key_import_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "--key-server[key server for key import (default\: keyserver.ubuntu.com)]:key_server:"
  ":PGP key to import from public server:"
)

_shtab_ahriman_service_repositories_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {--id-only,--no-id-only}"[show machine readable identifier instead (default\: False)]:id_only:"
)

_shtab_ahriman_service_run_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "(*):command to be run (quoted) without \`\`ahriman\`\`:"
)

_shtab_ahriman_service_setup_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "--build-as-user[force makepkg user to the specific one (default\: None)]:build_as_user:"
  "--from-configuration[path to default devtools pacman configuration (default\: \/usr\/share\/devtools\/pacman.conf.d\/extra.conf)]:from_configuration:"
  {--generate-salt,--no-generate-salt}"[generate salt for user passwords (default\: False)]:generate_salt:"
  {--makeflags-jobs,--no-makeflags-jobs}"[append MAKEFLAGS variable with parallelism set to number of cores (default\: True)]:makeflags_jobs:"
  "--mirror[use the specified explicitly mirror instead of including mirrorlist (default\: None)]:mirror:"
  {--multilib,--no-multilib}"[add or do not multilib repository (default\: True)]:multilib:"
  "--packager[packager name and email (default\: None)]:packager:"
  "--server[server to be used for devtools. If none set, local files will be used (default\: None)]:server:"
  "--sign-key[sign key id (default\: None)]:sign_key:"
  "*--sign-target[sign options (default\: None)]:sign_target:(disabled packages repository)"
  "--web-port[port of the web service (default\: None)]:web_port:"
  "--web-unix-socket[path to unix socket used for interprocess communications (default\: None)]:web_unix_socket:"
)

_shtab_ahriman_service_shell_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  ":instead of dropping into shell, just execute the specified code (default\: None):"
)

_shtab_ahriman_service_tree_migrate_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
)

_shtab_ahriman_setup_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "--build-as-user[force makepkg user to the specific one (default\: None)]:build_as_user:"
  "--from-configuration[path to default devtools pacman configuration (default\: \/usr\/share\/devtools\/pacman.conf.d\/extra.conf)]:from_configuration:"
  {--generate-salt,--no-generate-salt}"[generate salt for user passwords (default\: False)]:generate_salt:"
  {--makeflags-jobs,--no-makeflags-jobs}"[append MAKEFLAGS variable with parallelism set to number of cores (default\: True)]:makeflags_jobs:"
  "--mirror[use the specified explicitly mirror instead of including mirrorlist (default\: None)]:mirror:"
  {--multilib,--no-multilib}"[add or do not multilib repository (default\: True)]:multilib:"
  "--packager[packager name and email (default\: None)]:packager:"
  "--server[server to be used for devtools. If none set, local files will be used (default\: None)]:server:"
  "--sign-key[sign key id (default\: None)]:sign_key:"
  "*--sign-target[sign options (default\: None)]:sign_target:(disabled packages repository)"
  "--web-port[port of the web service (default\: None)]:web_port:"
  "--web-unix-socket[path to unix socket used for interprocess communications (default\: None)]:web_unix_socket:"
)

_shtab_ahriman_shell_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  ":instead of dropping into shell, just execute the specified code (default\: None):"
)

_shtab_ahriman_sign_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "(*)::sign only specified packages (default\: None):"
)

_shtab_ahriman_status_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "--ahriman[get service status itself (default\: False)]"
  {-e,--exit-code}"[return non-zero exit status if result is empty (default\: False)]"
  {--info,--no-info}"[show additional package information (default\: False)]:info:"
  {-s,--status}"[filter packages by status (default\: None)]:status:(unknown pending building failed success)"
  "(*)::filter status by package base (default\: None):"
)

_shtab_ahriman_status_update_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {-s,--status}"[new package build status (default\: success)]:status:(unknown pending building failed success)"
  "(*)::set status for specified packages. If no packages supplied, service status will be updated (default\: None):"
)

_shtab_ahriman_sync_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
)

_shtab_ahriman_update_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {--aur,--no-aur}"[enable or disable checking for AUR updates (default\: True)]:aur:"
  {--changes,--no-changes}"[calculate changes from the latest known commit if available. Only applicable in dry run mode (default\: True)]:changes:"
  {--check-files,--no-check-files}"[enable or disable checking of broken dependencies (e.g. dynamically linked libraries or modules directories) (default\: True)]:check_files:"
  {--dependencies,--no-dependencies}"[process missing package dependencies (default\: True)]:dependencies:"
  "--dry-run[just perform check for updates, same as check command (default\: False)]"
  {-e,--exit-code}"[return non-zero exit status if result is empty (default\: False)]"
  {--increment,--no-increment}"[increment package release (pkgrel) on duplicate (default\: True)]:increment:"
  {--local,--no-local}"[enable or disable checking of local packages for updates (default\: True)]:local:"
  {--manual,--no-manual}"[include or exclude manual updates (default\: True)]:manual:"
  {-u,--username}"[build as user (default\: None)]:username:"
  {--vcs,--no-vcs}"[fetch actual version of VCS packages (default\: True)]:vcs:"
  "*"{-y,--refresh}"[download fresh package databases from the mirror before actions, -yy to force refresh even if up to date (default\: False)]"
  "(*)::filter check by package base (default\: None):"
)

_shtab_ahriman_user_add_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "--key[optional PGP key used by this user. The private key must be imported (default\: None)]:key:"
  "--packager[optional packager id used for build process in form of \`Name Surname \<mail\@example.com\>\` (default\: None)]:packager:"
  {-p,--password}"[user password. Blank password will be treated as empty password, which is in particular must be used for OAuth2 authorization type. (default\: None)]:password:"
  {-R,--role}"[user access level (default\: read)]:role:(unauthorized read reporter full)"
  ":username for web service:"
)

_shtab_ahriman_user_list_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {-e,--exit-code}"[return non-zero exit status if result is empty (default\: False)]"
  {-R,--role}"[filter users by role (default\: None)]:role:(unauthorized read reporter full)"
  ":filter users by username (default\: None):"
)

_shtab_ahriman_user_remove_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  ":username for web service:"
)

_shtab_ahriman_version_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
)

_shtab_ahriman_web_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
)


_shtab_ahriman() {
  local context state line curcontext="$curcontext" one_or_more='(-)*' remainder='(*)'

  if ((${_shtab_ahriman_options[(I)${(q)one_or_more}*]} + ${_shtab_ahriman_options[(I)${(q)remainder}*]} == 0)); then  # noqa: E501
    _shtab_ahriman_options+=(': :_shtab_ahriman_commands' '*::: :->ahriman')
  fi
  _arguments -C -s $_shtab_ahriman_options

  case $state in
    ahriman)
      words=($line[1] "${words[@]}")
      (( CURRENT += 1 ))
      curcontext="${curcontext%:*:*}:_shtab_ahriman-$line[1]:"
      case $line[1] in
        add) _arguments -C -s $_shtab_ahriman_add_options ;;
        aur-search) _arguments -C -s $_shtab_ahriman_aur_search_options ;;
        check) _arguments -C -s $_shtab_ahriman_check_options ;;
        clean) _arguments -C -s $_shtab_ahriman_clean_options ;;
        config) _arguments -C -s $_shtab_ahriman_config_options ;;
        config-validate) _arguments -C -s $_shtab_ahriman_config_validate_options ;;
        daemon) _arguments -C -s $_shtab_ahriman_daemon_options ;;
        help) _arguments -C -s $_shtab_ahriman_help_options ;;
        help-commands-unsafe) _arguments -C -s $_shtab_ahriman_help_commands_unsafe_options ;;
        help-updates) _arguments -C -s $_shtab_ahriman_help_updates_options ;;
        help-version) _arguments -C -s $_shtab_ahriman_help_version_options ;;
        init) _arguments -C -s $_shtab_ahriman_init_options ;;
        key-import) _arguments -C -s $_shtab_ahriman_key_import_options ;;
        package-add) _arguments -C -s $_shtab_ahriman_package_add_options ;;
        package-changes) _arguments -C -s $_shtab_ahriman_package_changes_options ;;
        package-changes-remove) _arguments -C -s $_shtab_ahriman_package_changes_remove_options ;;
        package-remove) _arguments -C -s $_shtab_ahriman_package_remove_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-update) _arguments -C -s $_shtab_ahriman_package_status_update_options ;;
        package-update) _arguments -C -s $_shtab_ahriman_package_update_options ;;
        patch-add) _arguments -C -s $_shtab_ahriman_patch_add_options ;;
        patch-list) _arguments -C -s $_shtab_ahriman_patch_list_options ;;
        patch-remove) _arguments -C -s $_shtab_ahriman_patch_remove_options ;;
        patch-set-add) _arguments -C -s $_shtab_ahriman_patch_set_add_options ;;
        rebuild) _arguments -C -s $_shtab_ahriman_rebuild_options ;;
        remove) _arguments -C -s $_shtab_ahriman_remove_options ;;
        remove-unknown) _arguments -C -s $_shtab_ahriman_remove_unknown_options ;;
        repo-backup) _arguments -C -s $_shtab_ahriman_repo_backup_options ;;
        repo-check) _arguments -C -s $_shtab_ahriman_repo_check_options ;;
        repo-clean) _arguments -C -s $_shtab_ahriman_repo_clean_options ;;
        repo-config) _arguments -C -s $_shtab_ahriman_repo_config_options ;;
        repo-config-validate) _arguments -C -s $_shtab_ahriman_repo_config_validate_options ;;
        repo-create-keyring) _arguments -C -s $_shtab_ahriman_repo_create_keyring_options ;;
        repo-create-mirrorlist) _arguments -C -s $_shtab_ahriman_repo_create_mirrorlist_options ;;
        repo-daemon) _arguments -C -s $_shtab_ahriman_repo_daemon_options ;;
        repo-init) _arguments -C -s $_shtab_ahriman_repo_init_options ;;
        repo-rebuild) _arguments -C -s $_shtab_ahriman_repo_rebuild_options ;;
        repo-remove-unknown) _arguments -C -s $_shtab_ahriman_repo_remove_unknown_options ;;
        repo-report) _arguments -C -s $_shtab_ahriman_repo_report_options ;;
        repo-restore) _arguments -C -s $_shtab_ahriman_repo_restore_options ;;
        repo-setup) _arguments -C -s $_shtab_ahriman_repo_setup_options ;;
        repo-sign) _arguments -C -s $_shtab_ahriman_repo_sign_options ;;
        repo-status-update) _arguments -C -s $_shtab_ahriman_repo_status_update_options ;;
        repo-sync) _arguments -C -s $_shtab_ahriman_repo_sync_options ;;
        repo-tree) _arguments -C -s $_shtab_ahriman_repo_tree_options ;;
        repo-triggers) _arguments -C -s $_shtab_ahriman_repo_triggers_options ;;
        repo-update) _arguments -C -s $_shtab_ahriman_repo_update_options ;;
        report) _arguments -C -s $_shtab_ahriman_report_options ;;
        run) _arguments -C -s $_shtab_ahriman_run_options ;;
        search) _arguments -C -s $_shtab_ahriman_search_options ;;
        service-clean) _arguments -C -s $_shtab_ahriman_service_clean_options ;;
        service-config) _arguments -C -s $_shtab_ahriman_service_config_options ;;
        service-config-validate) _arguments -C -s $_shtab_ahriman_service_config_validate_options ;;
        service-key-import) _arguments -C -s $_shtab_ahriman_service_key_import_options ;;
        service-repositories) _arguments -C -s $_shtab_ahriman_service_repositories_options ;;
        service-run) _arguments -C -s $_shtab_ahriman_service_run_options ;;
        service-setup) _arguments -C -s $_shtab_ahriman_service_setup_options ;;
        service-shell) _arguments -C -s $_shtab_ahriman_service_shell_options ;;
        service-tree-migrate) _arguments -C -s $_shtab_ahriman_service_tree_migrate_options ;;
        setup) _arguments -C -s $_shtab_ahriman_setup_options ;;
        shell) _arguments -C -s $_shtab_ahriman_shell_options ;;
        sign) _arguments -C -s $_shtab_ahriman_sign_options ;;
        status) _arguments -C -s $_shtab_ahriman_status_options ;;
        status-update) _arguments -C -s $_shtab_ahriman_status_update_options ;;
        sync) _arguments -C -s $_shtab_ahriman_sync_options ;;
        update) _arguments -C -s $_shtab_ahriman_update_options ;;
        user-add) _arguments -C -s $_shtab_ahriman_user_add_options ;;
        user-list) _arguments -C -s $_shtab_ahriman_user_list_options ;;
        user-remove) _arguments -C -s $_shtab_ahriman_user_remove_options ;;
        version) _arguments -C -s $_shtab_ahriman_version_options ;;
        web) _arguments -C -s $_shtab_ahriman_web_options ;;
      esac
  esac
}



typeset -A opt_args

if [[ $zsh_eval_context[-1] == eval ]]; then
  # eval/source/. command, register function for later
  compdef _shtab_ahriman -N ahriman
else
  # autoload from fpath, call function directly
  _shtab_ahriman "$@"
fi

