mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-23 01:21:42 +00:00
The `command3` example project contains a program that could plausibly play in the 2026 rebuilt game. It includes nested mechanisms (`Intake` has an inner `IntakeWrist` and `IntakeRoller` and is similar to the v2 superstructure concept), swerve drive with localization and path following (albeit stubbed for sake of example), opmodes and opmode-scoped commands, and command-scoped triggers. The template projects are basic skeletons. The larger template includes a basic command that just increments and prints a counter variable every time it runs. The hatchbot v3 example has been refactored to be more idiomatic: - `RobotContainer` removed - "Subsystem" names in packages, comments, and classes has been replaced with "Mechanism" - Some v2-specific comments and structures have been reworded or deleted - The Drive mechanism now provides commands for arcade drive and driving a distance, instead of exposing public methods that write directly to hardware (which broke encapsulation and made it possible to issue conflicting hardware requests)
175 lines
6.3 KiB
Python
175 lines
6.3 KiB
Python
load("@rules_java//java:defs.bzl", "java_binary", "java_library")
|
|
load("@rules_pkg//:mappings.bzl", "pkg_files")
|
|
load("@rules_pkg//:pkg.bzl", "pkg_zip")
|
|
load("//shared/bazel/rules:java_rules.bzl", "wpilib_java_junit5_test")
|
|
load("//wpilibjExamples:example_projects.bzl", "COMMANDS_V2_FOLDERS", "EXAMPLE_FOLDERS", "EXAMPLE_TESTS_FOLDERS", "SNIPPET_FOLDERS", "SNIPPET_TESTS_FOLDERS", "TEMPLATE_FOLDERS")
|
|
|
|
def _package_type(package_type):
|
|
pkg_files(
|
|
name = package_type + "-pkg",
|
|
srcs = native.glob(["src/main/java/org/wpilib/" + package_type + "/**"]),
|
|
strip_prefix = "src/main/java/org/wpilib",
|
|
)
|
|
|
|
pkgs = ["//:license_pkg_files", ":" + package_type + "-pkg"]
|
|
if package_type == "examples":
|
|
pkg_files(
|
|
name = package_type + "-tests-pkg",
|
|
srcs = native.glob(["src/test/java/org/wpilib/" + package_type + "/**"]),
|
|
strip_prefix = "src/test/java/org/wpilib/" + package_type,
|
|
prefix = "examples_test",
|
|
)
|
|
pkgs.append(package_type + "-tests-pkg")
|
|
|
|
pkg_zip(
|
|
name = package_type + "-zip",
|
|
srcs = pkgs,
|
|
tags = ["manual"],
|
|
)
|
|
|
|
def build_examples(halsim_deps):
|
|
_package_type("examples")
|
|
|
|
for folder in EXAMPLE_FOLDERS:
|
|
java_binary(
|
|
name = folder + "-example",
|
|
srcs = native.glob(["src/main/java/org/wpilib/examples/" + folder + "/**/*.java"]),
|
|
main_class = "org/wpilib/examples/" + folder + "/Main",
|
|
plugins = [
|
|
"//epilogue-processor:plugin",
|
|
],
|
|
deps = [
|
|
"//apriltag:apriltag-java",
|
|
"//cameraserver:cameraserver-java",
|
|
"//cscore:cscore-java",
|
|
"//hal:hal-java",
|
|
"//ntcore:ntcore-java",
|
|
"//wpimath:wpimath-java",
|
|
"//wpilibj:wpilibj-java",
|
|
"//commandsv2:commandsv2-java",
|
|
"//commandsv3:commandsv3-java",
|
|
"//wpiutil:wpiutil-java",
|
|
"//romiVendordep:romiVendordep-java",
|
|
"//xrpVendordep:xrpVendordep-java",
|
|
"//wpiunits:wpiunits-java",
|
|
"//epilogue-runtime:epilogue-java",
|
|
"@bzlmodrio-opencv//libraries/java/opencv",
|
|
],
|
|
tags = ["wpi-example"],
|
|
)
|
|
|
|
def build_commands():
|
|
_package_type("commands")
|
|
|
|
for folder in COMMANDS_V2_FOLDERS:
|
|
java_library(
|
|
name = folder + "-command",
|
|
srcs = native.glob(["src/main/java/org/wpilib/commands/" + folder + "/**/*.java"]),
|
|
deps = [
|
|
"//hal:hal-java",
|
|
"//wpilibj:wpilibj-java",
|
|
"//commandsv2:commandsv2-java",
|
|
"//wpimath:wpimath-java",
|
|
],
|
|
tags = ["wpi-example"],
|
|
)
|
|
|
|
def build_snippets():
|
|
_package_type("snippets")
|
|
|
|
for folder in SNIPPET_FOLDERS:
|
|
java_library(
|
|
name = folder + "-snippet",
|
|
srcs = native.glob(["src/main/java/org/wpilib/snippets/" + folder + "/**/*.java"]),
|
|
plugins = [
|
|
"//epilogue-processor:plugin",
|
|
],
|
|
deps = [
|
|
"//apriltag:apriltag-java",
|
|
"//cameraserver:cameraserver-java",
|
|
"//cscore:cscore-java",
|
|
"//hal:hal-java",
|
|
"//ntcore:ntcore-java",
|
|
"//wpimath:wpimath-java",
|
|
"//wpilibj:wpilibj-java",
|
|
"//commandsv2:commandsv2-java",
|
|
"//commandsv3:commandsv3-java",
|
|
"//wpiutil:wpiutil-java",
|
|
"//romiVendordep:romiVendordep-java",
|
|
"//xrpVendordep:xrpVendordep-java",
|
|
"//wpiunits:wpiunits-java",
|
|
"//epilogue-runtime:epilogue-java",
|
|
"@bzlmodrio-opencv//libraries/java/opencv",
|
|
],
|
|
tags = ["wpi-example"],
|
|
)
|
|
|
|
def build_templates():
|
|
_package_type("templates")
|
|
|
|
for folder in TEMPLATE_FOLDERS:
|
|
java_library(
|
|
name = folder + "-template",
|
|
srcs = native.glob(["src/main/java/org/wpilib/templates/" + folder + "/**/*.java"]),
|
|
plugins = [
|
|
"//epilogue-processor:plugin",
|
|
],
|
|
deps = [
|
|
"//hal:hal-java",
|
|
"//wpilibj:wpilibj-java",
|
|
"//commandsv2:commandsv2-java",
|
|
"//commandsv3:commandsv3-java",
|
|
"//wpimath:wpimath-java",
|
|
"//wpiutil:wpiutil-java",
|
|
"//epilogue-runtime:epilogue-java",
|
|
"//xrpVendordep:xrpVendordep-java",
|
|
"//wpiunits:wpiunits-java",
|
|
],
|
|
tags = ["wpi-example"],
|
|
)
|
|
|
|
def build_tests():
|
|
for folder in EXAMPLE_TESTS_FOLDERS:
|
|
wpilib_java_junit5_test(
|
|
name = folder + "-test",
|
|
srcs = native.glob(["src/test/java/org/wpilib/examples/" + folder + "/**/*.java"]),
|
|
plugins = [
|
|
"//epilogue-processor:plugin",
|
|
],
|
|
deps = [
|
|
":" + folder + "-example",
|
|
"//hal:hal-java",
|
|
"//ntcore:ntcore-java",
|
|
"//wpilibj:wpilibj-java",
|
|
"//commandsv2:commandsv2-java",
|
|
"//commandsv3:commandsv3-java",
|
|
"//wpimath:wpimath-java",
|
|
"//wpiutil:wpiutil-java",
|
|
"//epilogue-runtime:epilogue-java",
|
|
"//wpiunits:wpiunits-java",
|
|
],
|
|
tags = ["wpi-example"],
|
|
)
|
|
|
|
for folder in SNIPPET_TESTS_FOLDERS:
|
|
wpilib_java_junit5_test(
|
|
name = folder + "-test",
|
|
srcs = native.glob(["src/test/java/org/wpilib/snippets/" + folder + "/**/*.java"]),
|
|
plugins = [
|
|
"//epilogue-processor:plugin",
|
|
],
|
|
deps = [
|
|
":" + folder + "-snippet",
|
|
"//hal:hal-java",
|
|
"//ntcore:ntcore-java",
|
|
"//wpilibj:wpilibj-java",
|
|
"//commandsv2:commandsv2-java",
|
|
"//commandsv3:commandsv3-java",
|
|
"//wpimath:wpimath-java",
|
|
"//wpiutil:wpiutil-java",
|
|
"//epilogue-runtime:epilogue-java",
|
|
"//wpiunits:wpiunits-java",
|
|
],
|
|
tags = ["wpi-example"],
|
|
)
|