summaryrefslogtreecommitdiff
path: root/support/arara/source/src/main/kotlin/org/islandoftex/arara/configuration/LocalConfiguration.kt
diff options
context:
space:
mode:
Diffstat (limited to 'support/arara/source/src/main/kotlin/org/islandoftex/arara/configuration/LocalConfiguration.kt')
-rw-r--r--support/arara/source/src/main/kotlin/org/islandoftex/arara/configuration/LocalConfiguration.kt85
1 files changed, 85 insertions, 0 deletions
diff --git a/support/arara/source/src/main/kotlin/org/islandoftex/arara/configuration/LocalConfiguration.kt b/support/arara/source/src/main/kotlin/org/islandoftex/arara/configuration/LocalConfiguration.kt
new file mode 100644
index 0000000000..959f2a9ab8
--- /dev/null
+++ b/support/arara/source/src/main/kotlin/org/islandoftex/arara/configuration/LocalConfiguration.kt
@@ -0,0 +1,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)
+}