40 lines
1.6 KiB
Python
40 lines
1.6 KiB
Python
import pathlib
|
|
|
|
from kydcap.config import DEVICE_METADATA_FILE
|
|
from kydcap.models.device_metadata import DeviceMetadata
|
|
|
|
|
|
def setup_init_root_dir_parser(subparsers):
|
|
parser = subparsers.add_parser("init-device-root", aliases=["idr"])
|
|
parser.add_argument("root_dir", type=pathlib.Path, default=pathlib.Path.cwd())
|
|
group = parser.add_mutually_exclusive_group()
|
|
group.add_argument("--dynamic", action="store_false", help="enable guided setup")
|
|
group.add_argument("-n", "--name", action="store", required=True, type=str, help="name of device")
|
|
parser.set_defaults(func=handle_idr)
|
|
|
|
|
|
def handle_idr(args):
|
|
root_dir = args.root_dir
|
|
device_name = None
|
|
if args.dynamic:
|
|
response = "N"
|
|
while response == "N":
|
|
name = input("Please enter name of device: ")
|
|
# TODO extended config for other fields like apps, firmware etc.
|
|
response = input(f"Confirm device name: {name} [y/N]")
|
|
device_name = name
|
|
else:
|
|
device_name = args.name
|
|
root_dir.mkdir(parents=True, exist_ok=True)
|
|
root_dir.chdir()
|
|
dev_metadata_model = DeviceMetadata(device_name)
|
|
file_path = root_dir / device_name / DEVICE_METADATA_FILE
|
|
assert not file_path.exists(), f"{file_path} already exists"
|
|
if args.dynamic:
|
|
response = input(f"Confirm device metadata: {dev_metadata_model.model_dump()} [y/N]")
|
|
if response.lower() != "y":
|
|
assert False, "TODO implement dynamic setup"
|
|
code = dev_metadata_model.save_to_json(file_path)
|
|
print(f"Device metadata saved to {file_path}")
|
|
return code
|