Skip to content

Commit 9d6ee0c

Browse files
committed
Update script loading method.
1 parent 614318c commit 9d6ee0c

File tree

9 files changed

+82
-5
lines changed

9 files changed

+82
-5
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package me.scoretwo.fastscript.api.exception
2+
3+
class ProcessException(message: String): Exception(message) {
4+
}

common/src/main/kotlin/me/scoretwo/fastscript/api/script/Script.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ open class Script(
99
val options: ScriptOptions,
1010
val scriptFiles: MutableList<File> = mutableListOf()
1111
) {
12+
13+
val name = description.name
14+
1215
// sign, processor
1316
val scriptProcessor = mutableMapOf<String, ScriptProcessor>()
1417
// sign, mergedText

common/src/main/kotlin/me/scoretwo/fastscript/api/script/ScriptManager.kt

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package me.scoretwo.fastscript.api.script
22

33
import me.scoretwo.fastscript.FastScript
4+
import me.scoretwo.fastscript.api.utils.process.ProcessResult
5+
import me.scoretwo.fastscript.api.utils.process.ProcessResultType
46
import me.scoretwo.fastscript.plugin
57
import me.scoretwo.fastscript.settings
68
import me.scoretwo.utils.bukkit.configuration.yaml.ConfigurationSection
@@ -13,6 +15,8 @@ class ScriptManager {
1315

1416
val scripts = mutableMapOf<String, Script>()
1517

18+
private val optionFiles =
19+
1620
fun getScript(name: String) = scripts[name]
1721

1822
fun loadScript(file: File) {
@@ -60,4 +64,30 @@ class ScriptManager {
6064
files
6165
}
6266

67+
68+
fun loadFromFolderScript(folder: File): ProcessResult {
69+
val optionFile: File = arrayOf(
70+
"option.yml",
71+
"${folder.name}.yml",
72+
"setting.yml"
73+
).let {
74+
for (fileName in it) {
75+
val file = File(fileName)
76+
if (file.exists()) return@let file
77+
}
78+
79+
return ProcessResult(ProcessResultType.FAILED, "Option file not found in ${folder.name}.")
80+
}
81+
val option = ScriptOptions(optionFile)
82+
val script = Script(ScriptDescription.fromSection(option.config), option)
83+
84+
85+
val scriptFiles = mutableListOf<File>().also {
86+
87+
}
88+
89+
90+
}
91+
92+
6393
}

common/src/main/kotlin/me/scoretwo/fastscript/api/script/ScriptOptions.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ package me.scoretwo.fastscript.api.script
33
import me.scoretwo.utils.bukkit.configuration.yaml.ConfigurationSection
44
import me.scoretwo.utils.bukkit.configuration.yaml.file.YamlConfiguration
55
import me.scoretwo.utils.bukkit.configuration.yaml.patchs.getLowerCaseNode
6+
import me.scoretwo.utils.bukkit.configuration.yaml.patchs.loadConfiguration
67
import java.io.File
78

8-
open class ScriptOptions(val file: File, val config: YamlConfiguration) {
9+
open class ScriptOptions(val file: File, val config: YamlConfiguration = file.loadConfiguration()) {
910
val main: String = config.getString(config.getLowerCaseNode("main"))
1011
open val meta = mutableMapOf<String, String>().also { map ->
1112
config.getStringList(config.getLowerCaseNode("meta")).forEach {
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package me.scoretwo.fastscript.api.utils.process
2+
3+
import me.scoretwo.fastscript.api.exception.ProcessException
4+
5+
class ProcessResult(type: ProcessResultType, message: String? = null) {
6+
7+
var message: String = message ?: type.message
8+
9+
fun throwException() {
10+
throw ProcessException(message)
11+
}
12+
13+
fun message(message: String) = this.also {
14+
this.message = message
15+
}
16+
17+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package me.scoretwo.fastscript.api.utils.process
2+
3+
enum class ProcessResultType(val message: String) {
4+
SUCCESS("The process runs successfully."),
5+
FAILED("The process failed!"),
6+
OTHER("Other problems in the process."),
7+
DISABILITY("The process ran successfully, but was incomplete!")
8+
}

common/src/main/kotlin/me/scoretwo/fastscript/expansion/typeengine/TypeEngineExpansion.kt

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,24 @@ import me.scoretwo.utils.sender.GlobalSender
66

77
abstract class TypeEngineExpansion: FastScriptExpansion() {
88

9+
private val typeEngineScripts = mutableMapOf<String, TypeEngineScript>()
10+
911
override fun convertScriptProcessor(script: Script) =
1012
if (script.options.otherSection.containsKey(sign)) {
11-
script.scriptProcessor[sign] = TypeEngineScriptProcessor(script, this)
13+
if (typeEngineScripts.containsKey(script.name))
14+
script.scriptProcessor[sign] = TypeEngineScriptProcessor(
15+
typeEngineScripts[script.name]!!,
16+
this
17+
)
18+
else
19+
script.scriptProcessor[sign] = TypeEngineScriptProcessor(
20+
TypeEngineScript(
21+
script.description,
22+
TypeEngineScriptOptions(this, script.options.file, script.options.config)
23+
),
24+
this
25+
)
26+
1227
true
1328
} else {
1429
false

common/src/main/kotlin/me/scoretwo/fastscript/expansion/typeengine/TypeEngineScriptOptions.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import java.io.File
77

88
class TypeEngineScriptOptions(expansion: TypeEngineExpansion, file: File, section: YamlConfiguration): ScriptOptions(file, section) {
99

10-
val javaScriptSection = section.getConfigurationSection(section.getLowerCaseNode(expansion.sign))
10+
val typeEngineSection = section.getConfigurationSection(section.getLowerCaseNode(expansion.sign))
1111

1212
val engine: String
1313
val includes = mutableMapOf<String, ScriptInclude>()

common/src/main/kotlin/me/scoretwo/fastscript/expansion/typeengine/TypeEngineScriptProcessor.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,10 @@ import javax.script.ScriptException
1414

1515
class TypeEngineScriptProcessor(script: TypeEngineScript, expansion: TypeEngineExpansion): ScriptProcessor(script, expansion) {
1616

17-
val engine: ScriptEngine
17+
val engine: ScriptEngine = ScriptEngineManager(plugin.pluginClassLoader).getEngineByName(script.engineOption.engine)
1818
override val needEval = true
1919

2020
init {
21-
engine = ScriptEngineManager(plugin.pluginClassLoader).getEngineByName(script.engineOption.engine)
2221
script.engineOption.includes.forEach {
2322
engine.put(it.key, it.value[script])
2423
}

0 commit comments

Comments
 (0)