diff --git a/docs b/docs index b7dfe7b6..832bf5d8 160000 --- a/docs +++ b/docs @@ -1 +1 @@ -Subproject commit b7dfe7b6fab87833ef2eb2b09181b395595eba75 +Subproject commit 832bf5d8a66d3ec143344578e6351d173d7e3f0b diff --git a/platformio/builder/tools/piolib.py b/platformio/builder/tools/piolib.py index 86f2b5d8..be8cf6e6 100644 --- a/platformio/builder/tools/piolib.py +++ b/platformio/builder/tools/piolib.py @@ -91,7 +91,6 @@ class LibBuilderBase(object): PARSE_SRC_BY_H_NAME = True _INC_DIRS_CACHE = None - def __init__(self, env, path, manifest=None, verbose=False): self.env = env.Clone() self.envorigin = env.Clone() diff --git a/platformio/managers/package.py b/platformio/managers/package.py index a7670109..c70cc174 100644 --- a/platformio/managers/package.py +++ b/platformio/managers/package.py @@ -497,7 +497,7 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin): # Parse requirements req_conditions = [ - "@" in text, not requirements, "://" not in text + "@" in text, not requirements, ":" not in text or text.rfind("/") < text.rfind("@") ] if all(req_conditions): @@ -519,9 +519,8 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin): # Handle GitHub URL (https://github.com/user/package) text.startswith("https://github.com/") and not text.endswith( (".zip", ".tar.gz")), - text.startswith("http") - and (text.split("#", 1)[0] - if "#" in text else text).endswith(".git") + (text.split("#", 1)[0] + if "#" in text else text).endswith(".git") ] hg_conditions = [ # Handle Developer Mbed URL @@ -536,9 +535,8 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin): url = "file://" + text elif "://" in text: url = text - # Handle short version of GitHub URL - if text.count("/") == 1: + elif text.count("/") == 1: url = "git+https://github.com/" + text # Parse name from URL diff --git a/platformio/managers/platform.py b/platformio/managers/platform.py index a3d21d01..30093ed8 100644 --- a/platformio/managers/platform.py +++ b/platformio/managers/platform.py @@ -261,7 +261,7 @@ class PlatformPackagesMixin(object): continue elif (name in with_packages or not (skip_default_package or opts.get("optional", False))): - if "://" in version: + if ":" in version: self.pm.install("%s=%s" % (name, version), silent=silent) else: self.pm.install(name, version, silent=silent) @@ -288,7 +288,7 @@ class PlatformPackagesMixin(object): def update_packages(self, only_check=False): for name, manifest in self.get_installed_packages().items(): requirements = self.packages[name].get("version", "") - if "://" in requirements: + if ":" in requirements: _, requirements, __ = self.pm.parse_pkg_uri(requirements) self.pm.update(manifest['__pkg_dir'], requirements, only_check) @@ -303,7 +303,7 @@ class PlatformPackagesMixin(object): def are_outdated_packages(self): for name, manifest in self.get_installed_packages().items(): requirements = self.packages[name].get("version", "") - if "://" in requirements: + if ":" in requirements: _, requirements, __ = self.pm.parse_pkg_uri(requirements) if self.pm.outdated(manifest['__pkg_dir'], requirements): return True @@ -311,7 +311,7 @@ class PlatformPackagesMixin(object): def get_package_dir(self, name): version = self.packages[name].get("version", "") - if "://" in version: + if ":" in version: return self.pm.get_package_dir(*self.pm.parse_pkg_uri( "%s=%s" % (name, version))) return self.pm.get_package_dir(name, version) diff --git a/platformio/vcsclient.py b/platformio/vcsclient.py index b7c72ea1..e6ad7770 100644 --- a/platformio/vcsclient.py +++ b/platformio/vcsclient.py @@ -29,8 +29,9 @@ class VCSClientFactory(object): result = urlparse(remote_url) type_ = result.scheme tag = None - if not type_ and remote_url.startswith("git@"): + if not type_ and remote_url.startswith("git+"): type_ = "git" + remote_url = remote_url[4:] elif "+" in result.scheme: type_, _ = result.scheme.split("+", 1) remote_url = remote_url[len(type_) + 1:] diff --git a/tests/test_managers.py b/tests/test_managers.py index b680b771..74bd652f 100644 --- a/tests/test_managers.py +++ b/tests/test_managers.py @@ -115,14 +115,18 @@ def test_pkg_input_parser(): "hg+https://example.com/user/package", ("package", None, "hg+https://example.com/user/package") ], - # [ - # "git@github.com:user/package.git", - # ("package", None, "git@github.com:user/package.git") - # ], - # [ - # "git@github.com:user/package.git#v1.2.0", - # ("package", None, "git@github.com:user/package.git#v1.2.0") - # ], + [ + "git@github.com:user/package.git", + ("package", None, "git+git@github.com:user/package.git") + ], + [ + "git@github.com:user/package.git#v1.2.0", + ("package", None, "git+git@github.com:user/package.git#v1.2.0") + ], + [ + "LocalName=git@github.com:user/package.git#v1.2.0@~1.2.0", + ("LocalName", "~1.2.0", "git+git@github.com:user/package.git#v1.2.0") + ], [ "git+ssh://git@gitlab.private-server.com/user/package#1.2.0", ("package", None,