#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-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"
    "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-setup:create initial service configuration, requires root"
    "service-shell:drop into python shell while having created application"
    "setup:create initial service configuration, requires root"
    "shell:drop into python shell while having created application"
    "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}"[target architectures. For several subcommands it can be used multiple times]:architecture:"
  {-c,--configuration}"[configuration path]:configuration:"
  "--force[force run, remove file lock]"
  {-l,--lock}"[lock file]:lock:"
  "--log-handler[explicit log handler specification. If none set, the handler will be guessed from environment]:log_handler:(console syslog journald)"
  {--report,--no-report}"[force enable or disable reporting to web service]:report:"
  {-q,--quiet}"[force disable any logging]"
  "--unsafe[allow to run ahriman as non-ahriman user. Some actions might be unavailable]"
  "(- : *)"{-V,--version}"[show program\'s version number and exit]"
)

_shtab_ahriman_add_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {--dependencies,--no-dependencies}"[process missing package dependencies]:dependencies:"
  {-e,--exit-code}"[return non-zero exit status if result is empty]"
  {-n,--now}"[run update function after]"
  "*"{-y,--refresh}"[download fresh package databases from the mirror before actions, -yy to force refresh even if up to date]"
  {-s,--source}"[explicitly specify the package source for this command]:source:(auto archive aur directory local remote repository)"
  {-u,--username}"[build as user]:username:"
  "(*):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]"
  {--info,--no-info}"[show additional package information]: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]: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]"
  {-e,--exit-code}"[return non-zero exit status if result is empty]"
  {--vcs,--no-vcs}"[fetch actual version of VCS packages]:vcs:"
  "*"{-y,--refresh}"[download fresh package databases from the mirror before actions, -yy to force refresh even if up to date]"
  "(*)::filter check by package base:"
)

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

_shtab_ahriman_config_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {--secure,--no-secure}"[hide passwords and secrets from output]:secure:"
)

_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]"
)

_shtab_ahriman_daemon_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {-i,--interval}"[interval between runs in seconds]:interval:"
  {--aur,--no-aur}"[enable or disable checking for AUR updates]:aur:"
  {--dependencies,--no-dependencies}"[process missing package dependencies]:dependencies:"
  {--local,--no-local}"[enable or disable checking of local packages for updates]:local:"
  {--manual,--no-manual}"[include or exclude manual updates]:manual:"
  {--vcs,--no-vcs}"[fetch actual version of VCS packages]:vcs:"
  "*"{-y,--refresh}"[download fresh package databases from the mirror before actions, -yy to force refresh even if up to date]"
)

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

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

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

_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]:build_as_user:"
  "--build-command[build command prefix]:build_command:"
  "--from-configuration[path to default devtools pacman configuration]:from_configuration:"
  {--makeflags-jobs,--no-makeflags-jobs}"[append MAKEFLAGS variable with parallelism set to number of cores]:makeflags_jobs:"
  "--mirror[use the specified explicitly mirror instead of including mirrorlist]:mirror:"
  {--multilib,--no-multilib}"[add or do not multilib repository]:multilib:"
  "--packager[packager name and email]:packager:"
  "--repository[repository name]:repository:"
  "--sign-key[sign key id]:sign_key:"
  "*--sign-target[sign options]:sign_target:(disabled packages repository)"
  "--web-port[port of the web service]:web_port:"
  "--web-unix-socket[path to unix socket used for interprocess communications]:web_unix_socket:"
)

_shtab_ahriman_key_import_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "--key-server[key server for key import]: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]:dependencies:"
  {-e,--exit-code}"[return non-zero exit status if result is empty]"
  {-n,--now}"[run update function after]"
  "*"{-y,--refresh}"[download fresh package databases from the mirror before actions, -yy to force refresh even if up to date]"
  {-s,--source}"[explicitly specify the package source for this command]:source:(auto archive aur directory local remote repository)"
  {-u,--username}"[build as user]:username:"
  "(*):package source (base name, path to local files, remote URL):"
)

_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]"
  {-e,--exit-code}"[return non-zero exit status if result is empty]"
  {--info,--no-info}"[show additional package information]:info:"
  {-s,--status}"[filter packages by status]:status:(unknown pending building failed success)"
  "(*)::filter status by package base:"
)

_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]:status:(unknown pending building failed success)"
  "(*)::set status for specified packages. If no packages supplied, service status will be updated:"
)

_shtab_ahriman_package_update_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {--dependencies,--no-dependencies}"[process missing package dependencies]:dependencies:"
  {-e,--exit-code}"[return non-zero exit status if result is empty]"
  {-n,--now}"[run update function after]"
  "*"{-y,--refresh}"[download fresh package databases from the mirror before actions, -yy to force refresh even if up to date]"
  {-s,--source}"[explicitly specify the package source for this command]:source:(auto archive aur directory local remote repository)"
  {-u,--username}"[build as user]:username:"
  "(*):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:"
)

