def install_controller_from_folder(version: str) -> None: do_path = SUBMODULES_DIR.joinpath("do") try: Application.git_submodules() except SystemExit: log.info( """You asked to install rapydo {ver} in editable mode, but {p} is missing. You can force the installation by disabling the editable mode: rapydo install {ver} --no-editable """, ver=version, p=do_path, ) raise log.info( "You asked to install rapydo {}. It will be installed in editable mode", version, ) do_repo = Application.gits.get("do") b = git.get_active_branch(do_repo) if b is None: log.error( "Unable to read local controller repository") # pragma: no cover elif b == version: log.info("Controller repository already at {}", version) elif git.switch_branch(do_repo, version): log.info("Controller repository switched to {}", version) else: print_and_exit("Invalid version") Packages.install(do_path, editable=True) log.info("Controller version {} installed from local folder", version)
def init( create_projectrc: bool = typer.Option( False, "--force", "-f", help="Overwrite initialization files if already exist", show_default=False, ), submodules_path: Path = typer.Option( None, "--submodules-path", help= "Link all submodules in an existing folder instead of download them", ), ) -> None: Application.print_command( Application.serialize_parameter("--force", create_projectrc, IF=create_projectrc), Application.serialize_parameter("--submodules-path", submodules_path, IF=submodules_path), ) Application.get_controller().controller_init() for p in Application.project_scaffold.data_folders: if not p.exists(): p.mkdir(parents=True, exist_ok=True) for p in Application.project_scaffold.data_files: if not p.exists(): p.touch() if not Configuration.projectrc and not Configuration.host_configuration: create_projectrc = True # We have to create the .projectrc twice # One generic here with main options and another after the complete # conf reading to set services variables if create_projectrc: Application.get_controller().create_projectrc() Application.get_controller().read_specs(read_extended=False) if submodules_path is not None: if not submodules_path.exists(): print_and_exit("Local path not found: {}", submodules_path) Application.git_submodules(from_path=submodules_path) Application.get_controller().read_specs(read_extended=True) Application.get_controller().make_env() # Compose services and variables Application.get_controller().get_compose_configuration() # We have to create the .projectrc twice # One generic with main options and another here # when services are available to set specific configurations if create_projectrc: Application.get_controller().create_projectrc() Application.get_controller().read_specs(read_extended=True) Application.get_controller().make_env() if Configuration.swarm_mode: docker = Docker(verify_swarm=False) if not docker.swarm.get_token(): docker.swarm.init() log.info("Swarm is now initialized") else: log.debug("Swarm is already initialized") if Configuration.frontend == ANGULAR: yarn_lock = DATA_DIR.joinpath(Configuration.project, "frontend", "yarn.lock") if yarn_lock.exists(): yarn_lock.unlink() log.info("Yarn lock file deleted") log.info("Project initialized")