mirror of
https://github.com/platformio/platformio-core.git
synced 2025-07-29 17:47:14 +02:00
Add project.helpers.get_project_all_lib_dirs API (used by platformio-node-helpers)
This commit is contained in:
@ -21,13 +21,15 @@ from platformio.package.exception import (
|
||||
)
|
||||
from platformio.package.manager.base import BasePackageManager
|
||||
from platformio.package.meta import PackageItem, PackageSpec, PackageType
|
||||
from platformio.project.helpers import get_project_global_lib_dir
|
||||
from platformio.project.config import ProjectConfig
|
||||
|
||||
|
||||
class LibraryPackageManager(BasePackageManager): # pylint: disable=too-many-ancestors
|
||||
def __init__(self, package_dir=None):
|
||||
super(LibraryPackageManager, self).__init__(
|
||||
PackageType.LIBRARY, package_dir or get_project_global_lib_dir()
|
||||
PackageType.LIBRARY,
|
||||
package_dir
|
||||
or ProjectConfig.get_instance().get("platformio", "globallib_dir"),
|
||||
)
|
||||
|
||||
@property
|
||||
|
@ -43,6 +43,23 @@ def find_project_dir_above(path):
|
||||
return None
|
||||
|
||||
|
||||
def get_project_all_lib_dirs():
|
||||
"""Used by platformio-node-helpers.project.observer.fetchLibDirs"""
|
||||
config = ProjectConfig.get_instance()
|
||||
libdeps_dir = config.get("platformio", "libdeps_dir")
|
||||
result = [
|
||||
config.get("platformio", "globallib_dir"),
|
||||
config.get("platformio", "lib_dir"),
|
||||
libdeps_dir,
|
||||
]
|
||||
if not os.path.isdir(libdeps_dir):
|
||||
return result
|
||||
for d in os.listdir(libdeps_dir):
|
||||
if os.path.isdir(os.path.join(libdeps_dir, d)):
|
||||
result.append(os.path.join(libdeps_dir, d))
|
||||
return result
|
||||
|
||||
|
||||
def get_project_cache_dir():
|
||||
"""Deprecated, use ProjectConfig.get("platformio", "cache_dir") instead"""
|
||||
return ProjectConfig.get_instance().get("platformio", "cache_dir")
|
||||
|
@ -115,9 +115,9 @@ def validate_dir(path):
|
||||
|
||||
|
||||
def validate_core_dir(path):
|
||||
default = ProjectOptions["platformio.core_dir"].default
|
||||
default_dir = ProjectOptions["platformio.core_dir"].default
|
||||
win_core_dir = None
|
||||
if IS_WINDOWS and path == default:
|
||||
if IS_WINDOWS and path == default_dir:
|
||||
win_core_dir = os.path.splitdrive(path)[0] + "\\.platformio"
|
||||
if os.path.isdir(win_core_dir):
|
||||
path = win_core_dir
|
||||
|
@ -15,6 +15,7 @@
|
||||
# pylint: disable=redefined-outer-name
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
import pytest
|
||||
|
||||
@ -521,3 +522,36 @@ def test_dump(tmpdir_factory):
|
||||
],
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.skipif(sys.platform != "win32", reason="runs only on windows")
|
||||
def test_win_core_root_dir(tmpdir_factory):
|
||||
try:
|
||||
win_core_root_dir = os.path.splitdrive(fs.expanduser("~"))[0] + "\\.platformio"
|
||||
remove_dir_at_exit = False
|
||||
if not os.path.isdir(win_core_root_dir):
|
||||
remove_dir_at_exit = True
|
||||
os.makedirs(win_core_root_dir)
|
||||
|
||||
# Default config
|
||||
config = ProjectConfig()
|
||||
assert config.get("platformio", "core_dir") == win_core_root_dir
|
||||
|
||||
# Override in config
|
||||
tmpdir = tmpdir_factory.mktemp("project")
|
||||
tmpdir.join("platformio.ini").write(
|
||||
"""
|
||||
[platformio]
|
||||
core_dir = ~/.pio
|
||||
"""
|
||||
)
|
||||
config = ProjectConfig(tmpdir.join("platformio.ini").strpath)
|
||||
assert config.get("platformio", "core_dir") != win_core_root_dir
|
||||
assert config.get("platformio", "core_dir") == os.path.realpath(
|
||||
fs.expanduser("~/.pio")
|
||||
)
|
||||
|
||||
if remove_dir_at_exit:
|
||||
fs.rmtree(win_core_root_dir)
|
||||
except PermissionError:
|
||||
pass
|
||||
|
Reference in New Issue
Block a user