_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]"
  "*"{-v,--variable}"[if set, show only patches for specified PKGBUILD variables]:variable:"
  ":package base:"
)

_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]: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]: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]:depends_on:"
  "--dry-run[just perform check for packages without rebuild process itself]"
  "--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.]"
  {-e,--exit-code}"[return non-zero exit status if result is empty]"
  {-s,--status}"[filter packages by status. Requires --from-database to be set]:status:(unknown pending building failed success)"
  {-u,--username}"[build as user]: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]"
)

_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]"
  {-e,--exit-code}"[return non-zero exit status if result is empty]"
  {--vcs,--no-vcs}"[fetch actual version of VCS packages]:vcs:"
  "*"{-y,--refresh}"[download fresh package databases from the mirror before actions, -yy to force refresh even if up to date]"
  "(*)::filter check by package base:"
)

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

_shtab_ahriman_repo_config_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {--secure,--no-secure}"[hide passwords and secrets from output]:secure:"
)

_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]"
)

_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]:interval:"
  {--aur,--no-aur}"[enable or disable checking for AUR updates]:aur:"
  {--dependencies,--no-dependencies}"[process missing package dependencies]:dependencies:"
  {--local,--no-local}"[enable or disable checking of local packages for updates]:local:"
  {--manual,--no-manual}"[include or exclude manual updates]:manual:"
  {--vcs,--no-vcs}"[fetch actual version of VCS packages]:vcs:"
  "*"{-y,--refresh}"[download fresh package databases from the mirror before actions, -yy to force refresh even if up to date]"
)

_shtab_ahriman_repo_init_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "--build-as-user[force makepkg user to the specific one]:build_as_user:"
  "--build-command[build command prefix]:build_command:"
  "--from-configuration[path to default devtools pacman configuration]:from_configuration:"
  {--makeflags-jobs,--no-makeflags-jobs}"[append MAKEFLAGS variable with parallelism set to number of cores]:makeflags_jobs:"
  "--mirror[use the specified explicitly mirror instead of including mirrorlist]:mirror:"
  {--multilib,--no-multilib}"[add or do not multilib repository]:multilib:"
  "--packager[packager name and email]:packager:"
  "--repository[repository name]:repository:"
  "--sign-key[sign key id]:sign_key:"
  "*--sign-target[sign options]:sign_target:(disabled packages repository)"
  "--web-port[port of the web service]:web_port:"
  "--web-unix-socket[path to unix socket used for interprocess communications]: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]:depends_on:"
  "--dry-run[just perform check for packages without rebuild process itself]"
  "--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.]"
  {-e,--exit-code}"[return non-zero exit status if result is empty]"
  {-s,--status}"[filter packages by status. Requires --from-database to be set]:status:(unknown pending building failed success)"
  {-u,--username}"[build as user]:username:"
)

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

_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]: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]:build_as_user:"
  "--build-command[build command prefix]:build_command:"
  "--from-configuration[path to default devtools pacman configuration]:from_configuration:"
  {--makeflags-jobs,--no-makeflags-jobs}"[append MAKEFLAGS variable with parallelism set to number of cores]:makeflags_jobs:"
  "--mirror[use the specified explicitly mirror instead of including mirrorlist]:mirror:"
  {--multilib,--no-multilib}"[add or do not multilib repository]:multilib:"
  "--packager[packager name and email]:packager:"
  "--repository[repository name]:repository:"
  "--sign-key[sign key id]:sign_key:"
  "*--sign-target[sign options]:sign_target:(disabled packages repository)"
  "--web-port[port of the web service]:web_port:"
  "--web-unix-socket[path to unix socket used for interprocess communications]:web_unix_socket:"
)

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

_shtab_ahriman_repo_status_update_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {-s,--status}"[new status]: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]"
)

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

_shtab_ahriman_repo_update_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {--aur,--no-aur}"[enable or disable checking for AUR updates]:aur:"
  {--dependencies,--no-dependencies}"[process missing package dependencies]:dependencies:"
  "--dry-run[just perform check for updates, same as check command]"
  {-e,--exit-code}"[return non-zero exit status if result is empty]"
  {--local,--no-local}"[enable or disable checking of local packages for updates]:local:"
  {--manual,--no-manual}"[include or exclude manual updates]:manual:"
  {-u,--username}"[build as user]:username:"
  {--vcs,--no-vcs}"[fetch actual version of VCS packages]:vcs:"
  "*"{-y,--refresh}"[download fresh package databases from the mirror before actions, -yy to force refresh even if up to date]"
  "(*)::filter check by package base:"
)

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

