Skip to content
Merged
Show file tree
Hide file tree
Changes from 159 commits
Commits
Show all changes
161 commits
Select commit Hold shift + click to select a range
e1fd7c9
Add commandsv3 subproject
SamCarlberg Apr 19, 2025
0dcaaaf
Add wrapper classes for JDK internals
SamCarlberg Apr 19, 2025
89e7471
Add core classes
SamCarlberg Apr 19, 2025
6682824
Add command joysticks and buttons
SamCarlberg Apr 19, 2025
10869c8
Add example program for commandsv3
SamCarlberg Apr 19, 2025
9173146
Add comment on exception handling
SamCarlberg Apr 19, 2025
ded1394
Add Coroutine.fork
SamCarlberg Apr 23, 2025
17bb1a6
Add tests for sibling requirements and nested oneshots
SamCarlberg Apr 23, 2025
dd0420e
Make documentation comment a little clearer
SamCarlberg Apr 23, 2025
dce0903
Change Coroutine.fork to accept multiple commands
SamCarlberg Apr 23, 2025
b669696
Add copyright headers to generated protobuf classes
SamCarlberg Apr 23, 2025
676e787
Add first draft of a commands v3 design doc
SamCarlberg Apr 24, 2025
10ff94f
Rename package to org.wpilib.commands3
SamCarlberg Apr 25, 2025
841319d
Allow child commands to interrupt their siblings
SamCarlberg Apr 25, 2025
62d1b66
Remove CommandExecutionException
SamCarlberg Apr 25, 2025
9373371
Move parallel and sequence builders to top-level classes
SamCarlberg Apr 26, 2025
1d63344
Update design doc telemetry and child command sections
SamCarlberg Apr 26, 2025
b866393
Add timing to scheduler and command telemetry
SamCarlberg May 7, 2025
9813dd3
Throw when calling methods on unmounted coroutines
SamCarlberg May 13, 2025
eea410b
Fix copy-paste error from v2 cmake setup
SamCarlberg May 15, 2025
f9dbda3
Track mounted continuation in wrapper
SamCarlberg May 15, 2025
62925d6
Clean up after awaitAny
SamCarlberg May 15, 2025
dfde0c5
Command-local trigger bindings
SamCarlberg Jun 7, 2025
063bb27
Report scheduling trace for exceptions thrown by commands
SamCarlberg Jun 10, 2025
131d443
Remove RobotDisabledBehavior
SamCarlberg Jun 10, 2025
ddf147f
Add some documentation comments
SamCarlberg Jun 10, 2025
73ee346
Rename `getScheduledCommands()` to `getQueuedCommands()`
SamCarlberg Jun 10, 2025
6b084c7
Add explicit test for child commands not cancelling their parents
SamCarlberg Jun 10, 2025
5d9d6bb
Remove automatic setting of default command in constructor
SamCarlberg Jun 10, 2025
b2cf1e2
Remove Sendable from RequireableResource
SamCarlberg Jun 10, 2025
a6e7043
Run wpiformat
SamCarlberg Jun 10, 2025
f48061e
Rename Scheduler.getInstance() to Scheduler.getDefault()
SamCarlberg Jun 14, 2025
5240501
Remove requirement for default commands to have low priorities
SamCarlberg Jun 14, 2025
dd2b565
Add until and asLongAs to CommandBuilder
SamCarlberg Jun 14, 2025
498f95f
Rename `waitingFor` to `waitUntil`
SamCarlberg Jun 14, 2025
8b968ca
Add Coroutine.waitUntil
SamCarlberg Jun 14, 2025
8f3d4cb
Add RequireableResource.runRepeatedly and add docs for run
SamCarlberg Jun 14, 2025
da191b7
Make RequireableResource set idle default commands in constructor
SamCarlberg Jun 14, 2025
50438be
Add ParallelGroupBuilder.alongWith
SamCarlberg Jun 14, 2025
799b25b
Make EventLoop-taking Trigger constructor public
SamCarlberg Jun 14, 2025
bc5d728
Simplify Command.waitUntil
SamCarlberg Jun 15, 2025
a5236bb
Emit events during scheduler actions
SamCarlberg Jun 15, 2025
36eac8b
Linting
SamCarlberg Jun 15, 2025
f01d6d4
Move generated protobuf classes to separate directory
SamCarlberg Jun 16, 2025
c714689
Update joystick classes for parity and generate command controllers
SamCarlberg Jun 16, 2025
caba87b
Adjust indentation on top-level command example snippet
SamCarlberg Jun 16, 2025
70a7874
Checkstyle test
SamCarlberg Jun 16, 2025
cca0acc
Suppress checkstyle for all generated protobuf files
SamCarlberg Jun 16, 2025
162739d
PMD
SamCarlberg Jun 16, 2025
3aaaa8c
Linting
SamCarlberg Jul 25, 2025
40a5cb0
Remove old examples
SamCarlberg Jul 25, 2025
081289c
Formatting
SamCarlberg Jul 25, 2025
c6145d6
Formatting
SamCarlberg Jul 26, 2025
f889a08
Add bazel build and DevMain
SamCarlberg Jul 26, 2025
9d1e490
Bazel linting
SamCarlberg Jul 26, 2025
6a78627
Fix comment in generated controllers
SamCarlberg Jul 26, 2025
017135d
Update frcYear in vendor json
SamCarlberg Jul 26, 2025
6a9c1ec
Remove unneeded javadoc compile options
SamCarlberg Jul 26, 2025
67c4e0b
Unmuck snippet formatting
SamCarlberg Jul 26, 2025
c9c5a1f
CMake build updates
SamCarlberg Jul 26, 2025
21806f7
DevMain linting
SamCarlberg Jul 27, 2025
dafbe32
Apply bazel patch from PJ to generate protobuf files
SamCarlberg Jul 27, 2025
d11d9ad
Cancel commands when binding scopes become inactive
SamCarlberg Jul 30, 2025
db62193
Lint
SamCarlberg Jul 31, 2025
5130af2
Lint
SamCarlberg Jul 31, 2025
e6f63da
Bazel linting
SamCarlberg Jul 31, 2025
cb51791
Regenerate protobuf files
SamCarlberg Jul 31, 2025
8127e61
Replace snippet tags with code blocks
SamCarlberg Jul 31, 2025
33a28d9
Stop wpiformat from running against generated files
SamCarlberg Jul 31, 2025
d188948
Minor cleanup for readability
SamCarlberg Aug 7, 2025
56a0798
Fix nested commands being allowed to interrupt higher-priority commands
SamCarlberg Aug 7, 2025
f292977
Improve top-level documentation for Scheduler and Continuation
SamCarlberg Aug 7, 2025
8b0f050
Make inner continuation reference private
SamCarlberg Aug 7, 2025
1f11dbd
Merge remote-tracking branch 'wpi/2027' into better-async-commands
SamCarlberg Aug 7, 2025
b9c4548
Linting
SamCarlberg Aug 7, 2025
e36fb91
Document reasons for using Throwable to get stack frames
SamCarlberg Aug 8, 2025
e266735
Clean up debounced triggers
SamCarlberg Aug 8, 2025
f50fe6e
Documentation pass on Coroutine; add minor test
SamCarlberg Aug 9, 2025
f797231
Improve docs for Command.java
SamCarlberg Aug 9, 2025
244e67e
Note pinned error removal
SamCarlberg Aug 9, 2025
2cc43f9
Remove redundant `this` specifier on members
SamCarlberg Aug 9, 2025
e2c9650
Fix commands bound to inner triggers outliving the outer command
SamCarlberg Aug 10, 2025
5f592d2
Merge remote-tracking branch 'wpi/2027' into better-async-commands
SamCarlberg Aug 10, 2025
7d49e49
Address new linting warnings from upstream config changes
SamCarlberg Aug 10, 2025
eff9a2b
Make cancelAll() also evict on-deck commands
SamCarlberg Aug 14, 2025
c84aaec
Add tests for deadlock scenarios
SamCarlberg Aug 14, 2025
2cab487
Rename v2 test file to match the class under test
SamCarlberg Aug 14, 2025
7115a46
Rename "RequireableResource" to "Mechanism"
SamCarlberg Aug 16, 2025
4bc3970
Rename "generate_hids" to "generate_files"
SamCarlberg Aug 16, 2025
db2c85c
Update design doc with new name
SamCarlberg Aug 16, 2025
ae6d01b
Update script name in comment and github action
SamCarlberg Aug 16, 2025
56393c4
Linting
SamCarlberg Aug 16, 2025
2d66742
Cleanup resource -> mechanism rename that wasn't caught earlier
SamCarlberg Aug 17, 2025
91c766b
Change artifact name to "commands3"
SamCarlberg Aug 19, 2025
9607585
Change command builders to be staged, instead of a single builder object
SamCarlberg Aug 19, 2025
3d49867
Update design doc with builder changes
SamCarlberg Aug 19, 2025
87696c3
Allow `onCancel` callback to be null
SamCarlberg Aug 19, 2025
b1ac457
Streamline command builder stages
SamCarlberg Aug 19, 2025
9aceb46
Simplify builder stages
SamCarlberg Aug 21, 2025
9fd0323
Use a counter to issue IDs to CommandStates
SamCarlberg Aug 21, 2025
05477bd
Remove old CommandBuilder class
SamCarlberg Aug 23, 2025
310145e
Make scheduler field private
SamCarlberg Aug 23, 2025
f37a806
Include commandsv3 in docs build
SamCarlberg Aug 23, 2025
a5a14af
Documentation pass
SamCarlberg Aug 23, 2025
0f7d40b
Lint
SamCarlberg Aug 23, 2025
0c2d420
Run child commands BEFORE parents, not after
SamCarlberg Aug 27, 2025
547853b
Document caveats around waiting for a fixed time
SamCarlberg Aug 27, 2025
7185f25
Documentation and API cleanup pass
SamCarlberg Aug 31, 2025
ff4f02f
Add test for Scheduler.addPeriodic; move yield to end of loop
SamCarlberg Aug 31, 2025
48140a2
Remove IdleCommand and WaitCommand in favor of factories
SamCarlberg Sep 1, 2025
ca4044e
Document coroutine fork/await as nonblocking and blocking operations
SamCarlberg Sep 1, 2025
bf1828e
Remove ParallelGroupBuilder methods that modified optionalailty
SamCarlberg Sep 1, 2025
67b2376
Documentation and import cleanup in button code
SamCarlberg Sep 1, 2025
980ad84
Explicitly handle one-time loop binding
SamCarlberg Sep 1, 2025
9a08755
Rename Evicted event to Canceled
SamCarlberg Sep 1, 2025
5982f57
Fix cancelAll() not calling cancellation hooks
SamCarlberg Sep 1, 2025
3f92f54
Add tests for sideload function interactions with commands
SamCarlberg Sep 1, 2025
bf0c4cf
Make "canceled" and "canceling" spelling consistent
SamCarlberg Sep 1, 2025
32d68c8
Make Continuation and ContinuationScope package-private
SamCarlberg Sep 1, 2025
fd1b50a
Parallel and sequential group cleanup
SamCarlberg Sep 1, 2025
817e0f1
Rename `Sequence` to `SequentialGroup`
SamCarlberg Sep 1, 2025
00d8c91
Move conflict detection to utility class
SamCarlberg Sep 2, 2025
2609056
Reorder scheduler `run()` cycle
SamCarlberg Sep 3, 2025
f08a4a0
Sort conflicting mechanism names alphabetically in ConflictDetector
SamCarlberg Sep 3, 2025
6aea6db
Update design doc with changes to `run()` method steps ordering
SamCarlberg Sep 3, 2025
da46844
Properly clean up after commands that encounter uncaught exceptions
SamCarlberg Sep 3, 2025
786ce08
Cancel parent commands when child command encounters an error
SamCarlberg Sep 4, 2025
ad925bd
Split scheduler tests into separate files for organization
SamCarlberg Sep 4, 2025
62fdc44
Rename `SequenceBuilder` to `SequentialGroupBuilder` for consistency
SamCarlberg Sep 4, 2025
eebbc59
Protobuf reorganization
SamCarlberg Sep 13, 2025
66856bf
Rename test files
SamCarlberg Sep 13, 2025
02aa15f
Test cleanup
SamCarlberg Sep 13, 2025
d4d3c64
Document cancellation event order
SamCarlberg Sep 13, 2025
b9593ba
Minor cleanup for PMD
SamCarlberg Sep 13, 2025
d8f7dad
Document scheduler and event loop on controller trigger factories
SamCarlberg Sep 13, 2025
42bf6b2
Rename `forkAll` to `fork` for consistency
SamCarlberg Sep 13, 2025
e7cd399
Covariance
SamCarlberg Sep 13, 2025
1893fc0
Delegate `fork(Collection)` to variadic overload
SamCarlberg Sep 13, 2025
6af662c
Make scheduler constructor private; use a factory method instead
SamCarlberg Sep 13, 2025
15d9b85
Merge remote-tracking branch 'wpi/2027' into better-async-commands
SamCarlberg Sep 13, 2025
97e8941
Remove merge artifact
SamCarlberg Sep 13, 2025
f74fbf8
Linting
SamCarlberg Sep 13, 2025
8baeb86
Regenerate protobuf classes with script
SamCarlberg Sep 13, 2025
5a62bff
Update generate_files to work on macOS without modifications
SamCarlberg Sep 13, 2025
3abcf09
Update default command documentation
SamCarlberg Sep 13, 2025
15760f2
Regenerate protbuf classes
SamCarlberg Sep 13, 2025
5ce3fa1
Remove unnecessary suppression
SamCarlberg Sep 13, 2025
9bb94a7
Merge branch '2027' into better-async-commands
SamCarlberg Sep 21, 2025
103397d
Merge branch '2027' into better-async-commands
SamCarlberg Sep 22, 2025
d6cae87
Test updates
SamCarlberg Sep 25, 2025
966cfa0
Gradle updates
SamCarlberg Sep 26, 2025
68441a3
Merge branch '2027' into better-async-commands
SamCarlberg Oct 2, 2025
ca98b4b
Add explicit check for command 1 completing normally
SamCarlberg Oct 3, 2025
2489813
Merge branch '2027' into better-async-commands
SamCarlberg Oct 7, 2025
7a3fe6e
Add NoDiscard to command types
SamCarlberg Oct 7, 2025
3ccd430
Linting
SamCarlberg Oct 7, 2025
9473a2d
Update cmake to include commandsv3 with wpilib build
SamCarlberg Oct 7, 2025
4a89bf1
Add wpiannotations to bazel dependencies
SamCarlberg Oct 8, 2025
c00da49
Merge branch '2027' into better-async-commands
SamCarlberg Oct 8, 2025
efbf0c3
Add datalog to cmake deps
SamCarlberg Oct 9, 2025
fee4a8f
Add null check for binding frames
SamCarlberg Oct 9, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/actions/pregen/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,11 @@ runs:
./wpimath/generate_quickbuf.py --quickbuf_plugin protoc-gen-quickbuf-1.3.3-linux-x86_64.exe
shell: bash

