In previous revisions server was terminated by itself, thus no lock or
socket was removed. In new version, graceful termination of the queue
has been added as well as server now handles singals
Old implementation has used add step in order to fetch dependencies,
which could lead to build errors in case if dependency list was updated.
New solution uses dependencies which are declared at current version and
fetch them (if required and if enabled) before update process.
Closes#90
The newest mypy produces the following warning:
src/ahriman/application/handlers/search.py:43: error: Non-overlapping identity check (left operand type: "Union[_DefaultFactory[Any], Literal[_MISSING_TYPE.MISSING]]", right operand type: "Type[List[Any]]") [comparison-overlap]
which is more likely caused by updated dataclass models to protoocol (however decorators are still calllable). This commit masks problematic line from checking
This change requires srcinfo at least 0.1.2 version. Unfortunatelly aur
api don't support architecture specific arrays for now, so we just leave
it as is
Closes#82
This commit also extends configuration of the multilib option, adding
the ability to exlcude multilib repository from repositories list
Note, that in order to support repository list and mirror correctly,
alpm configuration section is now architectture specific
Some commands have been moved to another group and thus having another
default name (old subcommands are still available...for now):
* daemon -> repo-daemon
* key-import -> service-key-import
* repo-clean -> service-clean
* repo-config -> service-config
* repo-config-validate -> service-config-validate
* repo-setup -> service-setup
* repo-shell -> service-shell
* version -> help-version
Note that this commit contains the following breaking changes:
* remote pull and remote push triggers are now enabled by default (with
empty target list)
* remote pull and remote push triggers now require target option to be
set (old behaviour had fallback on `gitremote`)
* validation is now considered to be stable, so it is enabled by default
in docker image (can be disabled however)
This feature can be used for unauthorized access to apis - e.g. for
reporting service if it is run on the same machine. Since now it becomes
recommended way for the interprocess communication, thus some options
(e.g. creating user with as-service flag) are no longer available now
In case if password is asked via getpass, it is possible to make typo
and user will not see the mistake. In order to avoid it, additional
confirmation has been added
* implement log storage at backend
* handle process id during removal. During one process we can write logs from different packages in different times (e.g. check and update later) and we would like to store all logs belong to the same process
* set package context in main functions
* implement logs support in interface
* filter out logs posting http logs
* add timestamp to log records
* hide getting logs under reporter permission
List of breaking changes:
* `ahriman.core.lazy_logging.LazyLogging` has been renamed to `ahriman.core.log.LazyLogging`
* `ahriman.core.configuration.Configuration.from_path` does not have `quiet` attribute now
* `ahriman.core.configuration.Configuration` class does not have `load_logging` method now
* `ahriman.core.status.client.Client.load` requires `report` argument now
Old logic used OR condition, i.e. if set from-database, it would ignore
the --depends-on flag. In new logic it calculates dependencies based on
the package list, which can be retrieved from database
By default this feature is enabled. On the first run it will copy (if
exists) databases from filesystem to local cache (one per each
architecture). Later it will use this cache for all alpm operations. In
order to update this cache, some commands (mainly package building)
provide `-y`/`--refresh` option which has same semantics as pacman -Sy
does.
Note however that due to extending `Pacman` class some methods were
renamed in order to be more descriptive:
* `Pacman.all_packages` -> `Pacman.packages`
* `Pacman.get` -> `Pacman.package_get`
This commit also adds multilib repository to the default docker image
which was missed.
* Move devtools executable to ahriman home, because we don't really
need to use executable inside root
* Use named sudoers file instead of single file. It will allow easily to
remove file as well as use setup command for several
repositories/architectures
(without special settings)
The issue appears if file or its version contains one of special URI
characters, e.g. +. Theu will be interpreted as query parameters by
(some) servers (e.g. S3 works in this way). In this commit we rename
archive to the one with safe name.
* migrate docstrings from reST to google format
* add raises note
Also change behaviour of the `from_option` method to fallback to
disabled instead of raising exception on unknown option
* fix part of warnings for sphinx
* make identation a bit more readable
* review fixes
* add verbose description for properties to make them parsed by sphinx extenstion
* add demo sphinx generator
this also requires to move default configuration files to share/ahriman.
Thus the following features have been added
* default configuration is not stored in /usr/share/ahriman/settings
* package installed via PKGBUILD now copies files from /usr
* configuration class now fallbacks to default in /usr
In current workflow you need to run setup to run init (because of
repository name), but you need to run init before setup (because of
repository tree rights).
New solution just add `Repo.init()` method call to setup subcommand
after config reload to make sure that repository name has been applied.
In addition chown method as well as setuid method for check_output have
been added.
This feature also introduces the followiing changes
* aur-search command now works as expected with multiterms
* printer classes for managing of data print
* --sort-by argument for aur-search subcommand instead of using package
name
* --quiet argument now has also --no-quite option
* if --quite is supplied, the log level will be set to warn instead of
critical to be able to see error messages
* pretty_datetime function now also supports datetime objects
* BuildStatus is now pure dataclass
in order to sort method correctly we are going to use the following
namiing schema:
{subject}_{action}_{details}
This schema still have some exceptions, e.g. single word methods, bool
methods (is_) and getters in case if they are singular (i.e. there is
no any other method with this subject)
* add ability to add manually stored packages
* update tests
* handle manual packages in remove-unknown method
* live fixes
also rename branches to has_remotes method and change return type
according to the source code defaults always updates the values
dictionary. This in this specific case it is impossible to override the
value it will be always empty list.
In order to handle it we are adding another property to the Handler
class which allows to run with None architecture list.
This particular set_defaults behaviour is still useful for other cases
when we have to run command without any specific architecture
* add external process spawner and update test cases
* pass no_report to handlers
* provide service api endpoints
* do not spawn process for single architecture run
* pass no report to handlers
* make _call method of handlers public and also simplify process spawn
* move update under add
* implement actions from web page
* clear logging & improve l&f
* initial auth implementation
* add create user parser
* add tests
* update dependencies list
* add login annd logout to index also improve auth
* realworld fixes
* add method set_option to Configuration and also use it everywhere
* split CreateUser handler to additional read method
* check user duplicate on auth mapping read
* generate salt by using passlib instead of random.choice
* case-insensetive usernames
* update dependencies
* update configuration reference
* improve tests
* fix codefactor errors
* hide fields if authorization is enabled, but no auth supplied
* add settings object for auth provider
* readme update
* add init subcommand
* add also init command to repository object
* add ability to generate list of architectures
* check if architecture list is not empty
* import pgp key implementation
* do not ask confirmation for local sign. Also add argparser test
* superseed requests by python-aur package
* ...and drop --skippgpcheck makgepkg flag by default