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)_",
"notice 模块缺失 getBuilder 等扩展方法的问题 _[`issue #301`](http://issues.autojs6.com/301)_",
"shizuku/shell 等方法无法接受字符串参数的问题 _[`issue #310`](http://issues.autojs6.com/310)_",
"engines.execScript/execScriptFile 等方法执行脚本时默认工作路径异常",
"floaty.window/floaty.rawWindow 无法在子线程执行的问题",
"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.toRuntimePath
import org.autojs.autojs.extension.FlexibleArray
import org.autojs.autojs.extension.ScriptableObjectExtensions.acquire
import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire
import org.autojs.autojs.runtime.ScriptRuntime
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.ScriptableObject
@Suppress("unused", "UNUSED_PARAMETER")
@Suppress("unused")
class Engines(private val scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) {
override val selfAssignmentFunctions = listOf(
@@ -108,30 +107,29 @@ class Engines(private val scriptRuntime: ScriptRuntime) : Augmentable(scriptRunt
scriptRuntime.engines.execAutoFile(coerceString(path), fillConfig(scriptRuntime, config))
}
private fun fillConfig(scriptRuntime: ScriptRuntime, config: Any?): ExecutionConfig {
val c = ExecutionConfig()
when {
config.isJsNullish() -> Unit
config is ExecutionConfig -> {
c.workingDirectory = config.workingDirectory
c.delay = config.delay
c.interval = config.interval
c.loopTimes = config.loopTimes
config.arguments.entries.forEach { c.setArgument(it.key, it.value) }
private fun fillConfig(scriptRuntime: ScriptRuntime, o: Any?): ExecutionConfig {
val result = ExecutionConfig()
when (val config = if (o.isJsNullish()) newNativeObject() else o) {
is ExecutionConfig -> {
result.workingDirectory = config.workingDirectory.takeUnless { it.isEmpty() } ?: scriptRuntime.files.cwd()
result.delay = config.delay.takeUnless { it < 0 } ?: 0L
result.interval = config.interval.takeUnless { it < 0 } ?: 0L
result.loopTimes = config.loopTimes.takeUnless { it < 0 } ?: 1
config.arguments.entries.forEach { result.setArgument(it.key, it.value) }
}
config is ScriptableObject -> {
c.workingDirectory = config.acquire("path") { it.toRuntimePath(scriptRuntime) }
c.delay = config.inquire("delay", ::coerceLongNumber, 0L)
c.interval = config.inquire("interval", ::coerceLongNumber, 0L)
c.loopTimes = config.inquire("loopTimes", ::coerceIntNumber, 1)
is ScriptableObject -> {
result.workingDirectory = config.inquire(listOf("path", "workingDirectory"), { o, _ -> o.toRuntimePath(scriptRuntime) }, scriptRuntime.files.cwd())
result.delay = config.inquire("delay", ::coerceLongNumber, 0L)
result.interval = config.inquire("interval", ::coerceLongNumber, 0L)
result.loopTimes = config.inquire("loopTimes", ::coerceIntNumber, 1)
config.inquire("arguments") {
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")
}
return c
return result
}
}