6.6.2 - Alpha2 - engines.execScript/execScriptFile 等方法执行脚本时默认工作路径异常
This commit is contained in:
@@ -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 等原型方法的问题",
|
||||||
"代码编辑器跳转到行尾时可能跳转到下一行起始位置的问题"
|
"代码编辑器跳转到行尾时可能跳转到下一行起始位置的问题"
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user