generated from remal-gradle-plugins/template
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild-generate-LombokDependencies.gradle
75 lines (67 loc) · 3.07 KB
/
build-generate-LombokDependencies.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
generateSources.forMainSourceSet.java {
inputs.files(configurations.lombokCoreArtifacts).withPropertyName('lombokCoreArtifacts')
inputs.files(configurations.lombokAddonsArtifacts).withPropertyName('lombokAddonsArtifacts').optional()
classFile(project.calculateBaseJavaPackage(), 'LombokDependencyType') {
block("enum ${simpleName}") {
line("CORE,")
line("ADDON,")
line(";")
}
}
classFile(project.calculateBaseJavaPackage(), 'LombokDependency') {
addImport("lombok.Builder")
addImport("lombok.Value")
line("@Value")
line("@Builder")
block("class ${simpleName}") {
line("LombokDependencyType type;")
line("String group;")
line("String name;")
line("String version;")
}
}
classFile(project.calculateBaseJavaPackage(), 'LombokDependencies') {
addStaticImport("lombok.AccessLevel", "PRIVATE")
addImport("com.google.common.collect.ImmutableMap")
addImport("java.util.Map")
addImport("lombok.NoArgsConstructor")
line("@NoArgsConstructor(access = PRIVATE)")
block("abstract class ${simpleName}") {
line("")
line("private static final Map<String, LombokDependency> MAPPING = ImmutableMap.<String, LombokDependency>builder()")
indent {
configurations.lombokCoreArtifacts.dependencies.forEach { Dependency dep ->
line(".put(\"${escapeString(dep.name)}\", LombokDependency.builder()")
line(" .type(LombokDependencyType.CORE)")
line(" .group(\"${escapeString(dep.group)}\")")
line(" .name(\"${escapeString(dep.name)}\")")
line(" .version(\"${escapeString(dep.version)}\")")
line(" .build()")
line(")")
}
configurations.lombokAddonsArtifacts.dependencies.forEach { Dependency dep ->
line(".put(\"${escapeString(dep.name)}\", LombokDependency.builder()")
line(" .type(LombokDependencyType.ADDON)")
line(" .group(\"${escapeString(dep.group)}\")")
line(" .name(\"${escapeString(dep.name)}\")")
line(" .version(\"${escapeString(dep.version)}\")")
line(" .build()")
line(")")
}
line(".build();")
}
line("")
block("public static Map<String, LombokDependency> getLombokDependencies()") {
line("return MAPPING;")
}
line("")
block("public static LombokDependency getLombokDependency(String id)") {
line("var dependency = getLombokDependencies().get(id);")
block("if (dependency == null)") {
line("throw new IllegalStateException(\"Lombok dependency is not registered: \" + id);")
}
line("return dependency;")
}
}
}
}