name: Create Pull Request description: Create a pull request via Forgejo API inputs: token: description: Forgejo API token required: true repository: description: Repository (owner/repo) default: ${{ github.repository }} title: description: Pull request title required: true body: description: Pull request body default: '' head: description: Source branch required: true base: description: Target branch default: 'main' labels: description: Comma-separated label names default: '' assignees: description: Comma-separated usernames to assign default: '' outputs: number: description: Created PR number value: ${{ steps.create.outputs.number }} url: description: PR URL value: ${{ steps.create.outputs.url }} runs: using: composite steps: - id: create shell: bash run: | TOKEN="${{ inputs.token }}" REPO="${{ inputs.repository }}" TITLE="${{ inputs.title }}" BODY="${{ inputs.body }}" HEAD="${{ inputs.head }}" BASE="${{ inputs.base }}" LABELS="${{ inputs.labels }}" ASSIGNEES="${{ inputs.assignees }}" # Build JSON payload JSON=$(jq -n \ --arg title "$TITLE" \ --arg body "$BODY" \ --arg head "$HEAD" \ --arg base "$BASE" \ '{title: $title, body: $body, head: $head, base: $base}') # Add labels if provided if [ -n "$LABELS" ]; then LABELS_JSON=$(echo "$LABELS" | tr ',' '\n' | jq -R . | jq -s .) JSON=$(echo "$JSON" | jq --argjson labels "$LABELS_JSON" '. + {labels: $labels}') fi # Add assignees if provided if [ -n "$ASSIGNEES" ]; then ASSIGNEES_JSON=$(echo "$ASSIGNEES" | tr ',' '\n' | jq -R . | jq -s .) JSON=$(echo "$JSON" | jq --argjson assignees "$ASSIGNEES_JSON" '. + {assignees: $assignees}') fi RESPONSE=$(curl -s -X POST \ "https://git.flowmade.one/api/v1/repos/$REPO/pulls" \ -H "Authorization: token $TOKEN" \ -H "Content-Type: application/json" \ -d "$JSON") NUMBER=$(echo "$RESPONSE" | jq -r '.number') URL=$(echo "$RESPONSE" | jq -r '.html_url') echo "number=$NUMBER" >> $GITHUB_OUTPUT echo "url=$URL" >> $GITHUB_OUTPUT