Skip to content

[ADD] WinFindr

[ADD] WinFindr #34

Workflow file for this run

name: Convert Issue to Pull Request
on:
issues:
types: [opened, labeled]
workflow_dispatch:
inputs:
issue_number:
description: 'Issue number to convert to PR'
required: true
type: number
jobs:
convert_issue_to_pr:
if: (github.event_name == 'issues' && github.event.label.name == 'Add') || github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
token: ${{ secrets.PAT }}
- name: Get issue details
id: issue
uses: actions/github-script@v7
with:
github-token: ${{ secrets.PAT }}
script: |
const issueNumber = context.payload.inputs ? context.payload.inputs.issue_number : context.issue.number;
const issue = await github.rest.issues.get({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issueNumber
});
return issue.data;
- name: Update README.md
run: |
ISSUE_BODY="${{ fromJson(steps.issue.outputs.result).body }}"
# Extract relevant information from issue body
APP_NAME=$(echo "$ISSUE_BODY" | awk '/### Application Name/{flag=1; next} /###/{flag=0} flag' | xargs)
APP_URL=$(echo "$ISSUE_BODY" | awk '/### Application URL/{flag=1; next} /###/{flag=0} flag' | xargs)
CATEGORY=$(echo "$ISSUE_BODY" | awk '/### Category/{flag=1; next} /###/{flag=0} flag' | xargs)
APP_DESCRIPTION=$(echo "$ISSUE_BODY" | awk '/### Description/{flag=1; next} /###/{flag=0} flag' | xargs)
REPO_URL=$(echo "$ISSUE_BODY" | awk '/### Repository URL/{flag=1; next} /###/{flag=0} flag' | xargs)
# Check if the application is open source
if echo "$ISSUE_BODY" | grep -q "\[X\] Open Source"; then
if [ -n "$REPO_URL" ]; then
OPEN_SOURCE_ICON="[![Open-Source Software][oss icon]]($REPO_URL)"
else
OPEN_SOURCE_ICON="[![Open-Source Software][oss icon]]($APP_URL)"
fi
else
OPEN_SOURCE_ICON=""
fi
FREE_ICON=""
# Create the new entry
NEW_ENTRY="* [$APP_NAME]($APP_URL) - $APP_DESCRIPTION $OPEN_SOURCE_ICON $FREE_ICON"
# Find the category section and insert the new entry
awk -v new_entry="$NEW_ENTRY" -v category="$CATEGORY" '
BEGIN {in_category=0; added=0}
/^## / {
if (in_category && !added) {
print new_entry
added=1
}
in_category = ($0 ~ "^## " category)
print
if (in_category) print ""
next
}
in_category && /^\* / {
if (!added && tolower(substr(new_entry, 3)) < tolower(substr($0, 3))) {
print new_entry
added=1
}
print
next
}
{print}
END {
if (in_category && !added) print new_entry
}
' README.md > README.md.tmp && mv README.md.tmp README.md
# Set environment variables for later steps
echo "APP_NAME=$APP_NAME" >> $GITHUB_ENV
echo "CATEGORY=$CATEGORY" >> $GITHUB_ENV
echo "APP_URL=$APP_URL" >> $GITHUB_ENV
echo "APP_DESCRIPTION=$APP_DESCRIPTION" >> $GITHUB_ENV
echo "OPEN_SOURCE_ICON=$OPEN_SOURCE_ICON" >> $GITHUB_ENV
echo "FREE_ICON=$FREE_ICON" >> $GITHUB_ENV
echo "REPO_URL=$REPO_URL" >> $GITHUB_ENV
- name: Debug Output
run: |
echo "APP_NAME: $APP_NAME"
echo "APP_URL: $APP_URL"
echo "CATEGORY: $CATEGORY"
echo "APP_DESCRIPTION: $APP_DESCRIPTION"
echo "OPEN_SOURCE_ICON: $OPEN_SOURCE_ICON"
echo "FREE_ICON: $FREE_ICON"
echo "REPO_URL: $REPO_URL"
- name: Create Pull Request
uses: peter-evans/create-pull-request@v6
with:
token: ${{ secrets.PAT }}
commit-message: "Add ${{ env.APP_NAME }} to ${{ env.CATEGORY }} category"
title: "Add ${{ env.APP_NAME }} to ${{ env.CATEGORY }} category"
body: |
This PR adds ${{ env.APP_NAME }} to the ${{ env.CATEGORY }} category in the README.md file.
Application URL: ${{ env.APP_URL }}
Repository URL: ${{ env.REPO_URL }}
Closes #${{ github.event.issue.number || github.event.inputs.issue_number }}
branch: add-${{ github.event.issue.number || github.event.inputs.issue_number }}
base: main
- name: Close Issue
uses: actions/github-script@v7
with:
github-token: ${{ secrets.PAT }}
script: |
const issueNumber = context.payload.inputs ? context.payload.inputs.issue_number : context.issue.number;
await github.rest.issues.update({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issueNumber,
state: 'closed'
});