[elbe-devel] [PATCH 2/2] elbepack: control: introduce del_all_projects

Thomas Weißschuh thomas.weissschuh at linutronix.de
Mon May 26 09:48:05 CEST 2025


To clean the initvm it is useful to delete all projects at once.
So far this required custom scripting by the user.

Introduce a new command to delete all projects at once.

Suggested-by: INgo Rah <ingo.rah at linutronix.de>
Signed-off-by: Thomas Weißschuh <thomas.weissschuh at linutronix.de>
---
 bash-completion                             | 2 +-
 docs/elbe-control.rst                       | 4 ++++
 elbepack/commands/control.py                | 7 +++++++
 newsfragments/+del_all_projects.feature.rst | 1 +
 4 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/bash-completion b/bash-completion
index 3b44a93cb1dd020ec67fd54e3b87322b7c967425..1f4675e1f103808fcc53e08ef8f186677c249620 100644
--- a/bash-completion
+++ b/bash-completion
@@ -107,7 +107,7 @@ _cmd_args_completion_elbe()
                 file_arg=true
                 disable_space=true
                 cmd_opt=$(_elbe_subcmd_with_opt 'rm_log list_projects create_project reset_project \
-                                                 del_project set_xml build build_sysroot build_sdk build_cdroms get_file \
+                                                 del_project del_all_projects set_xml build build_sysroot build_sdk build_cdroms get_file \
                                                  build_chroot_tarball dump_file get_files wait_busy set_cdrom set_orig \
 						 set_pdebuild build_pbuilder update_pbuilder')
                 ;;
diff --git a/docs/elbe-control.rst b/docs/elbe-control.rst
index 36a8e75eb55887a05887628d4b8d650ef27673fe..f4d391654624ab249844918f56ccf3bba64b0cfa 100644
--- a/docs/elbe-control.rst
+++ b/docs/elbe-control.rst
@@ -26,6 +26,7 @@ SYNOPSIS
       elbe control [options] wait_busy <build-dir>
       elbe control [options] set_xml <build-dir> <xmlfile>
       elbe control [options] del_project <build-dir>
+      elbe control [options] del_all_projects
       elbe control [options] build_pbuilder <build-dir>
       elbe control [options] build <build-dir>
       elbe control [options] rm_log <build-dir>
@@ -160,6 +161,9 @@ a ./debian folder with a valid debianization.
 *del_project* <build-dir>
    Delete project in <build-dir>
 
+*del_all_projects*
+   Delete all projects
+
 *build_pbuilder* <build-dir>
    Build a pbuilder environment for the given project <build-dir>.
 
diff --git a/elbepack/commands/control.py b/elbepack/commands/control.py
index 3d3f647ed049f01afc539426f2117267e7027a65..2fc3ea1722ce132d8f7aae86726058e59080e5a3 100644
--- a/elbepack/commands/control.py
+++ b/elbepack/commands/control.py
@@ -50,6 +50,12 @@ def _delete_project(client, args):
     client.service.del_project(args.project_dir)
 
 
+def _delete_all_projects(client, args):
+    for project in client.list_projects():
+        print(f'Deleting {project.builddir} {project.name}')
+        client.service.del_project(project.builddir)
+
+
 @_add_project_dir_argument
 @add_argument('xml')
 def _set_xml(client, args):
@@ -186,6 +192,7 @@ _client_actions = {
     'create_project':       _create_project,
     'reset_project':        _reset_project,
     'del_project':          _delete_project,
+    'del_all_projects':     _delete_all_projects,
     'set_xml':              _set_xml,
     'build':                _build,
     'build_sysroot':        _build_sysroot,
diff --git a/newsfragments/+del_all_projects.feature.rst b/newsfragments/+del_all_projects.feature.rst
new file mode 100644
index 0000000000000000000000000000000000000000..412f10fb9532e85bf6cc296379e85dbc6a68bd88
--- /dev/null
+++ b/newsfragments/+del_all_projects.feature.rst
@@ -0,0 +1 @@
+Introduce `elbe control del_all_projects` to delete all projects at once.

-- 
2.49.0



More information about the elbe-devel mailing list