From 948914c270d84a9c3a61b5bda31ed842c363d1f8 Mon Sep 17 00:00:00 2001 From: Kivi Kaitaniemi Date: Thu, 16 May 2024 21:09:46 +0300 Subject: [PATCH] Add enabled_modules & created_files to Store --- src/decman/app.py | 19 ++++++++++++++++--- tests/test_source_resolution.py | 24 +++++++++++++++--------- 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/src/decman/app.py b/src/decman/app.py index 4be229c..e5c4d65 100644 --- a/src/decman/app.py +++ b/src/decman/app.py @@ -52,6 +52,10 @@ def main(): action="store_true", default=False, help="don't enable/disable systemd units") + parser.add_argument("--no-commands", + action="store_true", + default=False, + help="don't run user specified commands") parser.add_argument("--upgrade-devel", action="store_true", default=False, @@ -137,7 +141,7 @@ def _set_up(store: l.Store, args): sys.path.append(".") exec(content) - return args.print, not args.no_packages, not args.no_foreign_packages, not args.no_files, not args.no_systemd_units, args.upgrade_devel, args.force_build + return args.print, not args.no_packages, not args.no_foreign_packages, not args.no_files, not args.no_systemd_units, not args.no_commands, args.upgrade_devel, args.force_build class Core: @@ -146,7 +150,7 @@ class Core: """ def __init__(self, store: l.Store, opts): - self.only_print, self.update_packages, self.update_foreign_packages, self.update_files, self.update_units, self.upgrade_devel, self.force_build = opts + self.only_print, self.update_packages, self.update_foreign_packages, self.update_files, self.update_units, self.run_commands, self.upgrade_devel, self.force_build = opts self.store = store self.source = _resolve_source() @@ -179,7 +183,14 @@ class Core: if self.update_units: self._enable_units() - self._run_modules() + if self.run_commands: + self._run_modules() + all_enabled_modules = {} + for mod, version in self.source.all_enabled_modules(): + all_enabled_modules[mod] = version + # Enabled modules are really only stored for commands, + # so they can be set only when the commands were exacuted. + self.store.enabled_modules = all_enabled_modules def _disable_units(self): to_disable = self.source.units_to_disable(self.store) @@ -246,6 +257,8 @@ class Core: l.print_error(f"{e}") l.print_warning(f"Failed to remove file: {file}") + self.store.created_files = all_created + def _enable_units(self): to_enable = self.source.units_to_enable(self.store) l.print_list_summary("Enabling systemd units:", to_enable) diff --git a/tests/test_source_resolution.py b/tests/test_source_resolution.py index 5ed6fc4..e83b879 100644 --- a/tests/test_source_resolution.py +++ b/tests/test_source_resolution.py @@ -112,16 +112,16 @@ class TestSource(unittest.TestCase): self.enabled_module = EnabledTestModule() self.existing_module = ExistingTestModule() self.existing_module_changed = ExistingChangedVersionTestModule() - modules = [ + modules = { self.enabled_module, self.disabled_module, self.existing_module, self.existing_module_changed, - ] + } source = Source( - pacman_packages=["p1", "p2", "p3"], - aur_packages=["A1", "A2", "A3"], - user_packages=[ + pacman_packages={"p1", "p2", "p3"}, + aur_packages={"A1", "A2", "A3"}, + user_packages={ UserPackage( pkgname="U1", version="1", @@ -134,10 +134,10 @@ class TestSource(unittest.TestCase): dependencies=["d2"], git_url="/am/url/yes", ) - ], - ignored_packages=["i1", "i2"], - systemd_units=["1.service", "2.timer"], - systemd_user_units={"user": ["u1.service", "u2.timer"]}, + }, + ignored_packages={"i1", "i2"}, + systemd_units={"1.service", "2.timer"}, + systemd_user_units={"user": {"u1.service", "u2.timer"}}, modules=modules, files={}, directories={}, @@ -173,6 +173,12 @@ class TestSource(unittest.TestCase): self.store = store self.currently_installed_packages = currently_installed_packages + def test_all_enabled_modules(self): + enabled_modules = [("Enabled", "1"), ("Existing", "1"), + ("ExistingChanged", "2")] + self.assertCountEqual(self.source.all_enabled_modules(), + enabled_modules) + def test_files_to_remove(self): created_files = ["/test/file1", "/test/file4"] self.assertCountEqual(