aboutsummaryrefslogtreecommitdiff
path: root/sharedVariables/src/MultiVersionStage.kt
blob: 78914a91dba8db2bfa77bbd3d6888c04dd6a3adf (plain)
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
package at.skyhanni.sharedvariables

import java.io.File
import java.util.Properties

enum class MultiVersionStage(val label: String) {
    OFF("off"),
    PREPROCESS_ONLY("preprocess-only"),
    FULL("compile")
    ;

    fun shouldCompile(projectTarget: ProjectTarget): Boolean {
        if (projectTarget == ProjectTarget.MAIN) return true
        return when (this) {
            OFF -> false
            PREPROCESS_ONLY -> false
            FULL -> projectTarget == ProjectTarget.MODERN
        }
    }

    fun shouldCreateProject(projectTarget: ProjectTarget): Boolean {
        if (projectTarget == ProjectTarget.MAIN) return true
        return when (this) {
            OFF -> false
            PREPROCESS_ONLY -> true
            FULL -> true
        }
    }


    companion object {
        lateinit var activeState: MultiVersionStage
        fun initFrom(file: File) {
            val prop = Properties()
            if (file.exists()) {
                file.inputStream().use(prop::load)
            }
            val multiVersion = prop["skyhanni.multi-version"]
            activeState = MultiVersionStage.values().find { it.label == multiVersion } ?: OFF
            println("SkyHanni multi version stage loaded: $activeState")
        }
    }
}