blob: 14100ec98b128980f04e7bc1460f8ded6421bb71 (
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
// SPDX-License-Identifier: BSD-3-Clause
package org.islandoftex.arara.configuration
import com.uchuhimo.konf.ConfigSpec
import java.io.File
import java.nio.file.Paths
import kotlin.time.ExperimentalTime
import kotlin.time.milliseconds
import org.islandoftex.arara.localization.Language
/**
* Configuration hierarchy for arara
*
* @author Island of TeX
* @version 5.0
* @since 5.0
*/
@Suppress("MagicNumber")
object AraraSpec : ConfigSpec() {
object Application : ConfigSpec() {
val defaultLanguageCode by optional("en")
val version by optional(AraraSpec::class.java.`package`.implementationVersion
?: "DEVELOPMENT BUILD")
val namePattern by optional("arara:\\s")
val width by optional(65)
}
object Execution : ConfigSpec() {
val maxLoops by optional(10)
val timeout by optional(false)
@ExperimentalTime
val timeoutValue by optional(0.milliseconds)
val haltOnErrors by optional(true)
val databaseName by optional("arara")
val logName by optional("arara")
val verbose by optional(false)
val language by optional(Language(Application.defaultLanguageCode.default))
val logging by optional(false)
val dryrun by optional(false)
val status by optional(0)
val fileTypes by optional(ConfigurationUtils.defaultFileTypes)
val rulePaths by optional(setOf(
ConfigurationUtils.applicationPath.resolve("rules")
.toString()
))
val preambles by optional(mapOf<String, String>())
val preamblesActive by optional(false)
val preamblesContent by optional("")
val workingDirectory by optional(Paths.get(""))
val configurationName by optional("[none]")
val onlyHeader by optional(false)
// TODO: these are runtime values, they should be properly
// initialized and tested (maybe move them into their own
// Spec or session)
val reference by optional(File("/tmp/"))
val file by optional(File("/tmp/"))
object InfoSpec : ConfigSpec() {
val ruleId by optional<String?>(null)
val rulePath by optional<String?>(null)
}
object DirectiveSpec : ConfigSpec() {
val lines by optional(listOf<Int>())
}
val filePattern by optional("")
}
object Directive : ConfigSpec() {
val linebreakPattern by optional("^\\s*-->\\s(.*)$")
private const val directivestart = """^\s*(\w+)\s*(:\s*(\{.*\})\s*)?"""
private const val pattern = """(\s+(if|while|until|unless)\s+(\S.*))?$"""
val directivePattern by optional(directivestart + pattern)
}
object UserInteraction : ConfigSpec() {
val lookAndFeel by optional("none")
val displayTime by optional(false)
val displayLine by optional(true)
val displayResult by optional(false)
val displayRolling by optional(false)
val displayException by optional(false)
}
}
|