override fun safeAction()

in gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/resources/GenerateResourceAccessorsTask.kt [47:91]


    override fun safeAction() {
        val kotlinDir = codeDir.get().asFile
        val rootResDir = resDir.get()
        val sourceSet = sourceSetName.get()

        logger.info("Clean directory $kotlinDir")
        kotlinDir.deleteRecursively()
        kotlinDir.mkdirs()

        logger.info("Generate accessors for $rootResDir")

        //get first level dirs
        val dirs = rootResDir.listNotHiddenFiles()

        dirs.forEach { f ->
            if (!f.isDirectory) {
                error("${f.name} is not directory! Raw files should be placed in '${rootResDir.name}/files' directory.")
            }
        }

        //type -> id -> resource item
        val resources: Map<ResourceType, Map<String, List<ResourceItem>>> = dirs
            .flatMap { dir ->
                dir.listNotHiddenFiles()
                    .mapNotNull { it.fileToResourceItems(rootResDir.toPath()) }
                    .flatten()
            }
            .groupBy { it.type }
            .mapValues { (_, items) -> items.groupBy { it.name } }

        val pkgName = packageName.get()
        val moduleDirectory = packagingDir.getOrNull()?.let { it.invariantSeparatorsPath + "/" } ?: ""
        val resClassName = resClassName.get()
        val isPublic = makeAccessorsPublic.get()
        val generateResourceContentHashAnnotation = !disableResourceContentHashGeneration.get()
        getAccessorsSpecs(
            resources,
            pkgName,
            sourceSet,
            moduleDirectory,
            resClassName,
            isPublic,
            generateResourceContentHashAnnotation
        ).forEach { it.writeTo(kotlinDir) }
    }