diff --git a/README.md b/README.md index cdd8b157..73d195f5 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ Wrapper for managing custom repository inspired by [repo-scripts](https://github * Add packages by using `ahriman add {package}` command: ```shell - sudo -u ahriman ahriman -a x86_64 add yay + sudo -u ahriman ahriman -a x86_64 add yay --now ``` Note that initial service configuration can be done by running `ahriman setup` with specific arguments. diff --git a/src/ahriman/application/ahriman.py b/src/ahriman/application/ahriman.py index b8389675..12902b0b 100644 --- a/src/ahriman/application/ahriman.py +++ b/src/ahriman/application/ahriman.py @@ -77,6 +77,7 @@ def _set_add_parser(root: SubParserAction) -> argparse.ArgumentParser: parser = root.add_parser("add", help="add package", description="add package", formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument("package", help="package base/name or archive path", nargs="+") + parser.add_argument("--now", help="run update function after", action="store_true") parser.add_argument("--without-dependencies", help="do not add dependencies", action="store_true") parser.set_defaults(handler=handlers.Add) return parser diff --git a/src/ahriman/application/handlers/add.py b/src/ahriman/application/handlers/add.py index 854c5c71..4af8de55 100644 --- a/src/ahriman/application/handlers/add.py +++ b/src/ahriman/application/handlers/add.py @@ -39,4 +39,10 @@ class Add(Handler): :param architecture: repository architecture :param configuration: configuration instance """ - Application(architecture, configuration).add(args.package, args.without_dependencies) + application = Application(architecture, configuration) + application.add(args.package, args.without_dependencies) + if not args.now: + return + + packages = application.get_updates(args.package, True, False, True, application.logger.info) + application.update(packages) diff --git a/tests/ahriman/application/handlers/test_handler_add.py b/tests/ahriman/application/handlers/test_handler_add.py index 4a6f0a4e..66a1c19c 100644 --- a/tests/ahriman/application/handlers/test_handler_add.py +++ b/tests/ahriman/application/handlers/test_handler_add.py @@ -8,6 +8,7 @@ from ahriman.core.configuration import Configuration def _default_args(args: argparse.Namespace) -> argparse.Namespace: args.package = [] + args.now = False args.without_dependencies = False return args @@ -22,3 +23,19 @@ def test_run(args: argparse.Namespace, configuration: Configuration, mocker: Moc Add.run(args, "x86_64", configuration) application_mock.assert_called_once() + + +def test_run_with_updates(args: argparse.Namespace, configuration: Configuration, mocker: MockerFixture) -> None: + """ + must run command with updates after + """ + args = _default_args(args) + args.now = True + mocker.patch("pathlib.Path.mkdir") + mocker.patch("ahriman.application.application.Application.add") + application_mock = mocker.patch("ahriman.application.application.Application.update") + updates_mock = mocker.patch("ahriman.application.application.Application.get_updates") + + Add.run(args, "x86_64", configuration) + application_mock.assert_called_once() + updates_mock.assert_called_once()