6.6.2 - Alpha2 - engines.execScript/execScriptFile 等方法执行脚本时默认工作路径异常

This commit is contained in:
SuperMonster003
2025-02-28 10:33:50 +08:00
parent c1f2cda1ff
commit e794712e63
2 changed files with 18 additions and 19 deletions

View File

@@ -8,6 +8,7 @@
"ScriptRuntime 使用 require 引用内置模块时可能出现的同步状态异常 (试修) _[`issue #298`](http://issues.autojs6.com/298)_", "ScriptRuntime 使用 require 引用内置模块时可能出现的同步状态异常 (试修) _[`issue #298`](http://issues.autojs6.com/298)_",
"notice 模块缺失 getBuilder 等扩展方法的问题 _[`issue #301`](http://issues.autojs6.com/301)_", "notice 模块缺失 getBuilder 等扩展方法的问题 _[`issue #301`](http://issues.autojs6.com/301)_",
"shizuku/shell 等方法无法接受字符串参数的问题 _[`issue #310`](http://issues.autojs6.com/310)_", "shizuku/shell 等方法无法接受字符串参数的问题 _[`issue #310`](http://issues.autojs6.com/310)_",
"engines.execScript/execScriptFile 等方法执行脚本时默认工作路径异常",
"floaty.window/floaty.rawWindow 无法在子线程执行的问题", "floaty.window/floaty.rawWindow 无法在子线程执行的问题",
"ui.inflate 返回值丢失 attr/on/click 等原型方法的问题", "ui.inflate 返回值丢失 attr/on/click 等原型方法的问题",
"代码编辑器跳转到行尾时可能跳转到下一行起始位置的问题" "代码编辑器跳转到行尾时可能跳转到下一行起始位置的问题"

View File

@@ -9,7 +9,6 @@ import org.autojs.autojs.extension.AnyExtensions.isJsNullish
import org.autojs.autojs.extension.AnyExtensions.jsBrief import org.autojs.autojs.extension.AnyExtensions.jsBrief
import org.autojs.autojs.extension.AnyExtensions.toRuntimePath import org.autojs.autojs.extension.AnyExtensions.toRuntimePath
import org.autojs.autojs.extension.FlexibleArray import org.autojs.autojs.extension.FlexibleArray
import org.autojs.autojs.extension.ScriptableObjectExtensions.acquire
import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire
import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.ScriptRuntime
import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.api.augment.Augmentable
@@ -23,7 +22,7 @@ import org.mozilla.javascript.NativeArray
import org.mozilla.javascript.NativeObject import org.mozilla.javascript.NativeObject
import org.mozilla.javascript.ScriptableObject import org.mozilla.javascript.ScriptableObject
@Suppress("unused", "UNUSED_PARAMETER") @Suppress("unused")
class Engines(private val scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) { class Engines(private val scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) {
override val selfAssignmentFunctions = listOf( override val selfAssignmentFunctions = listOf(
@@ -108,30 +107,29 @@ class Engines(private val scriptRuntime: ScriptRuntime) : Augmentable(scriptRunt
scriptRuntime.engines.execAutoFile(coerceString(path), fillConfig(scriptRuntime, config)) scriptRuntime.engines.execAutoFile(coerceString(path), fillConfig(scriptRuntime, config))
} }
private fun fillConfig(scriptRuntime: ScriptRuntime, config: Any?): ExecutionConfig { private fun fillConfig(scriptRuntime: ScriptRuntime, o: Any?): ExecutionConfig {
val c = ExecutionConfig() val result = ExecutionConfig()
when { when (val config = if (o.isJsNullish()) newNativeObject() else o) {
config.isJsNullish() -> Unit is ExecutionConfig -> {
config is ExecutionConfig -> { result.workingDirectory = config.workingDirectory.takeUnless { it.isEmpty() } ?: scriptRuntime.files.cwd()
c.workingDirectory = config.workingDirectory result.delay = config.delay.takeUnless { it < 0 } ?: 0L
c.delay = config.delay result.interval = config.interval.takeUnless { it < 0 } ?: 0L
c.interval = config.interval result.loopTimes = config.loopTimes.takeUnless { it < 0 } ?: 1
c.loopTimes = config.loopTimes config.arguments.entries.forEach { result.setArgument(it.key, it.value) }
config.arguments.entries.forEach { c.setArgument(it.key, it.value) }
} }
config is ScriptableObject -> { is ScriptableObject -> {
c.workingDirectory = config.acquire("path") { it.toRuntimePath(scriptRuntime) } result.workingDirectory = config.inquire(listOf("path", "workingDirectory"), { o, _ -> o.toRuntimePath(scriptRuntime) }, scriptRuntime.files.cwd())
c.delay = config.inquire("delay", ::coerceLongNumber, 0L) result.delay = config.inquire("delay", ::coerceLongNumber, 0L)
c.interval = config.inquire("interval", ::coerceLongNumber, 0L) result.interval = config.inquire("interval", ::coerceLongNumber, 0L)
c.loopTimes = config.inquire("loopTimes", ::coerceIntNumber, 1) result.loopTimes = config.inquire("loopTimes", ::coerceIntNumber, 1)
config.inquire("arguments") { config.inquire("arguments") {
require(it is NativeObject) { "Property \"arguments\" of config for Engines#fillConfig must be a JavaScript Object" } require(it is NativeObject) { "Property \"arguments\" of config for Engines#fillConfig must be a JavaScript Object" }
it.entries.forEach { (key, value) -> c.setArgument(coerceString(key), value) } it.entries.forEach { (key, value) -> result.setArgument(coerceString(key), value) }
} }
} }
else -> throw WrappedIllegalArgumentException("Argument config ${config.jsBrief()} for Engines#fillConfig is invalid") else -> throw WrappedIllegalArgumentException("Argument config ${config.jsBrief()} for Engines#fillConfig is invalid")
} }
return c return result
} }
} }