Update product-page-deploy.yml #39
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: PublicCode Check and Update | |
on: | |
push: | |
branches: | |
- main | |
jobs: | |
check: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check Repository Name | |
run: | | |
if [[ "${{ github.repository }}" == *".github"* ]]; then | |
echo "This workflow cannot be run within .github repositories." | |
exit 1 | |
fi | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Set up Python | |
uses: actions/setup-python@v2 | |
with: | |
python-version: '3.x' | |
- name: Check and Update publiccode.yaml | |
run: | | |
REPO_NAME="${{ github.event.repository.name }}" | |
REPO_DESC="${{ github.event.repository.description }}" | |
REPO_URL="${{ github.event.repository.html_url }}" | |
REPO_HOMEPAGE="${{ github.event.repository.homepage }}" | |
#REPO_TOPICS="${{ github.event.repository.topics }}" | |
REPO_LICENSE="${{ github.event.repository.license.key }}" | |
REPO_CREATED_AT="${{ github.event.repository.created_at }}" | |
ORGANISATION_NAME="${{ github.event.organization.login }}" | |
ORGANISATION_DESCRIPTION="${{ github.event.organization.description }}" | |
ORGANISATION_GITID="${{ github.event.organization.id}}" | |
ORGANISATION_URL="${{ github.event.organization.login }}" | |
ORGANISATION_AVATAR="${{ github.event.organization.avatar_url }}" | |
echo "Installing PyYAML..." | |
pip install PyYAML | |
echo "Updating publiccode.yaml..." | |
python - <<END | |
import yaml | |
import json | |
from datetime import datetime | |
# Read existing publiccode.yaml | |
try: | |
with open("publiccode.yaml", "r") as f: | |
data = yaml.safe_load(f) | |
except FileNotFoundError: | |
data = {} | |
# Convert created_at to date format | |
# created_at_date = datetime.fromisoformat("$REPO_CREATED_AT".replace("Z", "+00:00")).strftime('%Y-%m-%d') | |
created_at_date = datetime.now().strftime('%Y-%m-%d') | |
# Convert topics JSON string to Python list and then to comma-separated string | |
# Update or append values | |
if "$REPO_NAME" != "null" and "$REPO_NAME": | |
data['name'] = "$REPO_NAME" | |
if "$REPO_URL" != "null" and "$REPO_URL": | |
data['url'] = "$REPO_URL" | |
if "$REPO_DESC" != "null" and "$REPO_DESC": | |
data['description'] = "$REPO_DESC" | |
if "$REPO_HOMEPAGE" != "null" and "$REPO_HOMEPAGE": | |
data['url'] = "$REPO_HOMEPAGE" | |
#if "$REPO_TOPICS" != "null" and "$REPO_TOPICS": | |
# data['topics'] = "$REPO_TOPICS" | |
if "$REPO_LICENSE" != "null" and "$REPO_LICENSE": | |
data['license'] = "$REPO_LICENSE" | |
# Add releaseDate if not present | |
if 'releaseDate' not in data: | |
data['releaseDate'] = created_at_date | |
# Create or update nested 'organisation' array | |
if 'organisation' not in data: | |
data['organisation'] = {} | |
if "$ORGANISATION_NAME" != "null" and "$ORGANISATION_NAME": | |
data['organisation']['name'] = "$ORGANISATION_NAME" | |
if "$ORGANISATION_AVATAR" != "null" and "$ORGANISATION_AVATAR": | |
data['organisation']['avatar'] = "$ORGANISATION_AVATAR" | |
if "$ORGANISATION_URL" != "null" and "$ORGANISATION_URL": | |
data['organisation']['url'] = "$ORGANISATION_URL" | |
if "$ORGANISATION_DESCRIPTION" != "null" and "$ORGANISATION_DESCRIPTION": | |
data['organisation']['description'] = "$ORGANISATION_DESCRIPTION" | |
# Write updated publiccode.yaml | |
with open("publiccode.yaml", "w") as f: | |
yaml.safe_dump(data, f) | |
END | |
- name: Commit changes | |
run: | | |
git config --local user.email "[email protected]" | |
git config --local user.name "GitHub Action" | |
git add publiccode.yaml | |
git commit -m "${{ github.workflow }}" || echo "No changes to commit" | |
git push | |
- name: Post Repository URL to OpenCatalogi API | |
run: | | |
curl -X POST "https://api.opencatalogi.nl/api/github_events" \ | |
-H "Content-Type: application/json" \ | |
-d '{ | |
"repository": { | |
"html_url": "'${{ github.event.repository.html_url }}'" | |
} | |
}' |