diff --git a/ui/component/rest/build.gradle b/ui/component/rest/build.gradle index ec3ed3852..58e91022d 100644 --- a/ui/component/rest/build.gradle +++ b/ui/component/rest/build.gradle @@ -22,6 +22,42 @@ dependencies { generateTypeScript createTSGeneratorConfigForClient("src/restclient.ts", new File("${project(":ui:component:model").projectDir}/src/typescript-generator-info.json"), project(":model")) generateTypeScript.dependsOn resolveTask(":ui:component:model:generateTypeScript") +generateTypeScript.onlyIf { countResourceClasses() > 0 } +npmBuild.onlyIf { countResourceClasses() > 0 } +tasks.register('dummyRestClient') { + onlyIf { countResourceClasses() == 0 } + doLast { + file("${projectDir}/src/restclient.ts").text = 'export class ApiClient {}' + } +} +generateTypeScript.finalizedBy dummyRestClient + +def countResourceClasses() { + // Get the main source set's output classes directory + def classesDir = project(":model").sourceSets.main.output.classesDirs + def count = 0 + + // Iterate through all class files + classesDir.files.each { dir -> + dir.eachFileRecurse { file -> + if (file.name.endsWith('.class')) { + // Convert file path to class name and check if it ends with "Resource" + def className = file.absolutePath + .substring(classesDir.asPath.length() + 1) + .replace(File.separator, '.') + .replace('.class', '') + + if (className.endsWith('Resource')) { + count++ + } + + } + } + } + + println "Total classes ending with 'Resource': $count" + return count +} clean { doLast {