Files
allwpilib/wpilibjExamples/generate_bazel_files.py
Gold856 f1adce4cf7 [examples] Clean up examples (#8674)
Move various "examples" into snippets. Several examples that were less
than a full mechanism or robot were moved to snippets. `arcadedrive` and
`tankdrive` were removed in favor of their Gamepad variants. `hidrumble`
was removed due to being too simple. `potentiometerpid` was removed
because of low utility. `gyromecanum` replaced `mecanumdrive` for
deduplication and because very few teams run holonomic drivetrains
without gyros.
2026-03-14 14:13:45 -07:00

77 lines
2.0 KiB
Python

import json
import sys
def load_foldernames(filename):
output = []
with open(filename, "r") as f:
data = json.load(f)
for test_data in data:
output.append(test_data["foldername"])
return sorted(set(output))
def load_tests(filename):
output = []
with open(filename, "r") as f:
data = json.load(f)
for test_data in data:
if test_data.get("hasunittests", False):
output.append(test_data["foldername"])
return sorted(set(output))
def main():
examples = load_foldernames(
"wpilibjExamples/src/main/java/org/wpilib/examples/examples.json"
)
commands = load_foldernames(
"wpilibjExamples/src/main/java/org/wpilib/commands/commands.json"
)
templates = load_foldernames(
"wpilibjExamples/src/main/java/org/wpilib/templates/templates.json"
)
snippets = load_foldernames(
"wpilibjExamples/src/main/java/org/wpilib/snippets/snippets.json"
)
example_tests = load_tests(
"wpilibjExamples/src/main/java/org/wpilib/examples/examples.json"
)
snippet_tests = load_tests(
"wpilibjExamples/src/main/java/org/wpilib/snippets/snippets.json"
)
output_file = "wpilibjExamples/example_projects.bzl"
if len(sys.argv) == 2:
output_file = sys.argv[1]
with open(output_file, "w") as f:
f.write('EXAMPLE_FOLDERS = [\n "' + '",\n "'.join(examples) + '",\n]\n\n')
f.write(
'COMMANDS_V2_FOLDERS = [\n "' + '",\n "'.join(commands) + '",\n]\n\n'
)
f.write('SNIPPET_FOLDERS = [\n "' + '",\n "'.join(snippets) + '",\n]\n\n')
f.write(
'TEMPLATE_FOLDERS = [\n "' + '",\n "'.join(templates) + '",\n]\n\n'
)
f.write(
'EXAMPLE_TESTS_FOLDERS = [\n "'
+ '",\n "'.join(example_tests)
+ '",\n]\n\n'
)
f.write(
'SNIPPET_TESTS_FOLDERS = [\n "'
+ '",\n "'.join(snippet_tests)
+ '",\n]\n'
)
if __name__ == "__main__":
main()