diff --git a/.gitignore b/.gitignore index d9d60ce1..a4d5b094 100644 --- a/.gitignore +++ b/.gitignore @@ -94,5 +94,3 @@ ENV/ .venv/ *.tar.xz - -man/ diff --git a/Makefile b/Makefile index 59ab9477..140faaef 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: architecture archive archive_directory archlinux check clean directory push tests version +.PHONY: architecture archive archive_directory archlinux check clean directory man push tests version .DEFAULT_GOAL := archlinux PROJECT := ahriman @@ -39,6 +39,9 @@ clean: directory: clean mkdir "$(PROJECT)" +man: + cd src && PYTHONPATH=. argparse-manpage --module ahriman.application.ahriman --function _parser --author "ahriman team" --project-name ahriman --author-email "" --url https://github.com/arcan1s/ahriman --output ../docs/ahriman.1 + mypy: cd src && mypy --implicit-reexport --strict -p "$(PROJECT)" --install-types --non-interactive || true cd src && mypy --implicit-reexport --strict -p "$(PROJECT)" diff --git a/docs/ahriman.1 b/docs/ahriman.1 new file mode 100644 index 00000000..c7a08441 --- /dev/null +++ b/docs/ahriman.1 @@ -0,0 +1,393 @@ +.TH ahriman "1" Manual +.SH NAME +ahriman +.SH SYNOPSIS +.B ahriman +[-h] [-a ARCHITECTURE] [-c CONFIGURATION] [--force] [-l LOCK] [--no-log] [--no-report] [--unsafe] [-v] {add,check,clean,config,init,key-import,rebuild,remove,remove-unknown,report,search,setup,sign,status,status-update,sync,update,user,web} ... +.SH DESCRIPTION +ArcH Linux ReposItory MANager +.SH OPTIONS + +.TP +\fB\-a\fR \fI\,ARCHITECTURE\/\fR, \fB\-\-architecture\fR \fI\,ARCHITECTURE\/\fR +target architectures (can be used multiple times) + +.TP +\fB\-c\fR \fI\,CONFIGURATION\/\fR, \fB\-\-configuration\fR \fI\,CONFIGURATION\/\fR +configuration path + +.TP +\fB\-\-force\fR +force run, remove file lock + +.TP +\fB\-l\fR \fI\,LOCK\/\fR, \fB\-\-lock\fR \fI\,LOCK\/\fR +lock file + +.TP +\fB\-\-no\-log\fR +redirect all log messages to stderr + +.TP +\fB\-\-no\-report\fR +force disable reporting to web service + +.TP +\fB\-\-unsafe\fR +allow to run ahriman as non\-ahriman user + +.TP +\fB\-v\fR, \fB\-\-version\fR +show program's version number and exit + +.SS +\fBSub-commands\fR +.TP +\fBahriman\fR \fI\,add\/\fR +add package +.TP +\fBahriman\fR \fI\,check\/\fR +check for updates +.TP +\fBahriman\fR \fI\,clean\/\fR +clean local caches +.TP +\fBahriman\fR \fI\,config\/\fR +dump configuration +.TP +\fBahriman\fR \fI\,init\/\fR +create repository tree +.TP +\fBahriman\fR \fI\,key-import\/\fR +import PGP key +.TP +\fBahriman\fR \fI\,rebuild\/\fR +rebuild repository +.TP +\fBahriman\fR \fI\,remove\/\fR +remove package +.TP +\fBahriman\fR \fI\,remove-unknown\/\fR +remove unknown packages +.TP +\fBahriman\fR \fI\,report\/\fR +generate report +.TP +\fBahriman\fR \fI\,search\/\fR +search for package +.TP +\fBahriman\fR \fI\,setup\/\fR +initial service configuration +.TP +\fBahriman\fR \fI\,sign\/\fR +sign packages +.TP +\fBahriman\fR \fI\,status\/\fR +get package status +.TP +\fBahriman\fR \fI\,status-update\/\fR +update package status +.TP +\fBahriman\fR \fI\,sync\/\fR +sync repository +.TP +\fBahriman\fR \fI\,update\/\fR +update packages +.TP +\fBahriman\fR \fI\,user\/\fR +manage users for web services +.TP +\fBahriman\fR \fI\,web\/\fR +start web server +.SH OPTIONS 'ahriman add' +usage: ahriman add [-h] [--now] [--without-dependencies] package [package ...] + +add package + +.TP +\fBpackage\fR +package base/name or archive path + +.TP +\fB\-\-now\fR +run update function after + +.TP +\fB\-\-without\-dependencies\fR +do not add dependencies + +.SH OPTIONS 'ahriman check' +usage: ahriman check [-h] [--no-vcs] [package ...] + +check for updates. Same as update \-\-dry\-run \-\-no\-manual + +.TP +\fBpackage\fR +filter check by package base + +.TP +\fB\-\-no\-vcs\fR +do not check VCS packages + +.SH OPTIONS 'ahriman clean' +usage: ahriman clean [-h] [--no-build] [--no-cache] [--no-chroot] [--no-manual] [--no-packages] + +clear local caches + + +.TP +\fB\-\-no\-build\fR +do not clear directory with package sources + +.TP +\fB\-\-no\-cache\fR +do not clear directory with package caches + +.TP +\fB\-\-no\-chroot\fR +do not clear build chroot + +.TP +\fB\-\-no\-manual\fR +do not clear directory with manually added packages + +.TP +\fB\-\-no\-packages\fR +do not clear directory with built packages + +.SH OPTIONS 'ahriman config' +usage: ahriman config [-h] + +dump configuration for specified architecture + + + +.SH OPTIONS 'ahriman init' +usage: ahriman init [-h] + +create empty repository tree. Optional command for auto architecture support + + + +.SH OPTIONS 'ahriman key-import' +usage: ahriman key-import [-h] [--key-server KEY_SERVER] key + +import PGP key from public sources to repository user + +.TP +\fBkey\fR +PGP key to import from public server + +.TP +\fB\-\-key\-server\fR \fI\,KEY_SERVER\/\fR +key server for key import + +.SH OPTIONS 'ahriman rebuild' +usage: ahriman rebuild [-h] [--depends-on DEPENDS_ON] + +rebuild whole repository + + +.TP +\fB\-\-depends\-on\fR \fI\,DEPENDS_ON\/\fR +only rebuild packages that depend on specified package + +.SH OPTIONS 'ahriman remove' +usage: ahriman remove [-h] package [package ...] + +remove package + +.TP +\fBpackage\fR +package name or base + + +.SH OPTIONS 'ahriman remove-unknown' +usage: ahriman remove-unknown [-h] [--dry-run] + +remove packages which are missing in AUR + + +.TP +\fB\-\-dry\-run\fR +just perform check for packages without removal + +.SH OPTIONS 'ahriman report' +usage: ahriman report [-h] [target ...] + +generate report + +.TP +\fBtarget\fR +target to generate report + + +.SH OPTIONS 'ahriman search' +usage: ahriman search [-h] search [search ...] + +search for package in AUR using API + +.TP +\fBsearch\fR +search terms, can be specified multiple times + + +.SH OPTIONS 'ahriman setup' +usage: ahriman setup [-h] [--build-command BUILD_COMMAND] [--from-configuration FROM_CONFIGURATION] [--no-multilib] --packager PACKAGER --repository REPOSITORY [--sign-key SIGN_KEY] + [--sign-target {SignSettings.Packages,SignSettings.Repository}] [--web-port WEB_PORT] + +create initial service configuration, requires root + + +.TP +\fB\-\-build\-command\fR \fI\,BUILD_COMMAND\/\fR +build command prefix + +.TP +\fB\-\-from\-configuration\fR \fI\,FROM_CONFIGURATION\/\fR +path to default devtools pacman configuration + +.TP +\fB\-\-no\-multilib\fR +do not add multilib repository + +.TP +\fB\-\-packager\fR \fI\,PACKAGER\/\fR +packager name and email + +.TP +\fB\-\-repository\fR \fI\,REPOSITORY\/\fR +repository name + +.TP +\fB\-\-sign\-key\fR \fI\,SIGN_KEY\/\fR +sign key id + +.TP +\fB\-\-sign\-target\fR {SignSettings.Packages,SignSettings.Repository} +sign options + +.TP +\fB\-\-web\-port\fR \fI\,WEB_PORT\/\fR +port of the web service + +.SH OPTIONS 'ahriman sign' +usage: ahriman sign [-h] [package ...] + +(re\-)sign packages and repository database + +.TP +\fBpackage\fR +sign only specified packages + + +.SH OPTIONS 'ahriman status' +usage: ahriman status [-h] [--ahriman] [--status {BuildStatusEnum.Unknown,BuildStatusEnum.Pending,BuildStatusEnum.Building,BuildStatusEnum.Failed,BuildStatusEnum.Success}] [package ...] + +request status of the package + +.TP +\fBpackage\fR +filter status by package base + +.TP +\fB\-\-ahriman\fR +get service status itself + +.TP +\fB\-\-status\fR {BuildStatusEnum.Unknown,BuildStatusEnum.Pending,BuildStatusEnum.Building,BuildStatusEnum.Failed,BuildStatusEnum.Success} +filter packages by status + +.SH OPTIONS 'ahriman status-update' +usage: ahriman status-update [-h] [--status {BuildStatusEnum.Unknown,BuildStatusEnum.Pending,BuildStatusEnum.Building,BuildStatusEnum.Failed,BuildStatusEnum.Success}] [--remove] [package ...] + +request status of the package + +.TP +\fBpackage\fR +set status for specified packages. If no packages supplied, service status will be updated + +.TP +\fB\-\-status\fR {BuildStatusEnum.Unknown,BuildStatusEnum.Pending,BuildStatusEnum.Building,BuildStatusEnum.Failed,BuildStatusEnum.Success} +new status + +.TP +\fB\-\-remove\fR +remove package status page + +.SH OPTIONS 'ahriman sync' +usage: ahriman sync [-h] [target ...] + +sync packages to remote server + +.TP +\fBtarget\fR +target to sync + + +.SH OPTIONS 'ahriman update' +usage: ahriman update [-h] [--dry-run] [--no-aur] [--no-manual] [--no-vcs] [package ...] + +run updates + +.TP +\fBpackage\fR +filter check by package base + +.TP +\fB\-\-dry\-run\fR +just perform check for updates, same as check command + +.TP +\fB\-\-no\-aur\fR +do not check for AUR updates. Implies \-\-no\-vcs + +.TP +\fB\-\-no\-manual\fR +do not include manual updates + +.TP +\fB\-\-no\-vcs\fR +do not check VCS packages + +.SH OPTIONS 'ahriman user' +usage: ahriman user [-h] [--as-service] [-a {UserAccess.Read,UserAccess.Write}] [--no-reload] [-p PASSWORD] [-r] username + +manage users for web services with password and role. In case if password was not entered it will be asked interactively + +.TP +\fBusername\fR +username for web service + +.TP +\fB\-\-as\-service\fR +add user as service user + +.TP +\fB\-a\fR {UserAccess.Read,UserAccess.Write}, \fB\-\-access\fR {UserAccess.Read,UserAccess.Write} +user access level + +.TP +\fB\-\-no\-reload\fR +do not reload authentication module + +.TP +\fB\-p\fR \fI\,PASSWORD\/\fR, \fB\-\-password\fR \fI\,PASSWORD\/\fR +user password + +.TP +\fB\-r\fR, \fB\-\-remove\fR +remove user from configuration + +.SH OPTIONS 'ahriman web' +usage: ahriman web [-h] + +start web server + +.SH AUTHORS +.B ahriman +was written by ahriman team <>. +.SH DISTRIBUTION +The latest version of ahriman may be downloaded from +.UR https://github.com/arcan1s/ahriman +.UE diff --git a/setup.py b/setup.py index 40bfab40..a11d9f86 100644 --- a/setup.py +++ b/setup.py @@ -81,6 +81,9 @@ setup( "package/share/ahriman/utils/bootstrap-scripts.jinja2", "package/share/ahriman/utils/style.jinja2", ]), + ("share/man/man1", [ + "docs/ahriman.1", + ]) ], extras_require={