blob: 959f2a9ab8432534421e4ab1c5dd2cf9596e6da7 (
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
|
// SPDX-License-Identifier: BSD-3-Clause
package org.islandoftex.arara.configuration
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import org.islandoftex.arara.Arara
import org.islandoftex.arara.model.FileType
import org.islandoftex.arara.utils.CommonUtils
import org.mvel2.templates.TemplateRuntime
/**
* A local configuration which resembles configuration files in the working
* directory.
*
* @author Island of TeX
* @version 5.0
* @since 4.0
*/
@Serializable
class LocalConfiguration {
// rule paths
var paths: List<String> = listOf()
get() {
val user = mapOf(
"home" to (CommonUtils.getSystemPropertyOrNull("user.home")
?: ""),
"name" to (CommonUtils.getSystemPropertyOrNull("user.name")
?: ""))
val application = mapOf(
"workingDirectory" to Arara.config[AraraSpec.Execution.workingDirectory].toAbsolutePath().toString()
)
return field.map { input ->
var path = CommonUtils.removeKeywordNotNull(input)
try {
path = TemplateRuntime.eval(path, mapOf(
"user" to user, "application" to application
)) as String
} catch (_: RuntimeException) {
// do nothing, gracefully fallback to
// the default, unparsed path
}
path
}
}
// file types
var filetypes: List<FileType> = listOf()
// the application language
// default to English
var language: String = Arara.config[AraraSpec.Application.defaultLanguageCode]
get() = CommonUtils.removeKeywordNotNull(field)
// maximum number of loops
var loops: Int = Arara.config[AraraSpec.Execution.maxLoops]
// verbose flag
@SerialName("verbose")
var isVerbose: Boolean = Arara.config[AraraSpec.Execution.verbose]
// logging flag
@SerialName("logging")
var isLogging: Boolean = Arara.config[AraraSpec.Execution.logging]
// header flag
@SerialName("header")
var isHeader: Boolean = Arara.config[AraraSpec.Execution.onlyHeader]
// database name
var dbname: String = Arara.config[AraraSpec.Execution.databaseName]
get() = CommonUtils.removeKeywordNotNull(field)
// log name
var logname: String = Arara.config[AraraSpec.Execution.logName]
get() = CommonUtils.removeKeywordNotNull(field)
// map of preambles
var preambles: Map<String, String> = Arara.config[AraraSpec.Execution.preambles]
// look and feel
// default to none
var laf: String = Arara.config[AraraSpec.UserInteraction.lookAndFeel]
get() = CommonUtils.removeKeywordNotNull(field)
}
|