_shtab_ahriman_search_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {-e,--exit-code}"[return non-zero exit status if result is empty]"
  {--info,--no-info}"[show additional package information]: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]: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]:cache:"
  {--chroot,--no-chroot}"[clear build chroot]:chroot:"
  {--manual,--no-manual}"[clear manually added packages queue]:manual:"
  {--packages,--no-packages}"[clear directory with built packages]:packages:"
  {--pacman,--no-pacman}"[clear directory with pacman local database cache]:pacman:"
)

_shtab_ahriman_service_config_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  {--secure,--no-secure}"[hide passwords and secrets from output]:secure:"
)

_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]"
)

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

_shtab_ahriman_service_setup_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "--build-as-user[force makepkg user to the specific one]:build_as_user:"
  "--build-command[build command prefix]:build_command:"
  "--from-configuration[path to default devtools pacman configuration]:from_configuration:"
  {--makeflags-jobs,--no-makeflags-jobs}"[append MAKEFLAGS variable with parallelism set to number of cores]:makeflags_jobs:"
  "--mirror[use the specified explicitly mirror instead of including mirrorlist]:mirror:"
  {--multilib,--no-multilib}"[add or do not multilib repository]:multilib:"
  "--packager[packager name and email]:packager:"
  "--repository[repository name]:repository:"
  "--sign-key[sign key id]:sign_key:"
  "*--sign-target[sign options]:sign_target:(disabled packages repository)"
  "--web-port[port of the web service]:web_port:"
  "--web-unix-socket[path to unix socket used for interprocess communications]: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:"
)

_shtab_ahriman_setup_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "--build-as-user[force makepkg user to the specific one]:build_as_user:"
  "--build-command[build command prefix]:build_command:"
  "--from-configuration[path to default devtools pacman configuration]:from_configuration:"
  {--makeflags-jobs,--no-makeflags-jobs}"[append MAKEFLAGS variable with parallelism set to number of cores]:makeflags_jobs:"
  "--mirror[use the specified explicitly mirror instead of including mirrorlist]:mirror:"
  {--multilib,--no-multilib}"[add or do not multilib repository]:multilib:"
  "--packager[packager name and email]:packager:"
  "--repository[repository name]:repository:"
  "--sign-key[sign key id]:sign_key:"
  "*--sign-target[sign options]:sign_target:(disabled packages repository)"
  "--web-port[port of the web service]:web_port:"
  "--web-unix-socket[path to unix socket used for interprocess communications]: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:"
)

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

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

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

_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]:aur:"
  {--dependencies,--no-dependencies}"[process missing package dependencies]:dependencies:"
  "--dry-run[just perform check for updates, same as check command]"
  {-e,--exit-code}"[return non-zero exit status if result is empty]"
  {--local,--no-local}"[enable or disable checking of local packages for updates]:local:"
  {--manual,--no-manual}"[include or exclude manual updates]:manual:"
  {-u,--username}"[build as user]:username:"
  {--vcs,--no-vcs}"[fetch actual version of VCS packages]:vcs:"
  "*"{-y,--refresh}"[download fresh package databases from the mirror before actions, -yy to force refresh even if up to date]"
  "(*)::filter check by package base:"
)

_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]:key:"
  "--packager[optional packager id used for build process in form of \`Name Surname \<mail\@example.com\>\`]:packager:"
  {-p,--password}"[user password. Blank password will be treated as empty password, which is in particular must be used for OAuth2 authorization type.]:password:"
  {-r,--role}"[user access level]:role:(unauthorized read reporter full)"
  {-s,--secure}"[set file permissions to user-only]"
  ":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]"
  {-r,--role}"[filter users by role]:role:(unauthorized read reporter full)"
  ":filter users by username:"
)

