improved formatters

This commit is contained in:
Maxim Devaev 2022-06-09 15:14:33 +03:00
parent 55b2eb3bb1
commit 4d415244b2

View File

@ -29,6 +29,7 @@ import argparse
from typing import List from typing import List
from typing import IO from typing import IO
from typing import Generator from typing import Generator
from typing import Callable
from typing import Optional from typing import Optional
from ...validators.basic import valid_bool from ...validators.basic import valid_bool
@ -167,6 +168,14 @@ class _Edid:
self.__data[131] &= (0xFF - 0b01000000) # ~X self.__data[131] &= (0xFF - 0b01000000) # ~X
def _format_bool(value: bool) -> str:
return ("yes" if value else "no")
def _make_format_hex(size: int) -> Callable[[int], str]:
return (lambda value: ("0x{:0%dX} ({})" % (size * 2)).format(value, value))
# ===== # =====
def main(argv: Optional[List[str]]=None) -> None: def main(argv: Optional[List[str]]=None) -> None:
# (parent_parser, argv, _) = init( # (parent_parser, argv, _) = init(
@ -182,21 +191,21 @@ def main(argv: Optional[List[str]]=None) -> None:
) )
parser.add_argument("-f", "--edid-file", dest="path", default="/etc/kvmd/tc358743-edid.hex", parser.add_argument("-f", "--edid-file", dest="path", default="/etc/kvmd/tc358743-edid.hex",
help="The hex/bin EDID file path", metavar="<file>") help="The hex/bin EDID file path", metavar="<file>")
parser.add_argument("--export-hex", default=None, parser.add_argument("--export-hex",
help="Export [--edid-file] to the new file as a hex text", metavar="<file>") help="Export [--edid-file] to the new file as a hex text", metavar="<file>")
parser.add_argument("--export-bin", default=None, parser.add_argument("--export-bin",
help="Export [--edid-file] to the new file as a bin data", metavar="<file>") help="Export [--edid-file] to the new file as a bin data", metavar="<file>")
parser.add_argument("--import", default=None, dest="imp", parser.add_argument("--import", dest="imp",
help="Import specified bin/hex EDID to the [--edid-file] as a hex text", metavar="<file>") help="Import specified bin/hex EDID to the [--edid-file] as a hex text", metavar="<file>")
parser.add_argument("--set-audio", type=valid_bool, default=None, parser.add_argument("--set-audio", type=valid_bool,
help="Enable or disable basic audio", metavar="<yes|no>") help="Enable or disable basic audio", metavar="<yes|no>")
parser.add_argument("--set-mfc-id", default=None, parser.add_argument("--set-mfc-id",
help="Set manufacturer ID (https://uefi.org/pnp_id_list)", metavar="<ABC>") help="Set manufacturer ID (https://uefi.org/pnp_id_list)", metavar="<ABC>")
parser.add_argument("--set-product-id", type=valid_int_f0, default=None, parser.add_argument("--set-product-id", type=valid_int_f0,
help="Set product ID (decimal)", metavar="<uint>") help="Set product ID (decimal)", metavar="<uint>")
parser.add_argument("--set-serial", type=valid_int_f0, default=None, parser.add_argument("--set-serial", type=valid_int_f0,
help="Set serial number (decimal)", metavar="<uint>") help="Set serial number (decimal)", metavar="<uint>")
parser.add_argument("--set-monitor-name", default=None, parser.add_argument("--set-monitor-name",
help="Set monitor name in DTD/MND (ASCII, max 13 characters)", metavar="<str>") help="Set monitor name in DTD/MND (ASCII, max 13 characters)", metavar="<str>")
options = parser.parse_args(argv[1:]) options = parser.parse_args(argv[1:])
@ -221,11 +230,11 @@ def main(argv: Optional[List[str]]=None) -> None:
elif changed: elif changed:
edid.write_hex(options.path) edid.write_hex(options.path)
for (key, value) in [ for (key, get, fmt) in [
("Manufacturer ID:", edid.get_mfc_id()), ("Manufacturer ID:", edid.get_mfc_id, str),
("Product ID: ", edid.get_product_id()), ("Product ID: ", edid.get_product_id, _make_format_hex(2)),
("Serial number: ", edid.get_serial()), ("Serial number: ", edid.get_serial, _make_format_hex(4)),
("Monitor name: ", edid.get_monitor_name()), ("Monitor name: ", edid.get_monitor_name, str),
("Basic audio: ", ("yes" if edid.get_audio() else "no")), ("Basic audio: ", edid.get_audio, _format_bool),
]: ]:
print(key, value, file=sys.stderr) print(key, fmt(get()), file=sys.stderr) # type: ignore