blob: d7f337243cba50b0c19ea9640d1725dbc946bf03 [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
Ravago Jones5127ccc2022-07-31 16:32:45 -070017
Philipp Schrader37fdbb62021-12-18 00:30:37 -080018def main(argv):
19 parser = argparse.ArgumentParser()
20 parser.add_argument("go_deps_bzl", type=str)
21 args = parser.parse_args(argv[1:])
22
Ravago Jones5127ccc2022-07-31 16:32:45 -070023 repos = org_frc971.tools.go.mirror_lib.parse_go_repositories(
24 args.go_deps_bzl)
Philipp Schrader37fdbb62021-12-18 00:30:37 -080025
26 with open(args.go_deps_bzl, "w") as file:
Ravago Jones5127ccc2022-07-31 16:32:45 -070027 file.write(
28 textwrap.dedent("""\
Philipp Schrader37fdbb62021-12-18 00:30:37 -080029 # This file is auto-generated. Do not edit.
30 load("//tools/go:mirrored_go_deps.bzl", "maybe_override_go_dep")
31
32 def go_dependencies():
33 """))
34 for repo in repos:
Ravago Jones5127ccc2022-07-31 16:32:45 -070035 file.write(
36 textwrap.indent(
37 textwrap.dedent(f"""\
Philipp Schrader37fdbb62021-12-18 00:30:37 -080038 maybe_override_go_dep(
39 name = "{repo['name']}",
40 importpath = "{repo['importpath']}",
41 sum = "{repo['sum']}",
42 version = "{repo['version']}",
43 )
44 """), " " * 4))
45
Ravago Jones5127ccc2022-07-31 16:32:45 -070046
Philipp Schrader37fdbb62021-12-18 00:30:37 -080047if __name__ == "__main__":
48 sys.exit(main(sys.argv))