More go support.
This commit is contained in:
parent
ae9e30468a
commit
5b7cf25d14
3 changed files with 41 additions and 2 deletions
|
@ -42,6 +42,8 @@ from .requirements import (
|
|||
OctavePackageRequirement,
|
||||
PhpPackageRequirement,
|
||||
MavenArtifactRequirement,
|
||||
GoRequirement,
|
||||
GoPackageRequirement,
|
||||
)
|
||||
from .fix_build import run_with_build_fixers
|
||||
from .session import which
|
||||
|
@ -1165,6 +1167,26 @@ class Golang(BuildSystem):
|
|||
def clean(self, session, resolver, fixers):
|
||||
session.check_call(["go", "clean"])
|
||||
|
||||
def get_declared_dependencies(self, session, fixers=None):
|
||||
go_mod_path = os.path.join(self.path, 'go.mod')
|
||||
if not os.path.exists(go_mod_path):
|
||||
with open(go_mod_path, 'r') as f:
|
||||
for line in f:
|
||||
parts = line.strip().split(' ')
|
||||
if not parts:
|
||||
continue
|
||||
if parts[0] == 'go':
|
||||
yield "build", GoRequirement(parts[1])
|
||||
elif parts[0] == 'require':
|
||||
yield "build", GoPackageRequirement(
|
||||
parts[1], parts[2] if len(parts) > 2 else None)
|
||||
elif parts[0] in ('module', 'exclude', 'replace'):
|
||||
pass
|
||||
else:
|
||||
logging.warning(
|
||||
'Unknown directive %s in go.mod',
|
||||
parts[0])
|
||||
|
||||
@classmethod
|
||||
def probe(cls, path):
|
||||
if os.path.exists(os.path.join(path, 'go.mod')):
|
||||
|
|
|
@ -271,10 +271,21 @@ class RubyGemRequirement(Requirement):
|
|||
class GoPackageRequirement(Requirement):
|
||||
|
||||
package: str
|
||||
version: Optional[str]
|
||||
|
||||
def __init__(self, package: str):
|
||||
super(GoPackageRequirement, self).__init__("go")
|
||||
def __init__(self, package: str, version: Optional[str] = None):
|
||||
super(GoPackageRequirement, self).__init__("go-package")
|
||||
self.package = package
|
||||
self.version = version
|
||||
|
||||
|
||||
class GoRequirement(Requirement):
|
||||
|
||||
version: Optional[str]
|
||||
|
||||
def __init__(self, version: Optional[str] = None):
|
||||
super(GoPackageRequirement, self).__init__("go")
|
||||
self.version = version
|
||||
|
||||
|
||||
class DhAddonRequirement(Requirement):
|
||||
|
|
|
@ -39,6 +39,7 @@ from ..requirements import (
|
|||
ValaPackageRequirement,
|
||||
RubyGemRequirement,
|
||||
GoPackageRequirement,
|
||||
GoRequirement,
|
||||
DhAddonRequirement,
|
||||
PhpClassRequirement,
|
||||
PhpPackageRequirement,
|
||||
|
@ -306,6 +307,10 @@ def resolve_go_package_req(apt_mgr, req):
|
|||
)
|
||||
|
||||
|
||||
def resolve_go_req(apt_mgr, req):
|
||||
return [AptRequirement.simple('golang-%s' % req.version)]
|
||||
|
||||
|
||||
def resolve_dh_addon_req(apt_mgr, req):
|
||||
paths = [posixpath.join("/usr/share/perl5", req.path)]
|
||||
return find_reqs_simple(apt_mgr, paths)
|
||||
|
@ -556,6 +561,7 @@ APT_REQUIREMENT_RESOLVERS = [
|
|||
(ValaPackageRequirement, resolve_vala_package_req),
|
||||
(RubyGemRequirement, resolve_ruby_gem_req),
|
||||
(GoPackageRequirement, resolve_go_package_req),
|
||||
(GoRequirement, resolve_go_req),
|
||||
(DhAddonRequirement, resolve_dh_addon_req),
|
||||
(PhpClassRequirement, resolve_php_class_req),
|
||||
(PhpPackageRequirement, resolve_php_package_req),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue