From e4317469d16a8292b4ca555a1008e20897f0433e Mon Sep 17 00:00:00 2001 From: Evgeniy Alekseev Date: Sun, 7 Mar 2021 15:35:48 +0300 Subject: [PATCH] add ability to add archive as well --- package/archlinux/PKGBUILD | 2 +- src/ahriman/application/ahriman.py | 4 ++-- src/ahriman/application/application.py | 13 ++++++++++++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/package/archlinux/PKGBUILD b/package/archlinux/PKGBUILD index 1b53e124..075c8e63 100644 --- a/package/archlinux/PKGBUILD +++ b/package/archlinux/PKGBUILD @@ -16,7 +16,7 @@ source=("https://github.com/arcan1s/ahriman/releases/download/$pkgver/$pkgname-$ 'ahriman.sudoers' 'ahriman.sysusers' 'ahriman.tmpfiles') -sha512sums=('db4409942e3189da01fa41f5432e634c8a3ce4013cd19ef15d63cb1123010702c2f5636fb25ba43e64cdf198b082f8d54dfd448f30288b2fc96e7b30ea213258' +sha512sums=('b2ed7733fc73156edc0ff81db7626a3790a1c63ba89621890526f424c2bea8c4d52a4840702a679bfba80fe28244da86ae676f22b357dfa52ef9f543d2cfbb41' '8c9b5b63ac3f7b4d9debaf801a1e9c060877c33d3ecafe18010fcca778e5fa2f2e46909d3d0ff1b229ff8aa978445d8243fd36e1fc104117ed678d5e21901167' '13718afec2c6786a18f0b223ef8e58dccf0688bca4cdbe203f14071f5031ed20120eb0ce38b52c76cfd6e8b6581a9c9eaa2743eb11abbaca637451a84c33f075' '55b20f6da3d66e7bbf2add5d95a3b60632df121717d25a993e56e737d14f51fe063eb6f1b38bd81cc32e05db01c0c1d80aaa720c45cde87f238d8b46cdb8cbc4') diff --git a/src/ahriman/application/ahriman.py b/src/ahriman/application/ahriman.py index 6780660e..df010057 100644 --- a/src/ahriman/application/ahriman.py +++ b/src/ahriman/application/ahriman.py @@ -71,7 +71,7 @@ def update(args: argparse.Namespace) -> None: packages = app.get_updates(args.no_aur, args.no_manual, log_fn) if args.dry_run: return - app.update(packages) # type: ignore + app.update(packages) if __name__ == '__main__': @@ -84,7 +84,7 @@ if __name__ == '__main__': subparsers = parser.add_subparsers(title='command') add_parser = subparsers.add_parser('add', description='add package') - add_parser.add_argument('package', help='package name', nargs='+') + add_parser.add_argument('package', help='package name or archive path', nargs='+') add_parser.set_defaults(fn=add) check_parser = subparsers.add_parser('check', description='check for updates') diff --git a/src/ahriman/application/application.py b/src/ahriman/application/application.py index 737c02f5..ea912601 100644 --- a/src/ahriman/application/application.py +++ b/src/ahriman/application/application.py @@ -19,6 +19,7 @@ # import logging import os +import shutil from typing import Callable, List, Optional @@ -55,11 +56,21 @@ class Application: return updates def add(self, names: List[str]) -> None: - for name in names: + def add_manual(name: str) -> None: package = Package.load(name, self.config.get('aur', 'url')) task = Task(package, self.architecture, self.config, self.repository.paths) task.fetch(os.path.join(self.repository.paths.manual, package.name)) + def add_archive(src: str) -> None: + dst = os.path.join(self.repository.paths.packages, os.path.basename(src)) + shutil.move(src, dst) + + for name in names: + if os.path.isfile(name): + add_archive(name) + else: + add_manual(name) + def remove(self, names: List[str]) -> None: self.repository.process_remove(names) self._finalize()