blob: d9d79011d9152337be233e690de53d5ff524d500 [file] [log] [blame]
Philipp Schrader37fdbb62021-12-18 00:30:37 -08001"""Tweaks the gazelle-generated go_deps.bzl to work with our mirrors.
2
3This script changes all invocations of go_repository() in go_deps.bzl to use
4maybe_override_go_dep(). That lets us more easily switch between upstream
5sources and our mirrored versions of the code.
6
7The motivation is to let folks use upstream sources during local development.
8For CI runs, however, we have to restrict ourselves to mirrored dependencies.
9"""
10
11import argparse
12import sys
13import textwrap
14
Philipp Schraderd96d4cb2022-02-06 15:37:29 -080015import org_frc971.tools.go.mirror_lib
Philipp Schrader37fdbb62021-12-18 00:30:37 -080016
17def main(argv):
18 parser = argparse.ArgumentParser()
19 parser.add_argument("go_deps_bzl", type=str)
20 args = parser.parse_args(argv[1:])
21
Philipp Schraderd96d4cb2022-02-06 15:37:29 -080022 repos = org_frc971.tools.go.mirror_lib.parse_go_repositories(args.go_deps_bzl)
Philipp Schrader37fdbb62021-12-18 00:30:37 -080023
24 with open(args.go_deps_bzl, "w") as file:
25 file.write(textwrap.dedent("""\
26 # This file is auto-generated. Do not edit.
27 load("//tools/go:mirrored_go_deps.bzl", "maybe_override_go_dep")
28
29 def go_dependencies():
30 """))
31 for repo in repos:
32 file.write(textwrap.indent(textwrap.dedent(f"""\
33 maybe_override_go_dep(
34 name = "{repo['name']}",
35 importpath = "{repo['importpath']}",
36 sum = "{repo['sum']}",
37 version = "{repo['version']}",
38 )
39 """), " " * 4))
40
41if __name__ == "__main__":
42 sys.exit(main(sys.argv))