diff --git a/.github/workflows/build_releases.yml b/.github/workflows/build_releases.yml index a7d536a4..bc090a4c 100644 --- a/.github/workflows/build_releases.yml +++ b/.github/workflows/build_releases.yml @@ -6,7 +6,7 @@ # - FreeBSD (x86_64) # - macOS (aarch64) -name: "Build Releases" +name: "build releases" on: workflow_dispatch: diff --git a/.github/workflows/clear-pr-cache.yml b/.github/workflows/clear-pr-cache.yml new file mode 100644 index 00000000..356884d4 --- /dev/null +++ b/.github/workflows/clear-pr-cache.yml @@ -0,0 +1,26 @@ +# Simple job to clear the cache used by a PR when it is closed/merged. + +name: "clear PR cache" + +on: + workflow_dispatch: + inputs: + id: + description: "Which id to clear:" + required: false + pull_request: + types: + - closed + +jobs: + clear-cache: + runs-on: ubuntu-latest + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + steps: + - run: | + if [[ -z "${{ github.event.inputs.id }}" ]]; then + python ./scripts/clear_cache.py ${{ github.event.pull_request.number }} + else + python ./scripts/clear_cache.py ${{ github.event.inputs.id }} + fi diff --git a/.github/workflows/test-docs.yml b/.github/workflows/test-docs.yml index e46bd909..8364e493 100644 --- a/.github/workflows/test-docs.yml +++ b/.github/workflows/test-docs.yml @@ -1,6 +1,6 @@ # Small CI workflow to test if mkdocs documentation can be successfully built. -name: test-docs +name: test docs on: workflow_dispatch: pull_request: diff --git a/scripts/clear_cache.py b/scripts/clear_cache.py new file mode 100644 index 00000000..167a12de --- /dev/null +++ b/scripts/clear_cache.py @@ -0,0 +1,58 @@ +#!/bin/python3 + +# A simple script to clean caches matching a PR ID. +# +# Expects a GitHub token in the environment variables as GITHUB_TOKEN. + +import os +import json +import sys +from urllib.error import HTTPError, URLError + +from urllib.request import Request, urlopen + +URL = "https://api.github.com/repos/ClementTsang/bottom/actions/caches" + + +def cache_list_request(key): + request = Request(URL, method="GET") + request.add_header("Accept", "application/vnd.github+json") + request.add_header("Authorization", "Bearer {}".format(key)) + return request + + +def delete_cache_request(key, id): + request = Request("{}/{}".format(URL, id), method="DELETE") + request.add_header("Accept", "application/vnd.github+json") + request.add_header("Authorization", "Bearer {}".format(key)) + return request + + +def main(): + + args = sys.argv + env = os.environ + + key = env["GITHUB_TOKEN"] + pr_id = args[1] + ref = "refs/pull/{}/merge".format(pr_id) + + with urlopen(cache_list_request(key)) as response: + response = json.load(response) + caches = response["actions_caches"] + for cache in caches: + if cache["ref"] == ref: + id = cache["id"] + try: + print("Deleting ID {}...".format(id)) + urlopen(delete_cache_request(key, id)) + except HTTPError as e: + print("HTTPError with delete, error code {}.".format(e.code)) + except URLError as _: + print("URLError with delete.") + else: + print("Successfully deleted cache ID {}!".format(id)) + + +if __name__ == "__main__": + main() diff --git a/src/lib.rs b/src/lib.rs index 2ed7306c..34096843 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -347,7 +347,7 @@ pub fn update_data(app: &mut App) { { let data = &app.converted_data.cpu_data; for cpu in app.cpu_state.widget_states.values_mut() { - cpu.update_table(data) + cpu.update_table(data); } } {