_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 $_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 $_shtab_ahriman_add_options ;;
        aur-search) _arguments -C $_shtab_ahriman_aur_search_options ;;
        check) _arguments -C $_shtab_ahriman_check_options ;;
        clean) _arguments -C $_shtab_ahriman_clean_options ;;
        config) _arguments -C $_shtab_ahriman_config_options ;;
        config-validate) _arguments -C $_shtab_ahriman_config_validate_options ;;
        daemon) _arguments -C $_shtab_ahriman_daemon_options ;;
        help) _arguments -C $_shtab_ahriman_help_options ;;
        help-commands-unsafe) _arguments -C $_shtab_ahriman_help_commands_unsafe_options ;;
        help-updates) _arguments -C $_shtab_ahriman_help_updates_options ;;
        help-version) _arguments -C $_shtab_ahriman_help_version_options ;;
        init) _arguments -C $_shtab_ahriman_init_options ;;
        key-import) _arguments -C $_shtab_ahriman_key_import_options ;;
        package-add) _arguments -C $_shtab_ahriman_package_add_options ;;
        package-remove) _arguments -C $_shtab_ahriman_package_remove_options ;;
        package-status) _arguments -C $_shtab_ahriman_package_status_options ;;
        package-status-remove) _arguments -C $_shtab_ahriman_package_status_remove_options ;;
        package-status-update) _arguments -C $_shtab_ahriman_package_status_update_options ;;
        package-update) _arguments -C $_shtab_ahriman_package_update_options ;;
        patch-add) _arguments -C $_shtab_ahriman_patch_add_options ;;
        patch-list) _arguments -C $_shtab_ahriman_patch_list_options ;;
        patch-remove) _arguments -C $_shtab_ahriman_patch_remove_options ;;
        patch-set-add) _arguments -C $_shtab_ahriman_patch_set_add_options ;;
        rebuild) _arguments -C $_shtab_ahriman_rebuild_options ;;
        remove) _arguments -C $_shtab_ahriman_remove_options ;;
        remove-unknown) _arguments -C $_shtab_ahriman_remove_unknown_options ;;
        repo-backup) _arguments -C $_shtab_ahriman_repo_backup_options ;;
        repo-check) _arguments -C $_shtab_ahriman_repo_check_options ;;
        repo-clean) _arguments -C $_shtab_ahriman_repo_clean_options ;;
        repo-config) _arguments -C $_shtab_ahriman_repo_config_options ;;
        repo-config-validate) _arguments -C $_shtab_ahriman_repo_config_validate_options ;;
        repo-create-keyring) _arguments -C $_shtab_ahriman_repo_create_keyring_options ;;
        repo-create-mirrorlist) _arguments -C $_shtab_ahriman_repo_create_mirrorlist_options ;;
        repo-daemon) _arguments -C $_shtab_ahriman_repo_daemon_options ;;
        repo-init) _arguments -C $_shtab_ahriman_repo_init_options ;;
        repo-rebuild) _arguments -C $_shtab_ahriman_repo_rebuild_options ;;
        repo-remove-unknown) _arguments -C $_shtab_ahriman_repo_remove_unknown_options ;;
        repo-report) _arguments -C $_shtab_ahriman_repo_report_options ;;
        repo-restore) _arguments -C $_shtab_ahriman_repo_restore_options ;;
        repo-setup) _arguments -C $_shtab_ahriman_repo_setup_options ;;
        repo-sign) _arguments -C $_shtab_ahriman_repo_sign_options ;;
        repo-status-update) _arguments -C $_shtab_ahriman_repo_status_update_options ;;
        repo-sync) _arguments -C $_shtab_ahriman_repo_sync_options ;;
        repo-tree) _arguments -C $_shtab_ahriman_repo_tree_options ;;
        repo-triggers) _arguments -C $_shtab_ahriman_repo_triggers_options ;;
        repo-update) _arguments -C $_shtab_ahriman_repo_update_options ;;
        report) _arguments -C $_shtab_ahriman_report_options ;;
        search) _arguments -C $_shtab_ahriman_search_options ;;
        service-clean) _arguments -C $_shtab_ahriman_service_clean_options ;;
        service-config) _arguments -C $_shtab_ahriman_service_config_options ;;
        service-config-validate) _arguments -C $_shtab_ahriman_service_config_validate_options ;;
        service-key-import) _arguments -C $_shtab_ahriman_service_key_import_options ;;
        service-setup) _arguments -C $_shtab_ahriman_service_setup_options ;;
        service-shell) _arguments -C $_shtab_ahriman_service_shell_options ;;
        setup) _arguments -C $_shtab_ahriman_setup_options ;;
        shell) _arguments -C $_shtab_ahriman_shell_options ;;
        sign) _arguments -C $_shtab_ahriman_sign_options ;;
        status) _arguments -C $_shtab_ahriman_status_options ;;
        status-update) _arguments -C $_shtab_ahriman_status_update_options ;;
        sync) _arguments -C $_shtab_ahriman_sync_options ;;
        update) _arguments -C $_shtab_ahriman_update_options ;;
        user-add) _arguments -C $_shtab_ahriman_user_add_options ;;
        user-list) _arguments -C $_shtab_ahriman_user_list_options ;;
        user-remove) _arguments -C $_shtab_ahriman_user_remove_options ;;
        version) _arguments -C $_shtab_ahriman_version_options ;;
        web) _arguments -C $_shtab_ahriman_web_options ;;
      esac
  esac
}



typeset -A opt_args
_shtab_ahriman "$@"
