From 5194209efa422de3b9dae329ac06d6f5eedaa12d Mon Sep 17 00:00:00 2001 From: Oddant1 Date: Fri, 17 Jan 2025 14:58:07 -0700 Subject: [PATCH 01/18] start adding linter --- .github/scripts/lint.py | 27 ++++++++++++++++++++ .github/workflows/lint-pr.yml | 47 +++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 .github/scripts/lint.py create mode 100644 .github/workflows/lint-pr.yml diff --git a/.github/scripts/lint.py b/.github/scripts/lint.py new file mode 100644 index 0000000..44871e6 --- /dev/null +++ b/.github/scripts/lint.py @@ -0,0 +1,27 @@ +import sys +import yaml +import requests + + +KEY_SET = set(['owner', 'name', 'branch', 'docs']) + + +def lint(yml): + # Assert corrrect keys + assert set(yml.keys()) == KEY_SET + + # Get the docs URL assert 200 + response = requests.get(yml['docs']) + assert response.status_code == 200 + + # Put together the owner/name:branch + # ...Do something with it + + +if __name__ == "__main__": + files = sys.argv[1:] + + for file in files: + with open(file, 'r') as fh: + yml = yaml.safe_load(fh) + lint(yml) diff --git a/.github/workflows/lint-pr.yml b/.github/workflows/lint-pr.yml new file mode 100644 index 0000000..16bb308 --- /dev/null +++ b/.github/workflows/lint-pr.yml @@ -0,0 +1,47 @@ +name: lint-pr + +# Run on PR +on: + # Possible to only run on PR that modifies plugins? + pull_request: + branches: + - 'main' + paths: + - '/plugins/**' + workflow_dispatch: + +# Checkout +jobs: + lint: + permissions: + contents: read + + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + sparse-checkout: plugins + + # Get new/changed files? + # Not positive this works yet + - name: Added Files + run: | + git fetch origin main + GITHUB_OUTPUT=`git diff --name-only --diff-filter=A main~ main` + + # Lint all added files + - name: Lint + run: | + python /.github/scripts/lint.py $GITHUB_OUTPUT + + +# Lint all files in plugins + # If anything outside of plugins is changed then fail? + +# Grab the target repo and validate it? + # Description? + # README? + # Env files? + From e7eb7d6ace8b38a1a1f3c7ecf39b96cedb7c725f Mon Sep 17 00:00:00 2001 From: Oddant1 Date: Tue, 21 Jan 2025 11:42:09 -0700 Subject: [PATCH 02/18] Whitespace error? --- .github/workflows/lint-pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-pr.yml b/.github/workflows/lint-pr.yml index 16bb308..c67f57e 100644 --- a/.github/workflows/lint-pr.yml +++ b/.github/workflows/lint-pr.yml @@ -8,7 +8,7 @@ on: - 'main' paths: - '/plugins/**' - workflow_dispatch: + workflow_dispatch: # Checkout jobs: From f3763cf2e59899519a116c759dfd123017cd69dc Mon Sep 17 00:00:00 2001 From: Oddant1 Date: Tue, 21 Jan 2025 11:45:35 -0700 Subject: [PATCH 03/18] Simplify condition --- .github/workflows/lint-pr.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/lint-pr.yml b/.github/workflows/lint-pr.yml index c67f57e..1dc895d 100644 --- a/.github/workflows/lint-pr.yml +++ b/.github/workflows/lint-pr.yml @@ -4,11 +4,10 @@ name: lint-pr on: # Possible to only run on PR that modifies plugins? pull_request: - branches: - - 'main' - paths: - - '/plugins/**' - workflow_dispatch: + # branches: + # - 'main' + # paths: + # - '/plugins/**' # Checkout jobs: From 125ca729a6df6f415b1f19bd532121e74ed5e09c Mon Sep 17 00:00:00 2001 From: Oddant1 Date: Tue, 21 Jan 2025 11:52:19 -0700 Subject: [PATCH 04/18] Different way to get diff --- .github/workflows/lint-pr.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lint-pr.yml b/.github/workflows/lint-pr.yml index 1dc895d..b17dfc2 100644 --- a/.github/workflows/lint-pr.yml +++ b/.github/workflows/lint-pr.yml @@ -27,8 +27,8 @@ jobs: # Not positive this works yet - name: Added Files run: | - git fetch origin main - GITHUB_OUTPUT=`git diff --name-only --diff-filter=A main~ main` + git fetch origin ${{ github.event.pull_request.base.ref }} + git diff --name-only --diff-filter=A origin/${{ github.event.pull_request.base.ref }}...${{ github.sha }} # Lint all added files - name: Lint From 52a4fb45043f0d7c20dd78a1d9b934f6875357ac Mon Sep 17 00:00:00 2001 From: Oddant1 Date: Tue, 21 Jan 2025 11:56:18 -0700 Subject: [PATCH 05/18] HEAD not main --- .github/workflows/lint-pr.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/lint-pr.yml b/.github/workflows/lint-pr.yml index b17dfc2..64b9e28 100644 --- a/.github/workflows/lint-pr.yml +++ b/.github/workflows/lint-pr.yml @@ -26,9 +26,7 @@ jobs: # Get new/changed files? # Not positive this works yet - name: Added Files - run: | - git fetch origin ${{ github.event.pull_request.base.ref }} - git diff --name-only --diff-filter=A origin/${{ github.event.pull_request.base.ref }}...${{ github.sha }} + run: GITHUB_OUTPUT=`git diff --name-only --diff-filter=A HEAD~ HEAD` # Lint all added files - name: Lint From 2f1155d4393b0e3701e6b322870e2fee36207545 Mon Sep 17 00:00:00 2001 From: Oddant1 Date: Tue, 21 Jan 2025 11:57:48 -0700 Subject: [PATCH 06/18] need fetch depth 2? --- .github/workflows/lint-pr.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/lint-pr.yml b/.github/workflows/lint-pr.yml index 64b9e28..194ca0c 100644 --- a/.github/workflows/lint-pr.yml +++ b/.github/workflows/lint-pr.yml @@ -22,6 +22,7 @@ jobs: uses: actions/checkout@v4 with: sparse-checkout: plugins + fetch-depth: 2 # Get new/changed files? # Not positive this works yet From bb5d79b19c6ac64c9ff85cab54ceff5356eb3891 Mon Sep 17 00:00:00 2001 From: Oddant1 Date: Tue, 21 Jan 2025 12:02:03 -0700 Subject: [PATCH 07/18] No leading / --- .github/workflows/lint-pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-pr.yml b/.github/workflows/lint-pr.yml index 194ca0c..aebe2ba 100644 --- a/.github/workflows/lint-pr.yml +++ b/.github/workflows/lint-pr.yml @@ -32,7 +32,7 @@ jobs: # Lint all added files - name: Lint run: | - python /.github/scripts/lint.py $GITHUB_OUTPUT + python .github/scripts/lint.py $GITHUB_OUTPUT # Lint all files in plugins From 979daf76b1a203a80ca24f8fed77f162eedb6faf Mon Sep 17 00:00:00 2001 From: Oddant1 Date: Tue, 21 Jan 2025 12:10:29 -0700 Subject: [PATCH 08/18] abspath --- .github/workflows/lint-pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-pr.yml b/.github/workflows/lint-pr.yml index aebe2ba..b9b774f 100644 --- a/.github/workflows/lint-pr.yml +++ b/.github/workflows/lint-pr.yml @@ -32,7 +32,7 @@ jobs: # Lint all added files - name: Lint run: | - python .github/scripts/lint.py $GITHUB_OUTPUT + python /home/runner/work/library-plugins/.github/scripts/lint.py $GITHUB_OUTPUT # Lint all files in plugins From 90406c86f45455ab2ea0b072a4885f84ea40b537 Mon Sep 17 00:00:00 2001 From: Oddant1 Date: Tue, 21 Jan 2025 12:13:12 -0700 Subject: [PATCH 09/18] put on one line --- .github/workflows/lint-pr.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/lint-pr.yml b/.github/workflows/lint-pr.yml index b9b774f..acc40ed 100644 --- a/.github/workflows/lint-pr.yml +++ b/.github/workflows/lint-pr.yml @@ -31,8 +31,7 @@ jobs: # Lint all added files - name: Lint - run: | - python /home/runner/work/library-plugins/.github/scripts/lint.py $GITHUB_OUTPUT + run: python .github/scripts/lint.py $GITHUB_OUTPUT # Lint all files in plugins From a5495d3cfeecc394f46ea213e710b3df3ec3e907 Mon Sep 17 00:00:00 2001 From: Oddant1 Date: Tue, 21 Jan 2025 13:31:27 -0700 Subject: [PATCH 10/18] find --- .github/workflows/lint-pr.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/lint-pr.yml b/.github/workflows/lint-pr.yml index acc40ed..82ec2b1 100644 --- a/.github/workflows/lint-pr.yml +++ b/.github/workflows/lint-pr.yml @@ -31,7 +31,9 @@ jobs: # Lint all added files - name: Lint - run: python .github/scripts/lint.py $GITHUB_OUTPUT + run: | + find / -type f -iname lint.py + python .github/scripts/lint.py $GITHUB_OUTPUT # Lint all files in plugins From 1cc258c5d0aca6403243fd359f1715be45ce7493 Mon Sep 17 00:00:00 2001 From: Oddant1 Date: Tue, 21 Jan 2025 13:37:07 -0700 Subject: [PATCH 11/18] Make find narrower --- .github/workflows/lint-pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-pr.yml b/.github/workflows/lint-pr.yml index 82ec2b1..7d374f6 100644 --- a/.github/workflows/lint-pr.yml +++ b/.github/workflows/lint-pr.yml @@ -32,7 +32,7 @@ jobs: # Lint all added files - name: Lint run: | - find / -type f -iname lint.py + find /home/runner/work -type f -iname lint.py 2> /dev/null python .github/scripts/lint.py $GITHUB_OUTPUT From 9d971beab5e16fcfd24002db3b07df58f1bde62f Mon Sep 17 00:00:00 2001 From: Oddant1 Date: Tue, 21 Jan 2025 13:38:43 -0700 Subject: [PATCH 12/18] no sparse checkout --- .github/workflows/lint-pr.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/lint-pr.yml b/.github/workflows/lint-pr.yml index 7d374f6..df8a897 100644 --- a/.github/workflows/lint-pr.yml +++ b/.github/workflows/lint-pr.yml @@ -21,7 +21,6 @@ jobs: - name: Checkout uses: actions/checkout@v4 with: - sparse-checkout: plugins fetch-depth: 2 # Get new/changed files? @@ -31,9 +30,7 @@ jobs: # Lint all added files - name: Lint - run: | - find /home/runner/work -type f -iname lint.py 2> /dev/null - python .github/scripts/lint.py $GITHUB_OUTPUT + run: python .github/scripts/lint.py $GITHUB_OUTPUT # Lint all files in plugins From 6e050ffd757554d7f18fd2fea5d101f1d4b27c7f Mon Sep 17 00:00:00 2001 From: Oddant1 Date: Tue, 21 Jan 2025 13:40:23 -0700 Subject: [PATCH 13/18] View output --- .github/workflows/lint-pr.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/lint-pr.yml b/.github/workflows/lint-pr.yml index df8a897..fefd498 100644 --- a/.github/workflows/lint-pr.yml +++ b/.github/workflows/lint-pr.yml @@ -30,7 +30,9 @@ jobs: # Lint all added files - name: Lint - run: python .github/scripts/lint.py $GITHUB_OUTPUT + run: | + echo $GITHUB_OUTPUT + python .github/scripts/lint.py $GITHUB_OUTPUT # Lint all files in plugins From 1e446e9c850e8f2fbcee57e2e036f8e350b7687b Mon Sep 17 00:00:00 2001 From: Oddant1 Date: Tue, 21 Jan 2025 13:43:19 -0700 Subject: [PATCH 14/18] Different syntax to store outputs --- .github/workflows/lint-pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-pr.yml b/.github/workflows/lint-pr.yml index fefd498..0bc290a 100644 --- a/.github/workflows/lint-pr.yml +++ b/.github/workflows/lint-pr.yml @@ -26,7 +26,7 @@ jobs: # Get new/changed files? # Not positive this works yet - name: Added Files - run: GITHUB_OUTPUT=`git diff --name-only --diff-filter=A HEAD~ HEAD` + run: echo "git diff --name-only --diff-filter=A HEAD~ HEAD" >> $GITHUB_OUTPUT # Lint all added files - name: Lint From 7c6f398d8c5b57f598b2c15a93cf3ec3e01e7647 Mon Sep 17 00:00:00 2001 From: Oddant1 Date: Tue, 21 Jan 2025 13:49:44 -0700 Subject: [PATCH 15/18] change get outputs syntax --- .github/workflows/lint-pr.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lint-pr.yml b/.github/workflows/lint-pr.yml index 0bc290a..0e73c4e 100644 --- a/.github/workflows/lint-pr.yml +++ b/.github/workflows/lint-pr.yml @@ -27,12 +27,13 @@ jobs: # Not positive this works yet - name: Added Files run: echo "git diff --name-only --diff-filter=A HEAD~ HEAD" >> $GITHUB_OUTPUT + id: get_added_files # Lint all added files - name: Lint run: | - echo $GITHUB_OUTPUT - python .github/scripts/lint.py $GITHUB_OUTPUT + echo ${{ steps.get_added_files.outputs }} + python .github/scripts/lint.py ${{ steps.get_added_files.outputs }} # Lint all files in plugins From 394510f583fbe2e82348beec66daf57355f1e786 Mon Sep 17 00:00:00 2001 From: Oddant1 Date: Tue, 21 Jan 2025 13:52:59 -0700 Subject: [PATCH 16/18] change get outputs syntax --- .github/workflows/lint-pr.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/lint-pr.yml b/.github/workflows/lint-pr.yml index 0e73c4e..477339e 100644 --- a/.github/workflows/lint-pr.yml +++ b/.github/workflows/lint-pr.yml @@ -26,14 +26,14 @@ jobs: # Get new/changed files? # Not positive this works yet - name: Added Files - run: echo "git diff --name-only --diff-filter=A HEAD~ HEAD" >> $GITHUB_OUTPUT + run: echo "DIFF=`git diff --name-only --diff-filter=A HEAD~ HEAD` >> $GITHUB_ENV id: get_added_files # Lint all added files - name: Lint run: | - echo ${{ steps.get_added_files.outputs }} - python .github/scripts/lint.py ${{ steps.get_added_files.outputs }} + echo $DIFF + python .github/scripts/lint.py $DIFF # Lint all files in plugins From 2916197b8fd05c1d7f1464d3177973a6ab5bd4d0 Mon Sep 17 00:00:00 2001 From: Oddant1 Date: Tue, 21 Jan 2025 13:54:08 -0700 Subject: [PATCH 17/18] Close quote --- .github/workflows/lint-pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-pr.yml b/.github/workflows/lint-pr.yml index 477339e..e4dd2da 100644 --- a/.github/workflows/lint-pr.yml +++ b/.github/workflows/lint-pr.yml @@ -26,7 +26,7 @@ jobs: # Get new/changed files? # Not positive this works yet - name: Added Files - run: echo "DIFF=`git diff --name-only --diff-filter=A HEAD~ HEAD` >> $GITHUB_ENV + run: echo "DIFF=`git diff --name-only --diff-filter=A HEAD~ HEAD`" >> $GITHUB_ENV id: get_added_files # Lint all added files From 97fb4f12f5afd561124d16e402009d233c70796b Mon Sep 17 00:00:00 2001 From: Oddant1 Date: Tue, 21 Jan 2025 13:55:06 -0700 Subject: [PATCH 18/18] cleanup --- .github/workflows/lint-pr.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/lint-pr.yml b/.github/workflows/lint-pr.yml index e4dd2da..a9464c7 100644 --- a/.github/workflows/lint-pr.yml +++ b/.github/workflows/lint-pr.yml @@ -27,13 +27,10 @@ jobs: # Not positive this works yet - name: Added Files run: echo "DIFF=`git diff --name-only --diff-filter=A HEAD~ HEAD`" >> $GITHUB_ENV - id: get_added_files # Lint all added files - name: Lint - run: | - echo $DIFF - python .github/scripts/lint.py $DIFF + run: python .github/scripts/lint.py $DIFF # Lint all files in plugins