- name: Regenerate Commands v3
run: |
./commandsv3/generate_files.py --quickbuf_plugin protoc-gen-quickbuf-1.3.3-linux-x86_64.exe
shell: bash

- name: Regenerate wpiunits
run: ./wpiunits/generate_units.py
shell: bash
Expand Down
2 changes: 2 additions & 0 deletions BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ write_source_files(
"//wpilibj:write_wpilibj",
"//wpilibjExamples:write_example_project_list",
"//wpilibNewCommands:write_wpilib_new_commands",
"//commandsv3:write_commandsv3",
"//wpimath:write_wpimath",
"//wpiunits:write_wpiunits",
"//wpiutil:write_wpiutil",
Expand Down Expand Up @@ -100,6 +101,7 @@ publish_all(
"//wpigui:wpigui-cpp_publish.publish",
"//wpilibNewCommands:wpilibNewCommands-cpp_publish.publish",
"//wpilibNewCommands:wpilibNewCommands-java_publish.publish",
"//commandsv3:commandsv3-java_publish.publish",
"//wpilibc:wpilibc-cpp_publish.publish",
"//wpilibcExamples:commands_publish.publish",
"//wpilibcExamples:examples_publish.publish",
Expand Down
2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -346,12 +346,14 @@ endif()

if(WITH_WPILIB)
set(APRILTAG_DEP_REPLACE "find_dependency(apriltag)")
set(COMMANDSV3_DEP_REPLACE "find_dependency(commandsv3)")
set(WPILIBC_DEP_REPLACE "find_dependency(wpilibc)")
set(WPILIBJ_DEP_REPLACE "find_dependency(wpilibj)")
set(WPILIBNEWCOMMANDS_DEP_REPLACE "find_dependency(wpilibNewCommands)")
add_subdirectory(apriltag)
add_subdirectory(wpilibj)
add_subdirectory(wpilibc)
add_subdirectory(commandsv3) # must be after wpilibj
add_subdirectory(wpilibNewCommands)
add_subdirectory(romiVendordep)
add_subdirectory(xrpVendordep)
Expand Down
1 change: 1 addition & 0 deletions README-CMake.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ WPILib is normally built with Gradle, however for some systems, such as Linux ba
## Libraries that get built
* apriltag
* cameraserver
* commandsv3
* cscore
* fieldImages
* hal (simulation HAL only)
Expand Down
12 changes: 12 additions & 0 deletions commandsv3/.styleguide
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
modifiableFileExclude {
\.patch$
}

generatedFileExclude {
src/generated/main/java/org/wpilib/commands3/button/
src/generated/main/java/org/wpilib/commands3/proto/
}

repoRootNameOverride {
commandsv3
}
92 changes: 92 additions & 0 deletions commandsv3/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
load("@allwpilib_pip_deps//:requirements.bzl", "requirement")
load("@aspect_bazel_lib//lib:write_source_files.bzl", "write_source_files")
load("@rules_java//java:defs.bzl", "java_binary")
load("@rules_python//python:defs.bzl", "py_binary")
load("//commandsv3:generate.bzl", "generate_commandsv3")
load("//shared/bazel/rules:java_rules.bzl", "wpilib_java_junit5_test", "wpilib_java_library")

py_binary(
name = "generate_files",
srcs = ["generate_files.py"],
target_compatible_with = select({
"@rules_bzlmodrio_toolchains//constraints/is_systemcore:systemcore": ["@platforms//:incompatible"],
"//conditions:default": [],
}),
deps = [requirement("jinja2")],
)

filegroup(
name = "templates",
srcs = glob(["src/generate/main/**"]) + [
"//wpilibj:hid_schema",
],
)

generate_commandsv3(
name = "generate_commandsv3",
)

write_source_files(
name = "write_commandsv3",
files = {
"src/generated": ":generate_commandsv3",
},
suggested_update_target = "//:write_all",
tags = ["pregeneration"],
visibility = ["//visibility:public"],
)

filegroup(
name = "generated_java",
srcs = glob(["src/generated/main/java/**/*.java"]),
)

wpilib_java_library(
name = "commandsv3-java",
srcs = glob(["src/main/java/**/*.java"]) + [":generated_java"],
exported_plugins = ["//javacPlugin:plugin"],
maven_artifact_name = "commands3-java",
maven_group_id = "org.wpilib.commands3",
plugins = ["//javacPlugin:plugin"],
visibility = ["//visibility:public"],
deps = [
"//cscore:cscore-java",
"//hal:hal-java",
"//ntcore:ntcore-java",
"//wpiannotations",
"//wpilibj:wpilibj-java",
"//wpimath:wpimath-java",
"//wpinet:wpinet-java",
"//wpiunits:wpiunits-java",
"//wpiutil:wpiutil-java",
"@maven//:us_hebi_quickbuf_quickbuf_runtime",
],
)

wpilib_java_junit5_test(
name = "commandsv3-java-test",
srcs = glob(["**/*.java"]),
deps = [
":commandsv3-java",
"//hal:hal-java",
"//ntcore:ntcore-java",
"//wpiannotations",
"//wpilibj:wpilibj-java",
"//wpimath:wpimath-java",
"//wpiunits:wpiunits-java",
"//wpiutil:wpiutil-java",
"@maven//:us_hebi_quickbuf_quickbuf_runtime",
],
)

java_binary(
name = "DevMain-Java",
srcs = ["src/dev/java/org/wpilib/commands3/DevMain.java"],
main_class = "org.wpilib.commands3.DevMain",
deps = [
"//hal:hal-java",
"//ntcore:ntcore-java",
"//wpimath:wpimath-java",
"//wpiutil:wpiutil-java",
],
)
53 changes: 53 additions & 0 deletions commandsv3/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
project(commandsv3)

include(SubDirList)
include(CompileWarnings)
include(AddTest)

if(WITH_JAVA)
include(UseJava)

file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java src/generated/main/java/*.java)
file(GLOB QUICKBUF_JAR ${WPILIB_BINARY_DIR}/wpiutil/thirdparty/quickbuf/*.jar)

add_jar(
commandsv3_jar
${JAVA_SOURCES}
INCLUDE_JARS
datalog_jar
hal_jar
ntcore_jar
cscore_jar
cameraserver_jar
wpiannotations_jar
wpimath_jar
wpiunits_jar
wpiutil_jar
wpilibj_jar
${QUICKBUF_JAR}
OUTPUT_NAME commandsv3
OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest}
)

install_jar(commandsv3_jar DESTINATION ${java_lib_dest})
install_jar_exports(
TARGETS commandsv3_jar
FILE commandsv3_jar.cmake
DESTINATION share/commandsv3
)
endif()

if(WITH_JAVA_SOURCE)
include(UseJava)
include(CreateSourceJar)
add_source_jar(
commandsv3_src_jar
BASE_DIRECTORIES
${CMAKE_CURRENT_SOURCE_DIR}/src/main/java
${CMAKE_CURRENT_SOURCE_DIR}/src/generated/main/java
OUTPUT_NAME commandsv3-sources
OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest}
)
set_property(TARGET commandsv3_src_jar PROPERTY FOLDER "java")
install_jar(commandsv3_src_jar DESTINATION ${java_lib_dest})
endif()
18 changes: 18 additions & 0 deletions commandsv3/CommandsV3.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"fileName": "CommandsV3.json",
"name": "Commands v3",
"version": "1.0.0",
"uuid": "4decdc05-a056-46cf-9561-39449bbb0130",
"frcYear": "2027_alpha1",
"mavenUrls": [],
"jsonUrl": "",
"javaDependencies": [
{
"groupId": "org.wpilib.commands3",
"artifactId": "commands3-java",
"version": "wpilib"
}
],
"jniDependencies": [],
"cppDependencies": []
}
49 changes: 49 additions & 0 deletions commandsv3/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
ext {
useJava = true
useCpp = false
baseId = 'commands3'
groupId = 'org.wpilib'

nativeName = 'commands3'
devMain = 'org.wpilib.commands3.DevMain'
}

apply from: "${rootDir}/shared/java/javacommon.gradle"

evaluationDependsOn(':wpiutil')
evaluationDependsOn(':ntcore')
evaluationDependsOn(':hal')
evaluationDependsOn(':wpimath')
evaluationDependsOn(':wpilibj')

dependencies {
annotationProcessor project(':javacPlugin')
implementation project(':wpiannotations')
implementation project(':wpiutil')
implementation project(':wpinet')
implementation project(':ntcore')
implementation project(':hal')
implementation project(':wpimath')
implementation project(':wpilibj')
api("us.hebi.quickbuf:quickbuf-runtime:1.4")
testAnnotationProcessor project(':javacPlugin')
testImplementation 'org.mockito:mockito-core:4.1.0'
}

sourceSets.main.java.srcDir "${projectDir}/src/generated/main/java"
sourceSets.main.resources.srcDir "${projectDir}/src/main/proto"

test {
testLogging {
outputs.upToDateWhen {false}
showStandardStreams = true
}

// For reflective access to the continuation classes
jvmArgs += [
'--add-opens',
'java.base/jdk.internal.vm=ALL-UNNAMED',
'--add-opens',
'java.base/java.lang=ALL-UNNAMED',
]
}
14 changes: 14 additions & 0 deletions commandsv3/commandsv3-config.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
include(CMakeFindDependencyMacro)
@WPIUTIL_DEP_REPLACE@
@NTCORE_DEP_REPLACE@
@CSCORE_DEP_REPLACE@
@CAMERASERVER_DEP_REPLACE@
@HAL_DEP_REPLACE@
@WPILIBC_DEP_REPLACE@
@WPIMATH_DEP_REPLACE@

@FILENAME_DEP_REPLACE@
include(${SELF_DIR}/commandsv3.cmake)
if(@WITH_JAVA@)
include(${SELF_DIR}/commandsv3_jar.cmake)
endif()
45 changes: 45 additions & 0 deletions commandsv3/generate.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
def __generate_commandsv3_impl(ctx):
"""
Custom rule used to create the commandsv3 pre-generated files. See `./README-Bazel.md` for the reasoning.
"""
output_dir = ctx.actions.declare_directory("_gendir")

args = ctx.actions.args()
args.add("--output_directory", output_dir.path)
args.add("--template_root", "commandsv3/src/generate")
args.add("--protoc", ctx.executable._protoc)
args.add("--quickbuf_plugin", ctx.executable._quickbuf)

ctx.actions.run(
inputs = ctx.attr._templates.files,
outputs = [output_dir],
executable = ctx.executable._tool,
arguments = [args],
tools = [ctx.executable._protoc, ctx.executable._quickbuf],
)

return [DefaultInfo(files = depset([output_dir]))]

generate_commandsv3 = rule(
implementation = __generate_commandsv3_impl,
attrs = {
"_protoc": attr.label(
default = Label("@com_google_protobuf//:protoc"),
cfg = "exec",
executable = True,
),
"_quickbuf": attr.label(
default = Label("//:quickbuf_protoc"),
cfg = "exec",
executable = True,
),
"_templates": attr.label(
default = Label("//commandsv3:templates"),
),
"_tool": attr.label(
default = Label("//commandsv3:generate_files"),
cfg = "exec",
executable = True,
),
},
)
Loading
Loading