-
Notifications
You must be signed in to change notification settings - Fork 1
/
build.gradle
96 lines (79 loc) · 2.91 KB
/
build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
plugins {
id "com.github.node-gradle.node" version "2.2.4"
}
apply plugin: 'java-library'
apply plugin: 'jacoco'
apply plugin: 'maven-publish'
java {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
group = 'org.carlmontrobotics'
repositories {
mavenCentral()
}
dependencies {
api group: 'org.java-websocket', name: 'Java-WebSocket', version: '1.5.1'
//Add SLF4J NOP Logger Binding to prevent runtime warnings
implementation group: 'org.slf4j', name: 'slf4j-nop', version: '1.7.30'
implementation group: 'com.github.cliftonlabs', name: 'json-simple', version: '3.1.1'
testImplementation 'junit:junit:4.13'
testImplementation 'org.mockito:mockito-core:5.12.0'
}
// To please the Windows CI server (and perhaps other Windows machines),
// the template directory needs to be passed to the asyncapi generator as
// an archive.
def templateDir = "${projectDir}/asyncapi-template"
task archiveTemplate(type: Tar) {
archiveFileName = "asyncapi-template.tar"
destinationDirectory = file("$buildDir/tmp")
from(templateDir) {
exclude "node_modules"
into "asyncapi-template" // npm requires that everything be in a top-level folder
}
// Allow the outputs of this task to be cached
outputs.cacheIf { true }
}
// Add a task to generate java source code for the devices using npx to run
// the asyncapi generator.
task generateDeviceFiles(type: NpxTask) {
// Clean the output directory first (See #40)
doFirst {
delete outputs
}
def outputDir = "${buildDir}/generated/sources/asyncapi"
// Define the command line that npx should use
workingDir = buildDir // Because templateDir can't be under it
command = '@asyncapi/[email protected]'
args = ['--force-write',
'-o', "${outputDir}/org/carlmontrobotics/wpiws/devices",
"https://raw.githubusercontent.com/DeepBlueRobotics/allwpilib/c1fc86033a4b5ebda451de657fc2546eb3f431fb/simulation/halsim_ws_core/doc/wpilib-ws.yaml",
file(archiveTemplate.archiveFile).toURI()]
// Define the inputs and outputs of this task so that gradle only runs it
// when necessary.
inputs.files(archiveTemplate.outputs)
outputs.dir(outputDir).withPropertyName("outputDir")
// Allow the outputs of this task to be cached
outputs.cacheIf { true }
}
// Include the generated files in the source to compile.
sourceSets.main.java.srcDirs generateDeviceFiles.outputs
// Add a task to manually clean the generated devices folder.
task cleanDeviceFiles(type: Delete) {
delete generateDeviceFiles.outputs
}
// Use a version of node and npm that is known to work.
node {
download = true
version = '20.12.2'
npmVersion = '10.5.0'
}
publishing {
publications {
maven(MavenPublication) {
groupId = 'org.carlmontrobotics'
artifactId = 'WPIWebSockets'
from components.java
}
}
}