44import subprocess
55import urllib .request
66
7+ import lxml .html
78from packaging import version
89
910
@@ -31,6 +32,21 @@ def rust_get_package_versions(package_name: str) -> list[str]:
3132 return list (reversed ([version ['num' ] for version in resp ['versions' ]]))
3233
3334
35+ def golang_get_package_versions (package_name : str ) -> list [str ]:
36+ url = f'https://pkg.go.dev/{ package_name } ?tab=versions'
37+ resp = urllib .request .urlopen (url )
38+ versions = lxml .html .parse (resp ).xpath (
39+ "//a[@class='js-versionLink']//text()" ,
40+ )
41+ return [str (version ) for version in versions [::- 1 ]]
42+
43+
44+ def golang_get_additional_dependencies (
45+ package_name : str , package_version : str ,
46+ ) -> list [str ]:
47+ return [f'{ package_name } @{ package_version } ' ]
48+
49+
3450def node_get_additional_dependencies (
3551 package_name : str , package_version : str ,
3652) -> list [str ]:
@@ -48,9 +64,11 @@ def rust_get_additional_dependencies(
4864 'python' : python_get_package_versions ,
4965 'ruby' : ruby_get_package_versions ,
5066 'rust' : rust_get_package_versions ,
67+ 'golang' : golang_get_package_versions ,
5168}
5269
5370ADDITIONAL_DEPENDENCIES = {
5471 'node' : node_get_additional_dependencies ,
5572 'rust' : rust_get_additional_dependencies ,
73+ 'golang' : golang_get_additional_dependencies ,
5674}
0 commit comments