Add a set-container-runtime option to dangerzone-cli

This sets the container runtime in the settings, and provides an easy
way to do so for users, without having to mess with the json settings.
This commit is contained in:
Alexis Métaireau 2025-03-28 13:31:23 +01:00
parent 2e254ee0fa
commit 73d7a46690
No known key found for this signature in database
GPG key ID: C65C7A89A8FFC56E

View file

@ -11,6 +11,7 @@ from .isolation_provider.container import Container
from .isolation_provider.dummy import Dummy from .isolation_provider.dummy import Dummy
from .isolation_provider.qubes import Qubes, is_qubes_native_conversion from .isolation_provider.qubes import Qubes, is_qubes_native_conversion
from .logic import DangerzoneCore from .logic import DangerzoneCore
from .settings import Settings
from .util import get_version, replace_control_chars from .util import get_version, replace_control_chars
@ -48,6 +49,11 @@ def print_header(s: str) -> None:
flag_value=True, flag_value=True,
help="Run Dangerzone in debug mode, to get logs from gVisor.", help="Run Dangerzone in debug mode, to get logs from gVisor.",
) )
@click.option(
"--set-container-runtime",
required=False,
help="The path to the container runtime you want to set in the settings",
)
@click.version_option(version=get_version(), message="%(version)s") @click.version_option(version=get_version(), message="%(version)s")
@errors.handle_document_errors @errors.handle_document_errors
def cli_main( def cli_main(
@ -57,8 +63,14 @@ def cli_main(
archive: bool, archive: bool,
dummy_conversion: bool, dummy_conversion: bool,
debug: bool, debug: bool,
set_container_runtime: Optional[str] = None,
) -> None: ) -> None:
setup_logging() setup_logging()
display_banner()
if set_container_runtime:
settings = Settings()
settings.set("container_runtime", set_container_runtime, autosave=True)
click.echo(f"Set the settings container_runtime to {set_container_runtime}")
if getattr(sys, "dangerzone_dev", False) and dummy_conversion: if getattr(sys, "dangerzone_dev", False) and dummy_conversion:
dangerzone = DangerzoneCore(Dummy()) dangerzone = DangerzoneCore(Dummy())
@ -67,7 +79,6 @@ def cli_main(
else: else:
dangerzone = DangerzoneCore(Container(debug=debug)) dangerzone = DangerzoneCore(Container(debug=debug))
display_banner()
if len(filenames) == 1 and output_filename: if len(filenames) == 1 and output_filename:
dangerzone.add_document_from_filename(filenames[0], output_filename, archive) dangerzone.add_document_from_filename(filenames[0], output_filename, archive)
elif len(filenames) > 1 and output_filename: elif len(filenames) > 1 and output_filename: