diff options
| -rw-r--r-- | .github/workflows/build.yml | 26 | ||||
| -rw-r--r-- | backend/plugin.py | 35 |
2 files changed, 40 insertions, 21 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fb80e630..28a3377f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -104,16 +104,30 @@ jobs: with: name: PluginLoader path: dist + + - name: Get tag 🏷️ + id: old_tag + uses: rafarlopes/get-latest-pre-release-tag-action@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + repository: 'decky-loader' + + - name: Prepare tag ⚙️ + id: ready_tag + run: | + echo ::set-output name=${${{ jobs.old_tag.outputs.tag }}#"-pre"} - name: Bump version ⏫ id: tag_version - uses: mathieudutour/github-tag-action@v6.0 + uses: anothrNick/github-tag-action@1.39.0 if: ${{ github.event_name == 'workflow_dispatch' }} with: - github_token: ${{ secrets.GITHUB_TOKEN }} - dry_run: true + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + WITH_V: true + INITIAL_VERSION: ${{ jobs.ready_tag.outputs.name }} - - name: Push tag ⏫ + - name: Push tag 📤 uses: rickstaa/action-create-tag@v1.3.2 if: ${{ steps.tag_version.outputs.new_tag && github.event_name == 'workflow_dispatch' }} with: @@ -130,14 +144,14 @@ jobs: prerelease: true generate_release_notes: true - - name: Bump prerelease + - name: Bump prerelease ⏫ id: bump if: ${{ github.event_name == 'schedule' }} run: | git_hash=$(git rev-parse --short "$GITHUB_SHA") echo ::set-output new_tag="nightly-$git_hash" - - name: Push tag ⏫ + - name: Push tag 📤 uses: rickstaa/action-create-tag@v1.3.2 if: ${{ github.event_name == 'schedule' }} with: diff --git a/backend/plugin.py b/backend/plugin.py index 11c94a05..0a8a2901 100644 --- a/backend/plugin.py +++ b/backend/plugin.py @@ -78,12 +78,17 @@ class PluginWrapper: async def _open_socket_if_not_exists(self): if not self.reader: - while True: + retries = 0 + while retries < 10: try: self.reader, self.writer = await open_unix_connection(self.socket_addr) - break + return True except: - await sleep(0) + await sleep(2) + retries += 1 + return False + else: + return True def start(self): if self.passive: @@ -95,21 +100,21 @@ class PluginWrapper: if self.passive: return async def _(self): - await self._open_socket_if_not_exists() - self.writer.write((dumps({"stop": True})+"\n").encode("utf-8")) - await self.writer.drain() - self.writer.close() + if await self._open_socket_if_not_exists(): + self.writer.write((dumps({"stop": True})+"\n").encode("utf-8")) + await self.writer.drain() + self.writer.close() get_event_loop().create_task(_(self)) async def execute_method(self, method_name, kwargs): if self.passive: raise RuntimeError("This plugin is passive (aka does not implement main.py)") async with self.method_call_lock: - await self._open_socket_if_not_exists() - self.writer.write( - (dumps({"method": method_name, "args": kwargs})+"\n").encode("utf-8")) - await self.writer.drain() - res = loads((await self.reader.readline()).decode("utf-8")) - if not res["success"]: - raise Exception(res["res"]) - return res["res"] + if await self._open_socket_if_not_exists(): + self.writer.write( + (dumps({"method": method_name, "args": kwargs})+"\n").encode("utf-8")) + await self.writer.drain() + res = loads((await self.reader.readline()).decode("utf-8")) + if not res["success"]: + raise Exception(res["res"]) + return res["res"] |
