kt-go-split #1
2
.idea/gradle.xml
generated
2
.idea/gradle.xml
generated
@ -8,6 +8,8 @@
|
|||||||
<option name="modules">
|
<option name="modules">
|
||||||
<set>
|
<set>
|
||||||
<option value="$PROJECT_DIR$" />
|
<option value="$PROJECT_DIR$" />
|
||||||
|
<option value="$PROJECT_DIR$/definition" />
|
||||||
|
<option value="$PROJECT_DIR$/host" />
|
||||||
</set>
|
</set>
|
||||||
</option>
|
</option>
|
||||||
</GradleProjectSettings>
|
</GradleProjectSettings>
|
||||||
|
|||||||
2
.idea/kotlinc.xml
generated
2
.idea/kotlinc.xml
generated
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="KotlinJpsPluginSettings">
|
<component name="KotlinJpsPluginSettings">
|
||||||
<option name="version" value="2.2.10" />
|
<option name="version" value="2.2.20" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
@ -1,5 +1,6 @@
|
|||||||
plugins {
|
plugins {
|
||||||
kotlin("jvm") version "2.2.10"
|
kotlin("jvm") version "2.2.10"
|
||||||
|
kotlin("plugin.serialization") version "2.2.20"
|
||||||
}
|
}
|
||||||
|
|
||||||
group = "moe.rosa"
|
group = "moe.rosa"
|
||||||
@ -11,6 +12,7 @@ repositories {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
testImplementation(kotlin("test"))
|
testImplementation(kotlin("test"))
|
||||||
|
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0")
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.test {
|
tasks.test {
|
||||||
|
|||||||
@ -1,4 +1,6 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
|
id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
|
||||||
}
|
}
|
||||||
rootProject.name = "planterette"
|
rootProject.name = "planterette"
|
||||||
|
include("definition")
|
||||||
|
include("host")
|
||||||
@ -1,5 +1,2 @@
|
|||||||
package moe.rosa.planterette
|
package moe.rosa.planterette
|
||||||
|
|
||||||
fun main() {
|
|
||||||
|
|
||||||
}
|
|
||||||
62
src/main/kotlin/moe/rosa/planterette/hakurei/Filesystem.kt
Normal file
62
src/main/kotlin/moe/rosa/planterette/hakurei/Filesystem.kt
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
package moe.rosa.planterette.hakurei
|
||||||
|
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class AbsolutePath(private val path: String) {
|
||||||
|
override fun toString(): String {
|
||||||
|
return path
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
interface FSType {
|
||||||
|
val type: String
|
||||||
|
}
|
||||||
|
data class ApplyState(val autoEtcPrefix: String)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class FSBind(
|
||||||
|
val target: AbsolutePath,
|
||||||
|
val source: AbsolutePath,
|
||||||
|
val write: Boolean,
|
||||||
|
val device: Boolean,
|
||||||
|
val ensure: Boolean,
|
||||||
|
val optional: Boolean,
|
||||||
|
val special: Boolean,
|
||||||
|
|
||||||
|
override val type: String = "bind",
|
||||||
|
) : FSType
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class FSEphemeral(
|
||||||
|
val target: AbsolutePath,
|
||||||
|
val write: Boolean,
|
||||||
|
val size: Int,
|
||||||
|
val perm: Int,
|
||||||
|
|
||||||
|
override val type: String = "ephemeral"
|
||||||
|
) : FSType
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class FSLink(
|
||||||
|
val target: AbsolutePath,
|
||||||
|
val linkname: String,
|
||||||
|
val dereference: Boolean,
|
||||||
|
|
||||||
|
override val type: String = "link"
|
||||||
|
) : FSType
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class FSOverlay(
|
||||||
|
val target: AbsolutePath,
|
||||||
|
val lower: List<AbsolutePath>,
|
||||||
|
val upper: AbsolutePath,
|
||||||
|
val work: AbsolutePath,
|
||||||
|
|
||||||
|
override val type: String = "overlay"
|
||||||
|
) : FSType
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class FilesystemConfig(
|
||||||
|
val config: FSType
|
||||||
|
)
|
||||||
93
src/main/kotlin/moe/rosa/planterette/hakurei/Hakurei.kt
Normal file
93
src/main/kotlin/moe/rosa/planterette/hakurei/Hakurei.kt
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
package moe.rosa.planterette.hakurei
|
||||||
|
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class HakureiConfig(
|
||||||
|
val id: String,
|
||||||
|
val path: AbsolutePath,
|
||||||
|
val args: List<String>,
|
||||||
|
val enablements: Enablements,
|
||||||
|
val sessionBus: DBusConfig,
|
||||||
|
val systemBus: DBusConfig,
|
||||||
|
val directWayland: Boolean,
|
||||||
|
val username: String,
|
||||||
|
val shell: AbsolutePath,
|
||||||
|
val home: AbsolutePath,
|
||||||
|
|
||||||
|
val extraPerms: ExtraPermsConfig,
|
||||||
|
val identity: Int,
|
||||||
|
val groups: List<String>,
|
||||||
|
|
||||||
|
val container: ContainerConfig,
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class DBusConfig(
|
||||||
|
val see: List<String>,
|
||||||
|
val talk: List<String>,
|
||||||
|
val own: List<String>,
|
||||||
|
val call: Map<String, String>,
|
||||||
|
val broadcast: Map<String, String>,
|
||||||
|
val log: Boolean,
|
||||||
|
val filter: Boolean,
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class Enablements(
|
||||||
|
val wayland: Boolean,
|
||||||
|
val x11: Boolean,
|
||||||
|
val dbus: Boolean,
|
||||||
|
val pulse: Boolean,
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class ContainerConfig(
|
||||||
|
val hostname: String,
|
||||||
|
val waitDelay: Long,
|
||||||
|
val seccompFlags: Int,
|
||||||
|
val seccompPresets: Int,
|
||||||
|
val seccompCompat: Boolean,
|
||||||
|
val devel: Boolean,
|
||||||
|
val userns: Boolean,
|
||||||
|
val hostNet: Boolean,
|
||||||
|
val hostAbstract: Boolean,
|
||||||
|
val tty: Boolean,
|
||||||
|
val multiarch: Boolean,
|
||||||
|
|
||||||
|
val env: Map<String, String>,
|
||||||
|
|
||||||
|
val mapRealUid: Boolean,
|
||||||
|
val device: Boolean,
|
||||||
|
|
||||||
|
val filesystem: List<FilesystemConfig>,
|
||||||
|
)
|
||||||
|
@Serializable
|
||||||
|
data class ExtraPermsConfig(
|
||||||
|
val ensure: Boolean,
|
||||||
|
val path: AbsolutePath,
|
||||||
|
val read: Boolean,
|
||||||
|
val write: Boolean,
|
||||||
|
val execute: Boolean,
|
||||||
|
) {
|
||||||
|
override fun toString(): String {
|
||||||
|
val buffer = StringBuffer(5 + path.toString().length)
|
||||||
|
buffer.append("---")
|
||||||
|
if(ensure) {
|
||||||
|
buffer.append("+")
|
||||||
|
}
|
||||||
|
buffer.append(":")
|
||||||
|
buffer.append(path.toString())
|
||||||
|
if(read) {
|
||||||
|
buffer.setCharAt(0, 'r')
|
||||||
|
}
|
||||||
|
if(write) {
|
||||||
|
buffer.setCharAt(1, 'w')
|
||||||
|
}
|
||||||
|
if(execute) {
|
||||||
|
buffer.setCharAt(2, 'x')
|
||||||
|
}
|
||||||
|
return buffer.toString()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
0
src/test/resources/ChromiumExample.kts
Normal file
0
src/test/resources/ChromiumExample.kts
Normal file
Loading…
x
Reference in New Issue
Block a user