41 lines
1.6 KiB
Python
41 lines
1.6 KiB
Python
import pathlib
|
|
|
|
from iottb.definitions import DEVICE_METADATA_FILE
|
|
from iottb.models.device_metadata_model import DeviceMetadata
|
|
|
|
|
|
def setup_init_iottb_root_parser(subparsers):
|
|
parser = subparsers.add_parser("init", 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_true", help="enable guided setup", default=False)
|
|
group.add_argument("-n", "--name", action="store", type=str, help="name of device")
|
|
parser.set_defaults(func=handle_idr)
|
|
|
|
|
|
def handle_idr(args):
|
|
print("Entered iottb initialize-device-root")
|
|
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
|