mirror of
https://github.com/platformio/platformio-core.git
synced 2025-07-29 17:47:14 +02:00
Add support for Git scp-like syntax
This commit is contained in:
2
docs
2
docs
Submodule docs updated: b7dfe7b6fa...832bf5d8a6
@ -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()
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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:]
|
||||
|
@ -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,
|
||||
|
Reference in New Issue
Block a user