On Pull Request #20
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" |