This commit is contained in:
2025-04-21 10:34:44 +02:00
parent 555c781aed
commit b2a6a184a4

View File

@@ -0,0 +1,95 @@
# SPDX-FileCopyrightText: 2025 KUNBUS GmbH
# SPDX-License-Identifier: GPL-2.0-or-later
"""Command-Line for the picontrol object of CLI."""
from argparse import ArgumentParser
from logging import getLogger
from .dbus_helper import BusType, simple_call
from .. import proginit as pi
from ..dbus_middleware1 import extend_interface
log = getLogger(__name__)
def add_subparsers(parent_parser: ArgumentParser):
parent_parser.add_argument(
"action",
choices=["enable", "disable", "status", "available"],
help="Action to be executed: enable, disable, status or available",
)
# Load dynamic features from dbus
simple_call()
parent_parser.add_argument(
"feature",
choices=[
"gui",
"revpi-con-can",
"dphys-swapfile",
"pimodbus-master",
"pimodbus-slave",
"systemd-timesyncd",
"ssh",
"nodered",
"noderedrevpinodes-server",
"revpipyload",
"bluetooth",
"ieee80211",
"avahi",
"external-antenna",
],
help="Name des Features, das konfiguriert werden soll",
)
def main() -> int:
action = pi.pargs.action
dbus_value = False
try:
if action == "enable":
simple_call(
"Enable",
pi.pargs.feature,
interface=extend_interface("RevpiConfig"),
bus_type=BusType.SESSION if pi.pargs.use_session_bus else BusType.SYSTEM,
)
elif action == "disable":
simple_call(
"Disable",
pi.pargs.feature,
interface=extend_interface("RevpiConfig"),
bus_type=BusType.SESSION if pi.pargs.use_session_bus else BusType.SYSTEM,
)
elif action == "status":
dbus_value = simple_call(
"GetStatus",
pi.pargs.feature,
interface=extend_interface("RevpiConfig"),
bus_type=BusType.SESSION if pi.pargs.use_session_bus else BusType.SYSTEM,
)
elif action == "available":
dbus_value = simple_call(
"GetAvailability",
pi.pargs.feature,
interface=extend_interface("RevpiConfig"),
bus_type=BusType.SESSION if pi.pargs.use_session_bus else BusType.SYSTEM,
)
else:
raise Exception(f"Unknown action: {action}")
except Exception as e:
log.error(f"Error: {e}")
return 1
log.debug(
f"D-Bus call of method {action} for feature {pi.pargs.feature} returned: {dbus_value}"
)
print(int(dbus_value))
return 0