def check_for_project(path: Union[Path, str] = ".") -> Optional[Path]: """Checks for a Brownie project.""" path = Path(path).resolve() for folder in [path] + list(path.parents): if _get_project_config_path(folder): return folder return None
def load(project_path: Union[Path, str, None] = None, name: Optional[str] = None) -> "Project": """Loads a project and instantiates various related objects. Args: project_path: Path of the project to load. If None, will attempt to locate a project using check_for_project() name: Name to assign to the project. If None, the name is generated from the name of the project folder Returns a Project object. """ # checks if project_path is None: project_path = check_for_project(".") if not project_path or not _get_project_config_path(Path(project_path)): raise ProjectNotFound("Could not find Brownie project") project_path = Path(project_path).resolve() if name is None: name = project_path.name if not name.lower().endswith("project"): name += " project" name = "".join(i for i in name.title() if i.isalpha()) if next((True for i in _loaded_projects if i._name == name), False): raise ProjectAlreadyLoaded( "There is already a project loaded with this name") # paths _create_folders(project_path) _add_to_sys_path(project_path) # load sources and build return Project(name, project_path)
def new(project_path_str: str = ".", ignore_subfolder: bool = False) -> str: """Initializes a new project. Args: project_path: Path to initialize the project at. If not exists, it will be created. ignore_subfolders: If True, will not raise if initializing in a project subfolder. Returns the path to the project as a string. """ project_path = _new_checks(project_path_str, ignore_subfolder) project_path.mkdir(exist_ok=True) _create_folders(project_path) _create_gitfiles(project_path) if not _get_project_config_path(project_path): shutil.copy( BROWNIE_FOLDER.joinpath("data/brownie-config.yaml"), project_path.joinpath("brownie-config.yaml"), ) if not project_path.joinpath("ethpm-config.yaml").exists(): shutil.copy( BROWNIE_FOLDER.joinpath("data/ethpm-config.yaml"), project_path.joinpath("ethpm-config.yaml"), ) _add_to_sys_path(project_path) return str(project_path)