Compare commits

..

1 Commits

Author SHA1 Message Date
arcanis 3492892cd2 build: replace deprecated ::set-output with GITHUB_OUTPUT 2026-07-08 15:01:06 +03:00
815 changed files with 587 additions and 838 deletions
+1 -1
View File
@@ -28,7 +28,7 @@ jobs:
- name: Set image date - name: Set image date
id: args id: args
run: echo "::set-output name=date::$(date -d yesterday +'%Y-%m-%d')" run: echo "date=$(date -d yesterday +'%Y-%m-%d')" >> "$GITHUB_OUTPUT"
- name: Login to docker hub - name: Login to docker hub
uses: docker/login-action@v3 uses: docker/login-action@v3
+2 -2
View File
@@ -26,7 +26,7 @@ jobs:
- name: Extract version - name: Extract version
id: version id: version
run: echo ::set-output name=VERSION::${GITHUB_REF#refs/tags/} run: echo "version=${GITHUB_REF#refs/tags/}" >> "$GITHUB_OUTPUT"
- name: Create changelog - name: Create changelog
id: changelog id: changelog
@@ -38,7 +38,7 @@ jobs:
- name: Create archive - name: Create archive
run: tox -e archive run: tox -e archive
env: env:
VERSION: ${{ steps.version.outputs.VERSION }} VERSION: ${{ steps.version.outputs.version }}
- name: Publish release - name: Publish release
uses: softprops/action-gh-release@v2 uses: softprops/action-gh-release@v2
+1 -1
View File
@@ -12,7 +12,7 @@ pacman -Syyu --noconfirm
# main dependencies # main dependencies
pacman -S --noconfirm devtools git npm pyalpm python-bcrypt python-filelock python-inflection python-pyelftools python-requests python-systemd sudo pacman -S --noconfirm devtools git npm pyalpm python-bcrypt python-filelock python-inflection python-pyelftools python-requests python-systemd sudo
# make dependencies # make dependencies
pacman -S --noconfirm --asdeps base-devel python-build python-hatchling python-installer python-tox python-wheel pacman -S --noconfirm --asdeps base-devel python-build python-flit python-installer python-tox python-wheel
# optional dependencies # optional dependencies
if [[ -z $MINIMAL_INSTALL ]]; then if [[ -z $MINIMAL_INSTALL ]]; then
# web server # web server
+2 -5
View File
@@ -103,8 +103,5 @@ docs/html/
# Frontend # Frontend
node_modules/ node_modules/
package-lock.json package-lock.json
ahriman-web/package/share/ahriman/templates/static/index.js package/share/ahriman/templates/static/index.js
ahriman-web/package/share/ahriman/templates/static/index.css package/share/ahriman/templates/static/index.css
# local configs
/*.ini
-2
View File
@@ -2,6 +2,4 @@
addopts = --cov=ahriman --cov-report=term-missing:skip-covered --no-cov-on-fail --cov-fail-under=100 --spec addopts = --cov=ahriman --cov-report=term-missing:skip-covered --no-cov-on-fail --cov-fail-under=100 --spec
asyncio_default_fixture_loop_scope = function asyncio_default_fixture_loop_scope = function
asyncio_mode = auto asyncio_mode = auto
pythonpath = tests
resource-path.directory-name-test-resources = ../../tests/testresources
spec_test_format = {result} {docstring_summary} spec_test_format = {result} {docstring_summary}
-74
View File
@@ -1,74 +0,0 @@
[build-system]
requires = [
"hatchling",
]
build-backend = "hatchling.build"
[project]
name = "ahriman-core"
description = "ArcH linux ReposItory MANager, core package"
readme = "../README.md"
requires-python = ">=3.13"
license = { file = "../COPYING" }
authors = [
{ name = "ahriman team" },
]
dependencies = [
"bcrypt",
"filelock",
"inflection",
"pyelftools",
"requests",
]
dynamic = [
"version",
]
[project.optional-dependencies]
journald = [
"systemd-python",
]
# FIXME technically this dependency is required, but in some cases we do not have access to
# the libalpm which is required in order to install the package. Thus in case if we do not
# really need to run the application we can move it to "optional" dependencies
pacman = [
"pyalpm",
]
reports = [
"Jinja2",
]
s3 = [
"boto3",
]
shell = [
"IPython",
]
stats = [
"matplotlib",
]
unixsocket = [
"requests-unixsocket2",
]
validator = [
"cerberus",
]
[project.scripts]
ahriman = "ahriman.application.ahriman:run"
[project.urls]
Documentation = "https://ahriman.readthedocs.io/"
Repository = "https://github.com/arcan1s/ahriman"
Changelog = "https://github.com/arcan1s/ahriman/releases"
[tool.hatch.version]
path = "src/ahriman/__init__.py"
[tool.hatch.build.targets.wheel]
packages = [
"src/ahriman",
]
[tool.hatch.build.targets.wheel.shared-data]
"package/lib" = "lib"
"package/share" = "share"
-162
View File
@@ -1,162 +0,0 @@
import datetime
import pytest
from unittest.mock import MagicMock, PropertyMock
from ahriman.core.alpm.pacman import Pacman
from ahriman.core.alpm.remote import AUR
from ahriman.core.configuration import Configuration
from ahriman.models.aur_package import AURPackage
from ahriman.models.package import Package
from ahriman.models.package_description import PackageDescription
from ahriman.models.package_source import PackageSource
from ahriman.models.pacman_synchronization import PacmanSynchronization
from ahriman.models.remote_source import RemoteSource
from ahriman.models.scan_paths import ScanPaths
@pytest.fixture
def aur_package_akonadi() -> AURPackage:
"""
fixture for AUR package
Returns:
AURPackage: AUR package test instance
"""
return AURPackage(
id=0,
name="akonadi",
package_base_id=0,
package_base="akonadi",
version="21.12.3-2",
description="PIM layer, which provides an asynchronous API to access all kind of PIM data",
num_votes=0,
popularity=0.0,
first_submitted=datetime.datetime.fromtimestamp(0, datetime.UTC),
last_modified=datetime.datetime.fromtimestamp(1646555990.610, datetime.UTC),
url_path="",
url="https://kontact.kde.org",
out_of_date=None,
maintainer="felixonmars",
repository="extra",
depends=[
"libakonadi",
"mariadb",
],
make_depends=[
"boost",
"doxygen",
"extra-cmake-modules",
"kaccounts-integration",
"kitemmodels",
"postgresql",
"qt5-tools",
],
opt_depends=[
"postgresql: PostgreSQL backend",
],
conflicts=[],
provides=[],
license=["LGPL"],
keywords=[],
groups=[],
)
@pytest.fixture
def package_tpacpi_bat_git() -> Package:
"""
git package fixture
Returns:
Package: git package test instance
"""
return Package(
base="tpacpi-bat-git",
version="3.1.r12.g4959b52-1",
remote=RemoteSource(
source=PackageSource.AUR,
git_url=AUR.remote_git_url("tpacpi-bat-git", "aur"),
web_url=AUR.remote_web_url("tpacpi-bat-git"),
path=".",
branch="master",
),
packages={"tpacpi-bat-git": PackageDescription()})
@pytest.fixture
def pacman(configuration: Configuration) -> Pacman:
"""
fixture for pacman wrapper
Args:
configuration(Configuration): configuration fixture
Returns:
Pacman: pacman wrapper test instance
"""
_, repository_id = configuration.check_loaded()
return Pacman(repository_id, configuration, refresh_database=PacmanSynchronization.Disabled)
@pytest.fixture
def passwd() -> MagicMock:
"""
get passwd structure for the user
Returns:
MagicMock: passwd structure test instance
"""
passwd = MagicMock()
passwd.pw_dir = "home"
passwd.pw_name = "ahriman"
return passwd
@pytest.fixture
def pyalpm_package_ahriman(aur_package_ahriman: AURPackage) -> MagicMock:
"""
mock object for pyalpm package
Args:
aur_package_ahriman(AURPackage): package fixture
Returns:
MagicMock: pyalpm package mock
"""
mock = MagicMock()
db = type(mock).db = MagicMock()
type(mock).base = PropertyMock(return_value=aur_package_ahriman.package_base)
type(mock).builddate = PropertyMock(
return_value=aur_package_ahriman.last_modified.replace(tzinfo=datetime.timezone.utc).timestamp())
type(mock).conflicts = PropertyMock(return_value=aur_package_ahriman.conflicts)
type(db).name = PropertyMock(return_value="aur")
type(mock).depends = PropertyMock(return_value=aur_package_ahriman.depends)
type(mock).desc = PropertyMock(return_value=aur_package_ahriman.description)
type(mock).licenses = PropertyMock(return_value=aur_package_ahriman.license)
type(mock).makedepends = PropertyMock(return_value=aur_package_ahriman.make_depends)
type(mock).name = PropertyMock(return_value=aur_package_ahriman.name)
type(mock).optdepends = PropertyMock(return_value=aur_package_ahriman.opt_depends)
type(mock).checkdepends = PropertyMock(return_value=aur_package_ahriman.check_depends)
type(mock).packager = PropertyMock(return_value="packager")
type(mock).provides = PropertyMock(return_value=aur_package_ahriman.provides)
type(mock).version = PropertyMock(return_value=aur_package_ahriman.version)
type(mock).url = PropertyMock(return_value=aur_package_ahriman.url)
type(mock).groups = PropertyMock(return_value=aur_package_ahriman.groups)
return mock
@pytest.fixture
def scan_paths(configuration: Configuration) -> ScanPaths:
"""
scan paths fixture
Args:
configuration(Configuration): configuration test instance
Returns:
ScanPaths: scan paths test instance
"""
return ScanPaths(configuration.getlist("build", "scan_paths", fallback=[]))
-40
View File
@@ -1,40 +0,0 @@
[build-system]
requires = [
"hatchling",
]
build-backend = "hatchling.build"
[project]
name = "ahriman-triggers"
description = "ArcH linux ReposItory MANager, additional extensions"
readme = "../README.md"
requires-python = ">=3.13"
license = { file = "../COPYING" }
authors = [
{ name = "ahriman team" },
]
dependencies = [
"ahriman-core",
]
dynamic = [
"version",
]
[project.urls]
Documentation = "https://ahriman.readthedocs.io/"
Repository = "https://github.com/arcan1s/ahriman"
Changelog = "https://github.com/arcan1s/ahriman/releases"
[tool.hatch.version]
path = "../ahriman-core/src/ahriman/__init__.py"
[tool.hatch.build.targets.wheel]
only-include = [
"src/ahriman",
]
sources = [
"src",
]
[tool.hatch.build.targets.wheel.shared-data]
"package/share" = "share"
View File
-63
View File
@@ -1,63 +0,0 @@
[build-system]
requires = [
"hatchling",
]
build-backend = "hatchling.build"
[project]
name = "ahriman-web"
description = "ArcH linux ReposItory MANager, web server"
readme = "../README.md"
requires-python = ">=3.13"
license = { file = "../COPYING" }
authors = [
{ name = "ahriman team" },
]
dependencies = [
"ahriman-core",
"aiohttp",
"aiohttp_cors",
"aiohttp_jinja2",
"aiohttp_sse",
]
dynamic = [
"version",
]
[project.optional-dependencies]
auth = [
"aiohttp_session",
"aiohttp_security",
"cryptography",
]
docs = [
"aiohttp-apispec",
"setuptools",
]
metrics = [
"aiohttp-openmetrics",
]
oauth2 = [
"ahriman-web[auth]",
"aioauth-client",
]
[project.urls]
Documentation = "https://ahriman.readthedocs.io/"
Repository = "https://github.com/arcan1s/ahriman"
Changelog = "https://github.com/arcan1s/ahriman/releases"
[tool.hatch.version]
path = "../ahriman-core/src/ahriman/__init__.py"
[tool.hatch.build.targets.wheel]
only-include = [
"src/ahriman",
]
sources = [
"src",
]
[tool.hatch.build.targets.wheel.shared-data]
"package/lib" = "lib"
"package/share" = "share"
@@ -1,19 +0,0 @@
#
# Copyright (c) 2021-2026 ahriman team.
#
# This file is part of ahriman
# (see https://github.com/arcan1s/ahriman).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
@@ -1,19 +0,0 @@
#
# Copyright (c) 2021-2026 ahriman team.
#
# This file is part of ahriman
# (see https://github.com/arcan1s/ahriman).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
-18
View File
@@ -1,18 +0,0 @@
import pytest
from ahriman.core.auth import Auth
from ahriman.core.configuration import Configuration
@pytest.fixture
def auth(configuration: Configuration) -> Auth:
"""
auth provider fixture
Args:
configuration(Configuration): configuration fixture
Returns:
Auth: auth service instance
"""
return Auth(configuration)
+3 -3
View File
@@ -35,7 +35,7 @@ RUN pacman -S --noconfirm --asdeps \
RUN pacman -S --noconfirm --asdeps \ RUN pacman -S --noconfirm --asdeps \
base-devel \ base-devel \
python-build \ python-build \
python-hatchling \ python-flit \
python-installer \ python-installer \
python-setuptools \ python-setuptools \
python-tox \ python-tox \
@@ -68,8 +68,8 @@ COPY --chown=build . "/home/build/ahriman"
## create package archive and install it ## create package archive and install it
RUN cd "/home/build/ahriman" && \ RUN cd "/home/build/ahriman" && \
tox -e archive && \ tox -e archive && \
cp ./dist/*.tar.gz "archlinux" && \ cp ./dist/*.tar.gz "package/archlinux" && \
cd "archlinux" && \ cd "package/archlinux" && \
runuser -u build -- makepkg --noconfirm --skipchecksums && \ runuser -u build -- makepkg --noconfirm --skipchecksums && \
cd / && rm -r "/home/build/ahriman" cd / && rm -r "/home/build/ahriman"
+16 -9
View File
@@ -1,15 +1,6 @@
ahriman.application.handlers package ahriman.application.handlers package
==================================== ====================================
Subpackages
-----------
.. toctree::
:maxdepth: 4
ahriman.application.handlers.triggers_support
ahriman.application.handlers.web
Submodules Submodules
---------- ----------
@@ -277,6 +268,14 @@ ahriman.application.handlers.triggers module
:no-undoc-members: :no-undoc-members:
:show-inheritance: :show-inheritance:
ahriman.application.handlers.triggers\_support module
-----------------------------------------------------
.. automodule:: ahriman.application.handlers.triggers_support
:members:
:no-undoc-members:
:show-inheritance:
ahriman.application.handlers.unsafe\_commands module ahriman.application.handlers.unsafe\_commands module
---------------------------------------------------- ----------------------------------------------------
@@ -317,6 +316,14 @@ ahriman.application.handlers.versions module
:no-undoc-members: :no-undoc-members:
:show-inheritance: :show-inheritance:
ahriman.application.handlers.web module
---------------------------------------
.. automodule:: ahriman.application.handlers.web
:members:
:no-undoc-members:
:show-inheritance:
Module contents Module contents
--------------- ---------------
@@ -1,21 +0,0 @@
ahriman.application.handlers.triggers\_support package
======================================================
Submodules
----------
ahriman.application.handlers.triggers\_support.triggers\_support module
-----------------------------------------------------------------------
.. automodule:: ahriman.application.handlers.triggers_support.triggers_support
:members:
:no-undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: ahriman.application.handlers.triggers_support
:members:
:no-undoc-members:
:show-inheritance:
-21
View File
@@ -1,21 +0,0 @@
ahriman.application.handlers.web package
========================================
Submodules
----------
ahriman.application.handlers.web.web module
-------------------------------------------
.. automodule:: ahriman.application.handlers.web.web
:members:
:no-undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: ahriman.application.handlers.web
:members:
:no-undoc-members:
:show-inheritance:
+17 -22
View File
@@ -1,19 +1,19 @@
# This file was autogenerated by uv via the following command: # This file was autogenerated by uv via the following command:
# uv pip compile --group pyproject.toml:docs --no-emit-package ahriman-core --no-emit-package ahriman-triggers --no-emit-package ahriman-web --output-file docs/requirements.txt pyproject.toml # uv pip compile --group pyproject.toml:docs --extra s3 --extra validator --extra web --output-file docs/requirements.txt pyproject.toml
aiohappyeyeballs==2.6.1 aiohappyeyeballs==2.6.1
# via aiohttp # via aiohttp
aiohttp==3.11.18 aiohttp==3.11.18
# via # via
# ahriman-web # ahriman (pyproject.toml)
# aiohttp-cors # aiohttp-cors
# aiohttp-jinja2 # aiohttp-jinja2
# aiohttp-sse # aiohttp-sse
aiohttp-cors==0.8.1 aiohttp-cors==0.8.1
# via ahriman-web # via ahriman (pyproject.toml)
aiohttp-jinja2==1.6 aiohttp-jinja2==1.6
# via ahriman-web # via ahriman (pyproject.toml)
aiohttp-sse==2.2.0 aiohttp-sse==2.2.0
# via ahriman-web # via ahriman (pyproject.toml)
aiosignal==1.3.2 aiosignal==1.3.2
# via aiohttp # via aiohttp
alabaster==1.0.0 alabaster==1.0.0
@@ -25,15 +25,15 @@ attrs==25.3.0
babel==2.17.0 babel==2.17.0
# via sphinx # via sphinx
bcrypt==4.3.0 bcrypt==4.3.0
# via ahriman-core # via ahriman (pyproject.toml)
boto3==1.43.47 boto3==1.38.11
# via ahriman-core # via ahriman (pyproject.toml)
botocore==1.43.47 botocore==1.38.11
# via # via
# boto3 # boto3
# s3transfer # s3transfer
cerberus==1.3.8 cerberus==1.3.7
# via ahriman-core # via ahriman (pyproject.toml)
certifi==2025.4.26 certifi==2025.4.26
# via requests # via requests
charset-normalizer==3.4.2 charset-normalizer==3.4.2
@@ -44,7 +44,7 @@ docutils==0.21.2
# sphinx-argparse # sphinx-argparse
# sphinx-rtd-theme # sphinx-rtd-theme
filelock==3.24.0 filelock==3.24.0
# via ahriman-core # via ahriman (pyproject.toml)
frozenlist==1.6.0 frozenlist==1.6.0
# via # via
# aiohttp # aiohttp
@@ -56,12 +56,12 @@ idna==3.10
imagesize==1.4.1 imagesize==1.4.1
# via sphinx # via sphinx
inflection==0.5.1 inflection==0.5.1
# via ahriman-core # via ahriman (pyproject.toml)
jinja2==3.1.6 jinja2==3.1.6
# via # via
# aiohttp-jinja2 # aiohttp-jinja2
# sphinx # sphinx
jmespath==1.1.0 jmespath==1.0.1
# via # via
# boto3 # boto3
# botocore # botocore
@@ -80,18 +80,18 @@ propcache==0.3.1
pydeps==3.0.1 pydeps==3.0.1
# via ahriman (pyproject.toml:docs) # via ahriman (pyproject.toml:docs)
pyelftools==0.32 pyelftools==0.32
# via ahriman-core # via ahriman (pyproject.toml)
pygments==2.19.1 pygments==2.19.1
# via sphinx # via sphinx
python-dateutil==2.9.0.post0 python-dateutil==2.9.0.post0
# via botocore # via botocore
requests==2.32.3 requests==2.32.3
# via # via
# ahriman-core # ahriman (pyproject.toml)
# sphinx # sphinx
roman-numerals-py==3.1.0 roman-numerals-py==3.1.0
# via sphinx # via sphinx
s3transfer==0.19.1 s3transfer==0.12.0
# via boto3 # via boto3
shtab==1.7.2 shtab==1.7.2
# via ahriman (pyproject.toml:docs) # via ahriman (pyproject.toml:docs)
@@ -131,8 +131,3 @@ urllib3==2.4.0
# requests # requests
yarl==1.20.0 yarl==1.20.0
# via aiohttp # via aiohttp
# The following packages were excluded from the output:
# ahriman-core
# ahriman-triggers
# ahriman-web
+1 -1
View File
@@ -19,7 +19,7 @@ export default defineConfig({
build: { build: {
chunkSizeWarningLimit: 10000, chunkSizeWarningLimit: 10000,
emptyOutDir: false, emptyOutDir: false,
outDir: path.resolve(__dirname, "../ahriman-web/package/share/ahriman/templates"), outDir: path.resolve(__dirname, "../package/share/ahriman/templates"),
rolldownOptions: { rolldownOptions: {
output: { output: {
assetFileNames: "static/[name].[ext]", assetFileNames: "static/[name].[ext]",
@@ -9,7 +9,7 @@ arch=('any')
url="https://ahriman.readthedocs.io/" url="https://ahriman.readthedocs.io/"
license=('GPL-3.0-or-later') license=('GPL-3.0-or-later')
depends=('devtools>=1:1.0.0' 'git' 'pyalpm' 'python-bcrypt' 'python-filelock' 'python-inflection' 'python-pyelftools' 'python-requests') depends=('devtools>=1:1.0.0' 'git' 'pyalpm' 'python-bcrypt' 'python-filelock' 'python-inflection' 'python-pyelftools' 'python-requests')
makedepends=('npm' 'python-build' 'python-hatchling' 'python-installer' 'python-wheel') makedepends=('npm' 'python-build' 'python-flit' 'python-installer' 'python-wheel')
source=("https://github.com/arcan1s/ahriman/releases/download/$pkgver/$pkgbase-$pkgver.tar.gz" source=("https://github.com/arcan1s/ahriman/releases/download/$pkgver/$pkgbase-$pkgver.tar.gz"
"$pkgbase.sysusers" "$pkgbase.sysusers"
"$pkgbase.tmpfiles") "$pkgbase.tmpfiles")
@@ -20,9 +20,7 @@ build() {
npm --prefix "frontend" install --cache "$srcdir/npm-cache" npm --prefix "frontend" install --cache "$srcdir/npm-cache"
npm --prefix "frontend" run build npm --prefix "frontend" run build
python -m build --wheel --no-isolation ahriman-core python -m build --wheel --no-isolation
python -m build --wheel --no-isolation ahriman-triggers
python -m build --wheel --no-isolation ahriman-web
} }
package_ahriman() { package_ahriman() {
@@ -50,7 +48,8 @@ package_ahriman-core() {
cd "$pkgbase-$pkgver" cd "$pkgbase-$pkgver"
python -m installer --destdir="$pkgdir" "$pkgname/dist/ahriman_core-$pkgver-py3-none-any.whl" python -m installer --destdir="$pkgdir" "dist/$pkgbase-$pkgver-py3-none-any.whl"
python subpackages.py "$pkgdir" "$pkgname"
# keep usr/share configs as reference and copy them to /etc # keep usr/share configs as reference and copy them to /etc
install -Dm644 "$pkgdir/usr/share/$pkgbase/settings/ahriman.ini" "$pkgdir/etc/ahriman.ini" install -Dm644 "$pkgdir/usr/share/$pkgbase/settings/ahriman.ini" "$pkgdir/etc/ahriman.ini"
@@ -69,7 +68,8 @@ package_ahriman-triggers() {
cd "$pkgbase-$pkgver" cd "$pkgbase-$pkgver"
python -m installer --destdir="$pkgdir" "$pkgname/dist/ahriman_triggers-$pkgver-py3-none-any.whl" python -m installer --destdir="$pkgdir" "dist/$pkgbase-$pkgver-py3-none-any.whl"
python subpackages.py "$pkgdir" "$pkgname"
install -Dm644 "$pkgdir/usr/share/$pkgbase/settings/ahriman.ini.d/00-triggers.ini" "$pkgdir/etc/ahriman.ini.d/00-triggers.ini" install -Dm644 "$pkgdir/usr/share/$pkgbase/settings/ahriman.ini.d/00-triggers.ini" "$pkgdir/etc/ahriman.ini.d/00-triggers.ini"
} }
@@ -88,7 +88,8 @@ package_ahriman-web() {
cd "$pkgbase-$pkgver" cd "$pkgbase-$pkgver"
python -m installer --destdir="$pkgdir" "$pkgname/dist/ahriman_web-$pkgver-py3-none-any.whl" python -m installer --destdir="$pkgdir" "dist/$pkgbase-$pkgver-py3-none-any.whl"
python subpackages.py "$pkgdir" "$pkgname"
install -Dm644 "$pkgdir/usr/share/$pkgbase/settings/ahriman.ini.d/00-web.ini" "$pkgdir/etc/ahriman.ini.d/00-web.ini" install -Dm644 "$pkgdir/usr/share/$pkgbase/settings/ahriman.ini.d/00-web.ini" "$pkgdir/etc/ahriman.ini.d/00-web.ini"
} }

Before

Width:  |  Height:  |  Size: 181 KiB

After

Width:  |  Height:  |  Size: 181 KiB

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 57 KiB

+84 -47
View File
@@ -1,26 +1,86 @@
[build-system] [build-system]
requires = [ requires = ["flit_core"]
"hatchling", build-backend = "flit_core.buildapi"
]
build-backend = "hatchling.build"
[project] [project]
name = "ahriman" name = "ahriman"
description = "ArcH linux ReposItory MANager" description = "ArcH linux ReposItory MANager"
readme = "README.md" readme = "README.md"
requires-python = ">=3.13" requires-python = ">=3.13"
license = {file = "COPYING"} license = {file = "COPYING"}
authors = [ authors = [
{name = "ahriman team"}, {name = "ahriman team"},
] ]
dependencies = [ dependencies = [
"ahriman-core", "bcrypt",
"ahriman-triggers", "filelock",
"ahriman-web", "inflection",
"pyelftools",
"requests",
] ]
dynamic = [
"version", dynamic = ["version"]
[project.optional-dependencies]
journald = [
"systemd-python",
] ]
# FIXME technically this dependency is required, but in some cases we do not have access to
# the libalpm which is required in order to install the package. Thus in case if we do not
# really need to run the application we can move it to "optional" dependencies
pacman = [
"pyalpm",
]
reports = [
"Jinja2",
]
s3 = [
"boto3",
]
shell = [
"IPython"
]
stats = [
"matplotlib",
]
unixsocket = [
"requests-unixsocket2", # required by unix socket support
]
validator = [
"cerberus",
]
web = [
"aiohttp",
"aiohttp_cors",
"aiohttp_jinja2",
"aiohttp_sse",
]
web-auth = [
"ahriman[web]",
"aiohttp_session",
"aiohttp_security",
"cryptography",
]
web-docs = [
"ahriman[web]",
"aiohttp-apispec",
"setuptools", # required by aiohttp-apispec
]
web-metrics = [
"ahriman[web]",
"aiohttp-openmetrics",
]
web-oauth2 = [
"ahriman[web-auth]",
"aioauth-client",
]
[project.scripts]
ahriman = "ahriman.application.ahriman:run"
[project.urls] [project.urls]
Documentation = "https://ahriman.readthedocs.io/" Documentation = "https://ahriman.readthedocs.io/"
@@ -35,7 +95,6 @@ check = [
"pylint", "pylint",
] ]
docs = [ docs = [
"ahriman-core[s3,validator]",
"Sphinx", "Sphinx",
"argparse-manpage", "argparse-manpage",
"pydeps", "pydeps",
@@ -53,43 +112,21 @@ tests = [
"pytest-spec", "pytest-spec",
] ]
[tool.hatch.build.targets.sdist] [tool.flit.sdist]
include = [
"AUTHORS",
"CONTRIBUTING.md",
"SECURITY.md",
"package",
"frontend",
"subpackages.py",
"web.png",
]
exclude = [ exclude = [
"/.github", "package/archlinux",
"/docker", "frontend/node_modules",
"/package/archlinux", "frontend/package-lock.json",
"/recipes",
"/tools",
"/.bandit.yml",
"/.dockerignore",
"/.pylint.toml",
"/.readthedocs.yml",
"/github-logo.png",
"/tox.toml",
"/toxfile.py",
] ]
[tool.hatch.build.targets.wheel] [tool.flit.external-data]
bypass-selection = true directory = "package"
[tool.hatch.envs.default]
workspace.members = [
{ path = "ahriman-core" },
{ path = "ahriman-triggers" },
{ path = "ahriman-web" },
]
[tool.hatch.version]
path = "ahriman-core/src/ahriman/__init__.py"
[tool.uv.sources]
ahriman-core = { workspace = true }
ahriman-triggers = { workspace = true }
ahriman-web = { workspace = true }
[tool.uv.workspace]
members = [
"ahriman-core",
"ahriman-triggers",
"ahriman-web",
]

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