Skip to content

On Pull Request

On Pull Request #20

Workflow file for this run

name: On Pull Request
on:
workflow_dispatch:
#pull_request:
#paths:
# - '**/*.gpml'
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
cancel-in-progress: false # to allow multiple runs to queue up rather than clobber
jobs:
# Retrieves GPML file and PR number associated with incoming Pull Request and creates
# global variables that can accessed by subsequent jobs:
# * pr-number = the unique number that identifies a Pull Request
# * add-modified = a GPML file that is being added or modified in the wikipathways database
# * deleted = a GPML file that is being deleted from the wikipathways database
get-gpml-pr:
runs-on: ubuntu-latest
outputs:
pr-number: ${{ steps.changes.outputs.pr-number }}
added-modified: ${{ steps.changes.outputs.added-modified }}
deleted: ${{ steps.changes.outputs.deleted }}
steps:
# Make sure we have some code to diff.
- name: Checkout repository
uses: actions/checkout@v3
- name: Get PR and GPML
id: changes
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} #only need to support TESTING
run: |
echo "GPML files were changed in pull request ${{ github.event.before }} -> ${{ github.event.after }}"
#echo "pr-number=${{ github.event.pull_request.number }}" >> $GITHUB_OUTPUT
echo "pr-number=4" >> $GITHUB_OUTPUT #TESTING
#echo "added-modified=$(git diff --name-only --diff-filter=AM ${{ github.event.before }} ${{ github.event.after }} | grep .gpml$ | xargs)" >> $GITHUB_OUTPUT
echo "added-modified=$(gh pr view 4 --json files --jq '.files.[].path' | grep '.gpml$')" >> $GITHUB_OUTPUT #TESTING
if git diff --name-only --diff-filter=AM ${{ github.event.before }} ${{ github.event.after }} | grep .gpml$; then
echo 'added or modified:'
git diff --name-only --diff-filter=AM ${{ github.event.before }} ${{ github.event.after }} | grep .gpml$
fi
echo "deleted=$(git diff --name-only --diff-filter=D ${{ github.event.before }} ${{ github.event.after }} | grep .gpml$ | xargs)" >> $GITHUB_OUTPUT
if git diff --name-only --diff-filter=D ${{ github.event.before }} ${{ github.event.after }} | grep .gpml$; then
echo 'deleted:'
git diff --name-only --diff-filter=D ${{ github.event.before }} ${{ github.event.after }} | grep .gpml$
fi
check_gpml:
needs: [get-gpml-pr]
if: ${{needs.get-gpml-pr.outputs.added-modified}}
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Check GPML file
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
GPML_FILE=${{needs.get-gpml-pr.outputs.added-modified}}
echo "Found .gpml file: $GPML_FILE"
org="$(sed -n '/<Pathway /s/.*Organism=\(.*\)[^\n]*/\1/p' $GPML_FILE | tr -d '"' | tr -d '>' | tr -d '\r')"
name="$(sed -n '/<Pathway /s/.*Name=\(.*\)[^\n]*/\1/p' $GPML_FILE | tr -d '"' | tr -d '>' | tr -d '\r')"
desc="$(sed -n '/<Comment Source="WikiPathways-description">\(.*\)<\/Comment>/\1/p' $GPML_FILE | tr -d '"')"
# Start PR description
NEW_DESCRIPTION="
# Pathway Information
Title: $name
Organism: $org
Description: $desc
---
"
PR_NUMBER=${{needs.get-gpml-pr.outputs.pr-number}}
gh pr edit $PR_NUMBER --body "$NEW_DESCRIPTION"
metadata:
needs: [check_gpml]
if: ${{needs.changed-gpmls.outputs.added-modified}}
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Run meta-data-action
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
echo "TODO: Run meta-data-action and attach output JSON and TSV to PR"
# Update PR description
PR_NUMBER=${{needs.get-gpml-pr.outputs.pr-number}}
CURRENT_DESCRIPTION=$(gh pr view $PR_NUMBER --json body -q ".body")
NEW_DESCRIPTION="$CURRENT_DESCRIPTION
# Generate Metadata Files
- [x] info.json generated
- [x] datanodes.tsv generated
"
gh pr edit $PR_NUMBER --body "$NEW_DESCRIPTION"
pubmed:
needs: [metadata]
if: ${{needs.changed-gpmls.outputs.added-modified}}
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Run generate-references
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
echo "TODO: Run generate-references and attach output TSV to PR"
# Update PR description
PR_NUMBER=${{needs.get-gpml-pr.outputs.pr-number}}
CURRENT_DESCRIPTION=$(gh pr view $PR_NUMBER --json body -q ".body")
NEW_DESCRIPTION="$CURRENT_DESCRIPTION
- [x] references.tsv generated
"
gh pr edit $PR_NUMBER --body "$NEW_DESCRIPTION"
frontmatter:
needs: [pubmed]
if: ${{needs.changed-gpmls.outputs.added-modified}}
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Run create_pathway_frontmatter.py
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
echo "TODO: Run create_pathway_frontmatter.py and attach output MD to PR"
# Update PR description
PR_NUMBER=${{needs.get-gpml-pr.outputs.pr-number}}
CURRENT_DESCRIPTION=$(gh pr view $PR_NUMBER --json body -q ".body")
NEW_DESCRIPTION="$CURRENT_DESCRIPTION
- [x] .md generated
"
gh pr edit $PR_NUMBER --body "$NEW_DESCRIPTION"
json-svg:
needs: [frontmatter]
if: ${{needs.changed-gpmls.outputs.added-modified}}
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Run generate-svgs
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
echo "TODO: Run generate-svgs and attach output JSON, SVG and PNG to PR"
# Update PR description
PR_NUMBER=${{needs.get-gpml-pr.outputs.pr-number}}
CURRENT_DESCRIPTION=$(gh pr view $PR_NUMBER --json body -q ".body")
NEW_DESCRIPTION="$CURRENT_DESCRIPTION
- [x] .json generated
- [x] .svg generated
- [x] .png generated
* TODO: insert PNG here *
![Pathway thumbnail](pathway.png)
"
gh pr edit $PR_NUMBER --body "$NEW_DESCRIPTION"
testing:
needs: [frontmatter]
if: ${{needs.changed-gpmls.outputs.added-modified}}
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Perform automatic test
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
# TODO: perform testing
# Update PR description
PR_NUMBER=${{needs.get-gpml-pr.outputs.pr-number}}
CURRENT_DESCRIPTION=$(gh pr view $PR_NUMBER --json body -q ".body")
NEW_DESCRIPTION="$CURRENT_DESCRIPTION
---
# Automated Testing
- [x] Test one PASSED
```diff
- Test two FAILED
```
- [x] Test three PASSED
- [ ] Interactions are connected
- [ ] Datanodes are annotated with database references
- [ ] Decription, consisting of 2-3 sentence overview of processes described in the pathway
- [ ] At least one literature reference
- [ ] At least one pathway ontology term
- [ ] Pathway title conforms to the [guidelines](https://github.com/wikipathways/wikipathways-faq/discussions/24)
---
"
gh pr edit $PR_NUMBER --body "$NEW_DESCRIPTION"