mirror of
https://github.com/platformio/platformio-core.git
synced 2025-07-30 10:07: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.manager.base import BasePackageManager
|
||||||
from platformio.package.meta import PackageItem, PackageSpec, PackageType
|
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
|
class LibraryPackageManager(BasePackageManager): # pylint: disable=too-many-ancestors
|
||||||
def __init__(self, package_dir=None):
|
def __init__(self, package_dir=None):
|
||||||
super(LibraryPackageManager, self).__init__(
|
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
|
@property
|
||||||
|
@ -43,6 +43,23 @@ def find_project_dir_above(path):
|
|||||||
return None
|
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():
|
def get_project_cache_dir():
|
||||||
"""Deprecated, use ProjectConfig.get("platformio", "cache_dir") instead"""
|
"""Deprecated, use ProjectConfig.get("platformio", "cache_dir") instead"""
|
||||||
return ProjectConfig.get_instance().get("platformio", "cache_dir")
|
return ProjectConfig.get_instance().get("platformio", "cache_dir")
|
||||||
|
@ -115,9 +115,9 @@ def validate_dir(path):
|
|||||||
|
|
||||||
|
|
||||||
def validate_core_dir(path):
|
def validate_core_dir(path):
|
||||||
default = ProjectOptions["platformio.core_dir"].default
|
default_dir = ProjectOptions["platformio.core_dir"].default
|
||||||
win_core_dir = None
|
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"
|
win_core_dir = os.path.splitdrive(path)[0] + "\\.platformio"
|
||||||
if os.path.isdir(win_core_dir):
|
if os.path.isdir(win_core_dir):
|
||||||
path = win_core_dir
|
path = win_core_dir
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
# pylint: disable=redefined-outer-name
|
# pylint: disable=redefined-outer-name
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
import pytest
|
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