diff --git a/README.md b/README.md index 99dbda44..1b2be2dc 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,14 @@ Wrapper for managing custom repository inspired by [repo-scripts](https://github.com/arcan1s/repo-scripts). +## Features + +* Install-configure-forget manager for own repository +* VCS packages support +* Sign support with gpg +* Synchronization to remote services and report generation +* Repository status interface + ## Installation and run * Install package as usual. diff --git a/package/archlinux/PKGBUILD b/package/archlinux/PKGBUILD index 3b161512..ed524cc9 100644 --- a/package/archlinux/PKGBUILD +++ b/package/archlinux/PKGBUILD @@ -24,7 +24,7 @@ source=("https://github.com/arcan1s/ahriman/releases/download/$pkgver/$pkgname-$ 'ahriman.sudoers' 'ahriman.sysusers' 'ahriman.tmpfiles') -sha512sums=('c1051769f0ce307c9a9a69ba721a3e5abe0a0df0e7ce07f1e482f931a52e715820cda69186c8d65ee8407f1f013c51c2633b15f35e1964732af3c4d3e137665a' +sha512sums=('c9d270fd1f9474071fe1e1b3e1a2ca5e1cff50460af269ce9bc33c228d93b8ed2faa57e6f08c38360da3ccdec0eb48715583c5d69499373ebfdaef5facb0f6d6' '8c9b5b63ac3f7b4d9debaf801a1e9c060877c33d3ecafe18010fcca778e5fa2f2e46909d3d0ff1b229ff8aa978445d8243fd36e1fc104117ed678d5e21901167' '13718afec2c6786a18f0b223ef8e58dccf0688bca4cdbe203f14071f5031ed20120eb0ce38b52c76cfd6e8b6581a9c9eaa2743eb11abbaca637451a84c33f075' '55b20f6da3d66e7bbf2add5d95a3b60632df121717d25a993e56e737d14f51fe063eb6f1b38bd81cc32e05db01c0c1d80aaa720c45cde87f238d8b46cdb8cbc4') diff --git a/package/share/ahriman/repo-index.jinja2 b/package/share/ahriman/repo-index.jinja2 index e1ebf615..38879212 100644 --- a/package/share/ahriman/repo-index.jinja2 +++ b/package/share/ahriman/repo-index.jinja2 @@ -5,7 +5,7 @@ -

ArchLinux custom repository

+

Archlinux custom repository

{% if pgp_key is not none %}

This repository is signed with {{ pgp_key|e }}.

@@ -29,4 +29,4 @@ {% endif %} - \ No newline at end of file + diff --git a/src/ahriman/application/ahriman.py b/src/ahriman/application/ahriman.py index 2fc90450..b16f1b7e 100644 --- a/src/ahriman/application/ahriman.py +++ b/src/ahriman/application/ahriman.py @@ -20,6 +20,8 @@ import argparse import os +from typing import Optional + import ahriman.version as version from ahriman.application.application import Application @@ -38,7 +40,22 @@ def _get_config(config_path: str) -> Configuration: return config -def _remove_lock(path: str) -> None: +def _lock_check(path: Optional[str]) -> None: + if path is None: + return + if os.path.exists(args.lock): + raise RuntimeError('Another application instance is run') + + +def _lock_create(path: Optional[str]) -> None: + if path is None: + return + open(path, 'w').close() + + +def _lock_remove(path: Optional[str]) -> None: + if path is None: + return if os.path.exists(path): os.remove(path) @@ -120,22 +137,21 @@ if __name__ == '__main__': update_parser.set_defaults(fn=update) web_parser = subparsers.add_parser('web', description='start web server') - web_parser.set_defaults(fn=web, lock='/tmp/ahriman-web.lock') + web_parser.set_defaults(fn=web, lock=None) args = parser.parse_args() if args.force: - _remove_lock(args.lock) - if os.path.exists(args.lock): - raise RuntimeError('Another application instance is run') + _lock_remove(args.lock) + _lock_check(args.lock) if 'fn' not in args: parser.print_help() exit(1) try: - open(args.lock, 'w').close() + _lock_create(args.lock) args.fn(args) finally: - _remove_lock(args.lock) + _lock_remove(args.lock)