forked from platformio/platformio-core
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
|
PARSE_SRC_BY_H_NAME = True
|
||||||
_INC_DIRS_CACHE = None
|
_INC_DIRS_CACHE = None
|
||||||
|
|
||||||
|
|
||||||
def __init__(self, env, path, manifest=None, verbose=False):
|
def __init__(self, env, path, manifest=None, verbose=False):
|
||||||
self.env = env.Clone()
|
self.env = env.Clone()
|
||||||
self.envorigin = env.Clone()
|
self.envorigin = env.Clone()
|
||||||
|
@ -497,7 +497,7 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin):
|
|||||||
|
|
||||||
# Parse requirements
|
# Parse requirements
|
||||||
req_conditions = [
|
req_conditions = [
|
||||||
"@" in text, not requirements, "://" not in text
|
"@" in text, not requirements, ":" not in text
|
||||||
or text.rfind("/") < text.rfind("@")
|
or text.rfind("/") < text.rfind("@")
|
||||||
]
|
]
|
||||||
if all(req_conditions):
|
if all(req_conditions):
|
||||||
@ -519,9 +519,8 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin):
|
|||||||
# Handle GitHub URL (https://github.com/user/package)
|
# Handle GitHub URL (https://github.com/user/package)
|
||||||
text.startswith("https://github.com/") and not text.endswith(
|
text.startswith("https://github.com/") and not text.endswith(
|
||||||
(".zip", ".tar.gz")),
|
(".zip", ".tar.gz")),
|
||||||
text.startswith("http")
|
(text.split("#", 1)[0]
|
||||||
and (text.split("#", 1)[0]
|
if "#" in text else text).endswith(".git")
|
||||||
if "#" in text else text).endswith(".git")
|
|
||||||
]
|
]
|
||||||
hg_conditions = [
|
hg_conditions = [
|
||||||
# Handle Developer Mbed URL
|
# Handle Developer Mbed URL
|
||||||
@ -536,9 +535,8 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin):
|
|||||||
url = "file://" + text
|
url = "file://" + text
|
||||||
elif "://" in text:
|
elif "://" in text:
|
||||||
url = text
|
url = text
|
||||||
|
|
||||||
# Handle short version of GitHub URL
|
# Handle short version of GitHub URL
|
||||||
if text.count("/") == 1:
|
elif text.count("/") == 1:
|
||||||
url = "git+https://github.com/" + text
|
url = "git+https://github.com/" + text
|
||||||
|
|
||||||
# Parse name from URL
|
# Parse name from URL
|
||||||
|
@ -261,7 +261,7 @@ class PlatformPackagesMixin(object):
|
|||||||
continue
|
continue
|
||||||
elif (name in with_packages or
|
elif (name in with_packages or
|
||||||
not (skip_default_package or opts.get("optional", False))):
|
not (skip_default_package or opts.get("optional", False))):
|
||||||
if "://" in version:
|
if ":" in version:
|
||||||
self.pm.install("%s=%s" % (name, version), silent=silent)
|
self.pm.install("%s=%s" % (name, version), silent=silent)
|
||||||
else:
|
else:
|
||||||
self.pm.install(name, version, silent=silent)
|
self.pm.install(name, version, silent=silent)
|
||||||
@ -288,7 +288,7 @@ class PlatformPackagesMixin(object):
|
|||||||
def update_packages(self, only_check=False):
|
def update_packages(self, only_check=False):
|
||||||
for name, manifest in self.get_installed_packages().items():
|
for name, manifest in self.get_installed_packages().items():
|
||||||
requirements = self.packages[name].get("version", "")
|
requirements = self.packages[name].get("version", "")
|
||||||
if "://" in requirements:
|
if ":" in requirements:
|
||||||
_, requirements, __ = self.pm.parse_pkg_uri(requirements)
|
_, requirements, __ = self.pm.parse_pkg_uri(requirements)
|
||||||
self.pm.update(manifest['__pkg_dir'], requirements, only_check)
|
self.pm.update(manifest['__pkg_dir'], requirements, only_check)
|
||||||
|
|
||||||
@ -303,7 +303,7 @@ class PlatformPackagesMixin(object):
|
|||||||
def are_outdated_packages(self):
|
def are_outdated_packages(self):
|
||||||
for name, manifest in self.get_installed_packages().items():
|
for name, manifest in self.get_installed_packages().items():
|
||||||
requirements = self.packages[name].get("version", "")
|
requirements = self.packages[name].get("version", "")
|
||||||
if "://" in requirements:
|
if ":" in requirements:
|
||||||
_, requirements, __ = self.pm.parse_pkg_uri(requirements)
|
_, requirements, __ = self.pm.parse_pkg_uri(requirements)
|
||||||
if self.pm.outdated(manifest['__pkg_dir'], requirements):
|
if self.pm.outdated(manifest['__pkg_dir'], requirements):
|
||||||
return True
|
return True
|
||||||
@ -311,7 +311,7 @@ class PlatformPackagesMixin(object):
|
|||||||
|
|
||||||
def get_package_dir(self, name):
|
def get_package_dir(self, name):
|
||||||
version = self.packages[name].get("version", "")
|
version = self.packages[name].get("version", "")
|
||||||
if "://" in version:
|
if ":" in version:
|
||||||
return self.pm.get_package_dir(*self.pm.parse_pkg_uri(
|
return self.pm.get_package_dir(*self.pm.parse_pkg_uri(
|
||||||
"%s=%s" % (name, version)))
|
"%s=%s" % (name, version)))
|
||||||
return self.pm.get_package_dir(name, version)
|
return self.pm.get_package_dir(name, version)
|
||||||
|
@ -29,8 +29,9 @@ class VCSClientFactory(object):
|
|||||||
result = urlparse(remote_url)
|
result = urlparse(remote_url)
|
||||||
type_ = result.scheme
|
type_ = result.scheme
|
||||||
tag = None
|
tag = None
|
||||||
if not type_ and remote_url.startswith("git@"):
|
if not type_ and remote_url.startswith("git+"):
|
||||||
type_ = "git"
|
type_ = "git"
|
||||||
|
remote_url = remote_url[4:]
|
||||||
elif "+" in result.scheme:
|
elif "+" in result.scheme:
|
||||||
type_, _ = result.scheme.split("+", 1)
|
type_, _ = result.scheme.split("+", 1)
|
||||||
remote_url = remote_url[len(type_) + 1:]
|
remote_url = remote_url[len(type_) + 1:]
|
||||||
|
@ -115,14 +115,18 @@ def test_pkg_input_parser():
|
|||||||
"hg+https://example.com/user/package",
|
"hg+https://example.com/user/package",
|
||||||
("package", None, "hg+https://example.com/user/package")
|
("package", None, "hg+https://example.com/user/package")
|
||||||
],
|
],
|
||||||
# [
|
[
|
||||||
# "git@github.com:user/package.git",
|
"git@github.com:user/package.git",
|
||||||
# ("package", None, "git@github.com:user/package.git")
|
("package", None, "git+git@github.com:user/package.git")
|
||||||
# ],
|
],
|
||||||
# [
|
[
|
||||||
# "git@github.com:user/package.git#v1.2.0",
|
"git@github.com:user/package.git#v1.2.0",
|
||||||
# ("package", None, "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",
|
"git+ssh://git@gitlab.private-server.com/user/package#1.2.0",
|
||||||
("package", None,
|
("package", None,
|
||||||
|
Reference in New Issue
Block a user