Depend on config rule instead of file.

The aos_config rule used to require you to depend on {name}.json to get
the output.  That was weird and hid private/testonly/etc.  Instead,
depend on the rule directly.

Change-Id: I1596a6c1f44b246a0db1bbc562468530a0b69614
diff --git a/aos/BUILD b/aos/BUILD
index a7d691b..286882f 100644
--- a/aos/BUILD
+++ b/aos/BUILD
@@ -466,7 +466,7 @@
         "configuration_test.cc",
     ],
     data = [
-        "//aos/events:pingpong_config.json",
+        "//aos/events:pingpong_config",
         "//aos/events:pong.bfbs",
         "//aos/testdata:test_configs",
     ],
diff --git a/aos/actions/BUILD b/aos/actions/BUILD
index 6276105..14592cf 100644
--- a/aos/actions/BUILD
+++ b/aos/actions/BUILD
@@ -58,7 +58,7 @@
     srcs = [
         "action_test.cc",
     ],
-    data = ["action_test_config.json"],
+    data = [":action_test_config"],
     deps = [
         ":action_lib",
         ":actions_fbs",
diff --git a/aos/config.bzl b/aos/config.bzl
index d6dcf1e..8f040d6 100644
--- a/aos/config.bzl
+++ b/aos/config.bzl
@@ -5,16 +5,20 @@
     "transitive_src",
 ])
 
-def aos_config(name, src, flatbuffers = [], deps = [], visibility = None):
+def aos_config(name, src, flatbuffers = [], deps = [], visibility = None, testonly = False):
     _aos_config(
         name = name,
         src = src,
         deps = deps,
         flatbuffers = [expand_label(flatbuffer) + "_reflection_out" for flatbuffer in flatbuffers],
         visibility = visibility,
+        testonly = testonly,
     )
 
 def _aos_config_impl(ctx):
+    config = ctx.actions.declare_file(ctx.label.name + ".json")
+    stripped_config = ctx.actions.declare_file(ctx.label.name + ".stripped.json")
+
     flatbuffers_depset = depset(
         ctx.files.flatbuffers,
         transitive = [dep[AosConfigInfo].transitive_flatbuffers for dep in ctx.attr.deps],
@@ -27,16 +31,23 @@
 
     all_files = flatbuffers_depset.to_list() + src_depset.to_list()
     ctx.actions.run(
-        outputs = [ctx.outputs.config, ctx.outputs.stripped_config],
+        outputs = [config, stripped_config],
         inputs = all_files,
-        arguments = [ctx.outputs.config.path, ctx.outputs.stripped_config.path, ctx.files.src[0].short_path, ctx.bin_dir.path] + [f.path for f in flatbuffers_depset.to_list()],
+        arguments = [config.path, stripped_config.path, ctx.files.src[0].short_path, ctx.bin_dir.path] + [f.path for f in flatbuffers_depset.to_list()],
         progress_message = "Flattening config",
         executable = ctx.executable._config_flattener,
     )
-    return AosConfigInfo(
-        transitive_flatbuffers = flatbuffers_depset,
-        transitive_src = src_depset,
-    )
+    runfiles = ctx.runfiles(files = [config, stripped_config])
+    return [
+        DefaultInfo(
+            files = depset([config, stripped_config]),
+            runfiles = runfiles,
+        ),
+        AosConfigInfo(
+            transitive_flatbuffers = flatbuffers_depset,
+            transitive_src = src_depset,
+        ),
+    ]
 
 _aos_config = rule(
     attrs = {
@@ -56,9 +67,5 @@
             mandatory = False,
         ),
     },
-    outputs = {
-        "config": "%{name}.json",
-        "stripped_config": "%{name}.stripped.json",
-    },
     implementation = _aos_config_impl,
 )
diff --git a/aos/events/BUILD b/aos/events/BUILD
index 5346647..902ca76 100644
--- a/aos/events/BUILD
+++ b/aos/events/BUILD
@@ -106,7 +106,7 @@
     srcs = [
         "ping.cc",
     ],
