Source code for mlonmcu.environment.list

#
# Copyright (c) 2022 TUM Department of Electrical and Computer Engineering.
#
# This file is part of MLonMCU.
# See https://github.com/tum-ei-eda/mlonmcu.git for further info.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
import os
import configparser
from datetime import datetime as dt

# TODO: EnvironmentList/Factory/Registry? also via code?
from .config import get_environments_file


[docs] def validate_name(name): # TODO: regex for valid names without spaces etc return True
[docs] def get_environments_map(): result = {} environments_file = get_environments_file() if os.path.isfile(environments_file): parser = configparser.ConfigParser() parser.read(environments_file) for env_name in parser.sections(): result[env_name] = parser[env_name] return result
[docs] def get_environment_names(): envs_dict = get_environments_map() return envs_dict.keys()
[docs] def get_alternative_name(name, names): current = name i = -1 while current in names: i = i + 1 if i == 0: current = current + "_" + str(i) else: temp = current.split("_") current = "_".join(temp[:-1]) + "_" + str(i) return current
[docs] def register_environment(name, path, overwrite=False): validate_name(name) if not os.path.isabs(path): raise RuntimeError("Not an absolute path") environments_file = get_environments_file() if not os.path.isfile(environments_file): raise RuntimeError("Environments file does not yet exist") # with open(environments_file, "a") as envs_file: # envs_file.write(name + "=" + path) config = configparser.ConfigParser() config.read(environments_file) now = dt.now() created = now.strftime("%Y%d%mT%H%M%S") if name in config.sections() and not overwrite: raise RuntimeError(f"Environment with name {name} does already exist") config[name] = {"path": path, "created": created} environments_file = get_environments_file() with open(environments_file, "w") as handle: config.write(handle)