diff options
Diffstat (limited to 'subprojects/docs/build.gradle.kts')
-rw-r--r-- | subprojects/docs/build.gradle.kts | 81 |
1 files changed, 64 insertions, 17 deletions
diff --git a/subprojects/docs/build.gradle.kts b/subprojects/docs/build.gradle.kts index ab67128a..fcd6a651 100644 --- a/subprojects/docs/build.gradle.kts +++ b/subprojects/docs/build.gradle.kts | |||
@@ -22,24 +22,39 @@ val javadocs: Configuration by configurations.creating { | |||
22 | isCanBeResolved = true | 22 | isCanBeResolved = true |
23 | } | 23 | } |
24 | 24 | ||
25 | val releasedJavadocs: Configuration by configurations.creating { | ||
26 | isCanBeConsumed = false | ||
27 | isCanBeResolved = true | ||
28 | } | ||
29 | |||
30 | val interpreterGroup = property("tools.refinery.interpreter.group").toString() | ||
31 | val releasedVersion = property("tools.refinery.release").toString() | ||
32 | val releasedInterpreterVersion = property("tools.refinery.interpreter.release").toString() | ||
33 | |||
34 | repositories { | ||
35 | mavenCentral() | ||
36 | } | ||
37 | |||
25 | dependencies { | 38 | dependencies { |
26 | gradle.projectsEvaluated { | 39 | gradle.projectsEvaluated { |
27 | for (subproject in rootProject.subprojects) { | 40 | for (subproject in rootProject.subprojects) { |
28 | if (subproject.plugins.hasPlugin(JavaLibraryPlugin::class)) { | 41 | if (subproject.plugins.hasPlugin(JavaLibraryPlugin::class)) { |
29 | javadocs(project(subproject.path, "javadocElements")) | 42 | javadocs(project(subproject.path, "javadocElements")) |
43 | val releasedProjectVersion = if (subproject.group.toString() == interpreterGroup) | ||
44 | releasedInterpreterVersion else releasedVersion | ||
45 | releasedJavadocs("${subproject.group}:${subproject.name}:$releasedProjectVersion:javadoc@jar") | ||
30 | } | 46 | } |
31 | } | 47 | } |
32 | } | 48 | } |
49 | |||
50 | javadocs(project(":refinery-gradle-plugins", "javadocElements")) | ||
51 | releasedJavadocs("tools.refinery:refinery-gradle-plugins:$releasedVersion:javadoc@jar") | ||
33 | } | 52 | } |
34 | 53 | ||
35 | val srcDir = "src" | 54 | val srcDir = "src" |
36 | |||
37 | val docusaurusOutputDir = layout.buildDirectory.dir("docusaurus") | 55 | val docusaurusOutputDir = layout.buildDirectory.dir("docusaurus") |
38 | |||
39 | val javadocsDir = layout.buildDirectory.dir("javadocs") | 56 | val javadocsDir = layout.buildDirectory.dir("javadocs") |
40 | 57 | ||
41 | val javadocsDocsDir = javadocsDir.map { root -> root.dir("develop/javadoc") } | ||
42 | |||
43 | val configFiles: FileCollection = files( | 58 | val configFiles: FileCollection = files( |
44 | rootProject.file("yarn.lock"), | 59 | rootProject.file("yarn.lock"), |
45 | rootProject.file("package.json"), | 60 | rootProject.file("package.json"), |
@@ -54,25 +69,57 @@ val lintConfigFiles: FileCollection = configFiles + files( | |||
54 | rootProject.file(".eslintrc.cjs"), rootProject.file("prettier.config.cjs") | 69 | rootProject.file(".eslintrc.cjs"), rootProject.file("prettier.config.cjs") |
55 | ) | 70 | ) |
56 | 71 | ||
57 | tasks { | 72 | abstract class ExtractJavadocTask : DefaultTask() { |
58 | val extractJavadocs by registering { | 73 | @get:OutputDirectory |
59 | dependsOn(javadocs) | 74 | abstract val targetDir: DirectoryProperty |
60 | outputs.dir(javadocsDir) | 75 | |
61 | doFirst { | 76 | @get:Input |
62 | delete(javadocsDir) | 77 | abstract val resolvedJavadocArtifacts: MapProperty<String, File> |
78 | |||
79 | @get:Inject | ||
80 | abstract val fs: FileSystemOperations | ||
81 | |||
82 | @get:Inject | ||
83 | abstract val archive: ArchiveOperations | ||
84 | |||
85 | @TaskAction | ||
86 | fun action() { | ||
87 | fs.delete { | ||
88 | delete(targetDir) | ||
63 | } | 89 | } |
64 | doLast { | 90 | val javadocsDocsDir = targetDir.get() |
65 | javadocs.resolvedConfiguration.resolvedArtifacts.forEach { artifact -> | 91 | resolvedJavadocArtifacts.get().forEach { artifact -> |
66 | copy { | 92 | fs.copy { |
67 | from(zipTree(artifact.file)) | 93 | from(archive.zipTree(artifact.value)) |
68 | into(javadocsDocsDir.map { root -> root.dir(artifact.moduleVersion.id.name) }) | 94 | into(javadocsDocsDir.dir(artifact.key)) |
69 | } | ||
70 | } | 95 | } |
71 | } | 96 | } |
72 | } | 97 | } |
98 | } | ||
99 | |||
100 | fun resolveJavadocs(configuration: Configuration): Provider<Map<String, File>> { | ||
101 | return provider { | ||
102 | configuration.resolvedConfiguration.resolvedArtifacts.associate { artifact -> | ||
103 | artifact.moduleVersion.id.name to artifact.file | ||
104 | } | ||
105 | } | ||
106 | } | ||
107 | |||
108 | tasks { | ||
109 | val extractJavadocs by registering(ExtractJavadocTask::class) { | ||
110 | dependsOn(javadocs) | ||
111 | targetDir = javadocsDir.map { it.dir("snapshot/develop/javadoc" ) } | ||
112 | resolvedJavadocArtifacts = resolveJavadocs(javadocs) | ||
113 | } | ||
114 | |||
115 | val extractReleasedJavadocs by registering(ExtractJavadocTask::class) { | ||
116 | dependsOn(releasedJavadocs) | ||
117 | targetDir = javadocsDir.map { it.dir("develop/javadoc" ) } | ||
118 | resolvedJavadocArtifacts = resolveJavadocs(releasedJavadocs) | ||
119 | } | ||
73 | 120 | ||
74 | assembleFrontend { | 121 | assembleFrontend { |
75 | dependsOn(extractJavadocs) | 122 | dependsOn(extractJavadocs, extractReleasedJavadocs) |
76 | inputs.dir(srcDir) | 123 | inputs.dir(srcDir) |
77 | inputs.dir("static") | 124 | inputs.dir("static") |
78 | inputs.dir(javadocsDir) | 125 | inputs.dir(javadocsDir) |