-    data = ["pingpong_config.json"],
+    data = [":pingpong_config"],
     deps = [
         ":ping_lib",
         ":shm_event_loop",
@@ -170,7 +170,7 @@
     srcs = [
         "pong.cc",
     ],
-    data = ["pingpong_config.json"],
+    data = [":pingpong_config"],
     deps = [
         ":ping_fbs",
         ":pong_fbs",
@@ -186,7 +186,7 @@
 cc_test(
     name = "pingpong_test",
     srcs = ["pingpong_test.cc"],
-    data = [":pingpong_config.json"],
+    data = [":pingpong_config"],
     deps = [
         ":ping_lib",
         ":pong_lib",
@@ -266,7 +266,7 @@
 cc_test(
     name = "simulated_event_loop_test",
     srcs = ["simulated_event_loop_test.cc"],
-    data = ["multinode_pingpong_config.json"],
+    data = [":multinode_pingpong_config"],
     shard_count = 4,
     deps = [
         ":event_loop_param_test",
diff --git a/aos/events/logging/BUILD b/aos/events/logging/BUILD
index c3af9e2..0fb4708 100644
--- a/aos/events/logging/BUILD
+++ b/aos/events/logging/BUILD
@@ -142,8 +142,8 @@
     name = "logger_test",
     srcs = ["logger_test.cc"],
     data = [
-        ":multinode_pingpong_config.json",
-        "//aos/events:pingpong_config.json",
+        ":multinode_pingpong_config",
+        "//aos/events:pingpong_config",
     ],
     deps = [
         ":logger",
diff --git a/aos/network/BUILD b/aos/network/BUILD
index f9fe7ea..65aff91 100644
--- a/aos/network/BUILD
+++ b/aos/network/BUILD
@@ -295,8 +295,8 @@
         "message_bridge_test.cc",
     ],
     data = [
-        ":message_bridge_test_client_config.json",
-        ":message_bridge_test_server_config.json",
+        ":message_bridge_test_client_config",
+        ":message_bridge_test_server_config",
     ],
     shard_count = 3,
     deps = [
diff --git a/aos/network/www/BUILD b/aos/network/www/BUILD
index 33291b2..60bea09 100644
--- a/aos/network/www/BUILD
+++ b/aos/network/www/BUILD
@@ -106,8 +106,8 @@
         ":flatbuffers",
         ":reflection_test.html",
         ":reflection_test_bundle",
-        ":test_config.json",
+        ":test_config",
         "//aos/network:web_proxy_main",
-        "//y2020:config.json",
+        "//y2020:config",
     ],
 )
diff --git a/frc971/codelab/BUILD b/frc971/codelab/BUILD
index ac0b80c..ddc5466 100644
--- a/frc971/codelab/BUILD
+++ b/frc971/codelab/BUILD
@@ -7,7 +7,7 @@
     name = "basic_test",
     testonly = 1,
     srcs = ["basic_test.cc"],
-    data = [":config.json"],
+    data = [":config"],
     deps = [
         ":basic",
         ":basic_goal_fbs",
diff --git a/frc971/control_loops/drivetrain/BUILD b/frc971/control_loops/drivetrain/BUILD
index 2e357c7..ed905cf 100644
--- a/frc971/control_loops/drivetrain/BUILD
+++ b/frc971/control_loops/drivetrain/BUILD
@@ -462,7 +462,7 @@
     srcs = [
         "drivetrain_lib_test.cc",
     ],
-    data = ["simulation_config.json"],
+    data = [":simulation_config"],
     defines =
         cpu_select({
             "amd64": [
diff --git a/frc971/wpilib/BUILD b/frc971/wpilib/BUILD
index 734a231..8010edc 100644
--- a/frc971/wpilib/BUILD
+++ b/frc971/wpilib/BUILD
@@ -175,7 +175,7 @@
         "loop_output_handler_test.cc",
     ],
     data = [
-        "loop_output_handler_test_config.json",
+        ":loop_output_handler_test_config",
     ],
     deps = [
         ":loop_output_handler",
diff --git a/y2014/control_loops/claw/BUILD b/y2014/control_loops/claw/BUILD
index 670dd76..2ae59b0 100644
--- a/y2014/control_loops/claw/BUILD
+++ b/y2014/control_loops/claw/BUILD
@@ -83,7 +83,7 @@
     srcs = [
         "claw_lib_test.cc",
     ],
-    data = ["//y2014:config.json"],
+    data = ["//y2014:config"],
     deps = [
         ":claw_goal_fbs",
         ":claw_lib",
diff --git a/y2014/control_loops/shooter/BUILD b/y2014/control_loops/shooter/BUILD
index a2073c9..ed95317 100644
--- a/y2014/control_loops/shooter/BUILD
+++ b/y2014/control_loops/shooter/BUILD
@@ -84,7 +84,7 @@
     srcs = [
         "shooter_lib_test.cc",
     ],
-    data = ["//y2014:config.json"],
+    data = ["//y2014:config"],
     deps = [
         ":shooter_goal_fbs",
         ":shooter_lib",
diff --git a/y2016/BUILD b/y2016/BUILD
index a96ea5a..190e0e0 100644
--- a/y2016/BUILD
+++ b/y2016/BUILD
@@ -52,7 +52,7 @@
 
 robot_downloader(
     data = [
-        ":config.json",
+        ":config",
     ],
     dirs = [
         "//y2016/dashboard:www_files",
diff --git a/y2016/control_loops/shooter/BUILD b/y2016/control_loops/shooter/BUILD
index 794c4fc..3ffc9cc 100644
--- a/y2016/control_loops/shooter/BUILD
+++ b/y2016/control_loops/shooter/BUILD
@@ -87,7 +87,7 @@
     srcs = [
         "shooter_lib_test.cc",
     ],
-    data = ["//y2016:config.json"],
+    data = ["//y2016:config"],
     deps = [
         ":shooter_goal_fbs",
         ":shooter_lib",
diff --git a/y2016/control_loops/superstructure/BUILD b/y2016/control_loops/superstructure/BUILD
index 4048cdc..aecfd98 100644
--- a/y2016/control_loops/superstructure/BUILD
+++ b/y2016/control_loops/superstructure/BUILD
@@ -122,7 +122,7 @@
     srcs = [
         "superstructure_lib_test.cc",
     ],
-    data = ["//y2016:config.json"],
+    data = ["//y2016:config"],
     deps = [
         ":superstructure_goal_fbs",
         ":superstructure_lib",
diff --git a/y2017/control_loops/superstructure/BUILD b/y2017/control_loops/superstructure/BUILD
index 535475d..7107e23 100644
--- a/y2017/control_loops/superstructure/BUILD
+++ b/y2017/control_loops/superstructure/BUILD
@@ -73,7 +73,7 @@
     srcs = [
         "superstructure_lib_test.cc",
     ],
-    data = ["//y2017:config.json"],
+    data = ["//y2017:config"],
     deps = [
         ":superstructure_goal_fbs",
         ":superstructure_lib",
@@ -128,7 +128,7 @@
     srcs = [
         "vision_time_adjuster_test.cc",
     ],
-    data = ["//y2017:config.json"],
+    data = ["//y2017:config"],
     deps = [
         ":vision_time_adjuster",
         "//aos/events:simulated_event_loop",
diff --git a/y2018/control_loops/superstructure/BUILD b/y2018/control_loops/superstructure/BUILD
index 4e97571..db01298 100644
--- a/y2018/control_loops/superstructure/BUILD
+++ b/y2018/control_loops/superstructure/BUILD
@@ -74,7 +74,7 @@
     srcs = [
         "superstructure_lib_test.cc",
     ],
-    data = ["//y2018:config.json"],
+    data = ["//y2018:config"],
     shard_count = 5,
     deps = [
         ":superstructure_goal_fbs",
diff --git a/y2019/BUILD b/y2019/BUILD
index e286fc7..1d8b996 100644
--- a/y2019/BUILD
+++ b/y2019/BUILD
@@ -5,7 +5,7 @@
 
 robot_downloader(
     data = [
-        ":config.json",
+        ":config",
     ],
     dirs = [
         "//y2019/vision/server:www_files",
diff --git a/y2019/control_loops/drivetrain/BUILD b/y2019/control_loops/drivetrain/BUILD
index cd3a793..c500ce6 100644
--- a/y2019/control_loops/drivetrain/BUILD
+++ b/y2019/control_loops/drivetrain/BUILD
@@ -127,7 +127,7 @@
 cc_test(
     name = "target_selector_test",
     srcs = ["target_selector_test.cc"],
-    data = ["//y2019:config.json"],
+    data = ["//y2019:config"],
     deps = [
         ":target_selector",
         "//aos/events:simulated_event_loop",
@@ -192,7 +192,7 @@
 cc_test(
     name = "localized_drivetrain_test",
     srcs = ["localized_drivetrain_test.cc"],
-    data = [":simulation_config.json"],
+    data = [":simulation_config"],
     deps = [
         ":camera_fbs",
         ":drivetrain_base",
@@ -210,7 +210,7 @@
 cc_binary(
     name = "drivetrain_replay",
     srcs = ["drivetrain_replay.cc"],
-    data = ["//y2019:config.json"],
+    data = ["//y2019:config"],
     deps = [
         ":drivetrain_base",
         ":event_loop_localizer",
diff --git a/y2019/control_loops/superstructure/BUILD b/y2019/control_loops/superstructure/BUILD
index ed0c916..c352ba6 100644
--- a/y2019/control_loops/superstructure/BUILD
+++ b/y2019/control_loops/superstructure/BUILD
@@ -75,7 +75,7 @@
         "superstructure_lib_test.cc",
     ],
     data = [
-        "//y2019:config.json",
+        "//y2019:config",
     ],
     deps = [
         ":superstructure_goal_fbs",
diff --git a/y2020/BUILD b/y2020/BUILD
index cd977f9..2d3f0e5 100644
--- a/y2020/BUILD
+++ b/y2020/BUILD
@@ -9,7 +9,7 @@
         ":setpoint_setter",
     ],
     data = [
-        ":config.json",
+        ":config",
     ],
     start_binaries = [
         "//aos/events/logging:logger_main",
@@ -29,7 +29,7 @@
         "//y2020/vision:viewer",
     ],
     data = [
-        ":config.json",
+        ":config",
     ],
     dirs = [
         "//y2020/www:www_files",
@@ -218,7 +218,7 @@
     name = "web_proxy",
     srcs = ["web_proxy.sh"],
     data = [
-        ":config.json",
+        ":config",
         "//aos/network:web_proxy_main",
         "//y2020/www:camera_main_bundle",
         "//y2020/www:field_main_bundle",
diff --git a/y2020/control_loops/drivetrain/BUILD b/y2020/control_loops/drivetrain/BUILD
index 0e06057..7e2ba18 100644
--- a/y2020/control_loops/drivetrain/BUILD
+++ b/y2020/control_loops/drivetrain/BUILD
@@ -122,7 +122,7 @@
 cc_test(
     name = "localizer_test",
     srcs = ["localizer_test.cc"],
-    data = [":simulation_config.json"],
+    data = [":simulation_config"],
     deps = [
         ":drivetrain_base",
         ":localizer",
@@ -140,7 +140,7 @@
     name = "drivetrain_replay_test",
     srcs = ["drivetrain_replay_test.cc"],
     data = [
-        ":replay_config.json",
+        ":replay_config",
         "@drivetrain_replay//file:spinning_wheels_while_still.bfbs",
     ],
     deps = [
@@ -160,7 +160,7 @@
 cc_binary(
     name = "drivetrain_replay",
     srcs = ["drivetrain_replay.cc"],
-    data = ["//y2020:config.json"],
+    data = ["//y2020:config"],
     deps = [
         ":drivetrain_base",
         ":localizer",
diff --git a/y2020/control_loops/superstructure/BUILD b/y2020/control_loops/superstructure/BUILD
index 4534404..e97fb12 100644
--- a/y2020/control_loops/superstructure/BUILD
+++ b/y2020/control_loops/superstructure/BUILD
@@ -88,7 +88,7 @@
         "superstructure_lib_test.cc",
     ],
     data = [
-        "//y2020:config.json",
+        "//y2020:config",
     ],
     deps = [
         ":superstructure_goal_fbs",
diff --git a/y2020/vision/BUILD b/y2020/vision/BUILD
index 8b73691..aaad085 100644
--- a/y2020/vision/BUILD
+++ b/y2020/vision/BUILD
@@ -32,7 +32,7 @@
         "camera_reader.cc",
     ],
     data = [
-        "//y2020:config.json",
+        "//y2020:config",
     ],
     restricted_to = [
         "//tools:k8",
@@ -66,7 +66,7 @@
         "viewer.cc",
     ],
     data = [
-        "//y2020:config.json",
+        "//y2020:config",
     ],
     restricted_to = [
         "//tools:k8",
@@ -88,7 +88,7 @@
         "calibration.cc",
     ],
     data = [
-        "//y2020:config.json",
+        "//y2020:config",
     ],
     restricted_to = [
         "//tools:k8",
@@ -115,7 +115,7 @@
         "viewer_replay.cc",
     ],
     data = [
-        "//y2020:config.json",
+        "//y2020:config",
     ],
     restricted_to = [
         "//tools:k8",