diff --git a/ext/base/src/main/java/io/xpipe/ext/base/script/ScriptStore.java b/ext/base/src/main/java/io/xpipe/ext/base/script/ScriptStore.java index 5891cad06..b8a257666 100644 --- a/ext/base/src/main/java/io/xpipe/ext/base/script/ScriptStore.java +++ b/ext/base/src/main/java/io/xpipe/ext/base/script/ScriptStore.java @@ -19,9 +19,7 @@ import lombok.experimental.FieldDefaults; import lombok.experimental.SuperBuilder; import lombok.extern.jackson.Jacksonized; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Locale; +import java.util.*; @SuperBuilder @Getter @@ -132,7 +130,27 @@ public abstract class ScriptStore extends JacksonizedValue implements DataStore, var seen = new LinkedHashSet(); scripts.forEach(scriptStoreDataStoreEntryRef -> scriptStoreDataStoreEntryRef.getStore().queryFlattenedScripts(seen)); - return seen.stream().toList(); + + var dependencies = new HashMap>(); + seen.forEach(simpleScriptStore -> { + var f = new HashSet<>(simpleScriptStore.queryFlattenedScripts()); + f.remove(simpleScriptStore); + dependencies.put(simpleScriptStore, f); + }); + + var sorted = new ArrayList<>(seen); + sorted.sort((o1, o2) -> { + if (dependencies.get(o1).contains(o2)) { + return 1; + } + + if (dependencies.get(o2).contains(o1)) { + return -1; + } + + return 0; + }); + return sorted; } protected final DataStoreEntryRef group; @@ -170,6 +188,12 @@ public abstract class ScriptStore extends JacksonizedValue implements DataStore, // } } + SequencedCollection queryFlattenedScripts() { + var seen = new LinkedHashSet(); + queryFlattenedScripts(seen); + return seen; + } + protected abstract void queryFlattenedScripts(LinkedHashSet all); public abstract List> getEffectiveScripts(); diff --git a/ext/base/src/main/resources/io/xpipe/ext/base/resources/scripts/clink.bat b/ext/base/src/main/resources/io/xpipe/ext/base/resources/scripts/clink.bat index 41b1f824f..33add3067 100644 --- a/ext/base/src/main/resources/io/xpipe/ext/base/resources/scripts/clink.bat +++ b/ext/base/src/main/resources/io/xpipe/ext/base/resources/scripts/clink.bat @@ -15,5 +15,5 @@ $defaultCreds = [System.Net.CredentialCache]::DefaultCredentials;^ if ($defaultCreds) {^ $downloader.Credentials = $defaultCreds^ }^ -$downloader.DownloadFile("https://github.com/chrisant996/clink/releases/download/v1.5.7/clink.1.5.7.36d0c6.zip", "$env:TEMP\clink.zip");^ +$downloader.DownloadFile("https://github.com/chrisant996/clink/releases/download/v1.5.13/clink.1.5.13.290610.zip", "$env:TEMP\clink.zip");^ Expand-Archive -Force -LiteralPath "$env:TEMP\clink.zip" -DestinationPath "$env:USERPROFILE\.xpipe\scriptdata\clink"; | powershell -NoLogo >NUL