String versionLine() { return "    const val project = \"$project.version\"" }
File versionFile() { return project.file("src/commonMain/kotlin/dev/inmo/postssystem/features/common/common/Version.kt") }

void createVersionFile() {
    String versionLine = versionLine()
    File versionFile = versionFile()
    versionFile.parentFile.mkdirs()
    if (versionFile.exists()) versionFile.delete()
    versionFile.createNewFile()
    versionFile.text = """package dev.inmo.postssystem.features.common.common

/*
 *  THIS FILE HAS BEEN CREATED AUTOMATICALLY.
 *  DO NOT EDIT THIS FILE, ITS CONTENT WILL BE OVERWRITTEN
 *  WITH ANY NEW BUILD
 */
object Version {
$versionLine
}
"""
}

Boolean isVersionFileUpToDate() {
    String versionLine = versionLine()
    File versionFile = versionFile()

    boolean upToDate = false
    if (versionFile.exists()) {
        versionFile.withReader { reader ->
            String line
            while ((line = reader.readLine()) != null && !upToDate) {
                upToDate = line == versionLine
            }
        }
    }

    return upToDate
}

task createVersionFile {
    doLast {
        createVersionFile()
    }
    outputs.upToDateWhen {
        isVersionFileUpToDate()
    }
}


if (!isVersionFileUpToDate()) {
    createVersionFile()
}