Add deletion capabilities, reorganize, and update readme #4

Merged
gmgauthier merged 4 commits from delete_pds_member into master 2026-02-06 15:46:42 +00:00
2 changed files with 88 additions and 35 deletions
Showing only changes of commit dbfa085823 - Show all commits

View File

@ -0,0 +1,83 @@
name: MVS Delete Members
on:
push:
branches: [ master ]
paths:
- 'src/**'
- 'jcl/**'
workflow_dispatch: # Allow manual trigger for cleanup
jobs:
delete-members:
runs-on: ubuntu-gitea
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0 # Full history for git diff
- name: Prepare environment
id: setup
run: |
echo "=== Debug: Starting setup ==="
apt-get update && apt install -y netcat-traditional python3-requests
nc -h
echo "=== Debug: Setup complete ==="
- name: Find deleted source files
id: deleted
run: |
echo "=== Debug: Starting deletion detection ==="
echo "Current dir: $(pwd)"
# Check if we have a parent commit
if git rev-parse --verify HEAD~1 >/dev/null 2>&1; then
echo "Parent commit exists; checking for deletions."
DELETED_FILES=$(git diff --name-only --diff-filter=D HEAD~1 2>/dev/null | grep -E '\.(c|bas)$')
echo "Deleted files from last commit: '${DELETED_FILES}'"
else
echo "No parent commit; no deletions to process."
DELETED_FILES=""
fi
if [ -z "$DELETED_FILES" ]; then
echo "No deleted C/BAS files found; skipping workflow."
echo "has_deletions=false" >> $GITHUB_OUTPUT
exit 0
fi
# Process deleted files - convert to space-separated list of members
DELETED_MEMBERS=""
for DFILE in $DELETED_FILES; do
DEXT="${DFILE##*.}"
DBASE=$(basename "$DFILE" ".$DEXT")
DELETED_MEMBERS="$DELETED_MEMBERS $DBASE"
done
echo "Deleted members: $DELETED_MEMBERS"
echo "deleted_members=$DELETED_MEMBERS" >> $GITHUB_OUTPUT
echo "has_deletions=true" >> $GITHUB_OUTPUT
echo "=== Debug: Deletion detection complete ==="
- name: Delete removed members from PDS
if: ${{ steps.deleted.outputs.has_deletions == 'true' }}
run: |
echo "=== Starting deletion of removed members ==="
echo "Deleted members: ${{ steps.deleted.outputs.deleted_members }}"
for MEMBER in ${{ steps.deleted.outputs.deleted_members }}; do
echo "Deleting member: $MEMBER"
python3 delete_mvs_member.py "@05054.SRCLIB.C($MEMBER)"
done
echo "=== Deletion complete ==="
env:
MVS_BATCH_PASSWORD: ${{ vars.MVS_BATCH_PASSWORD }}
MVS_HOST: "oldcomputernerd.com"
- name: Report Status
if: ${{ steps.deleted.outputs.has_deletions == 'true' }}
run: |
echo "Deletion complete! Members removed from mainframe PDS."

View File

@ -31,7 +31,7 @@ jobs:
nc -h nc -h
echo "=== Debug: Setup complete ===" echo "=== Debug: Setup complete ==="
- name: Find changed and deleted source files - name: Find changed source files
id: files id: files
run: | run: |
echo "=== Debug: Starting file detection ===" echo "=== Debug: Starting file detection ==="
@ -41,13 +41,10 @@ jobs:
if git rev-parse --verify HEAD~1 >/dev/null 2>&1; then if git rev-parse --verify HEAD~1 >/dev/null 2>&1; then
echo "Parent commit exists; running git diff." echo "Parent commit exists; running git diff."
CHANGED_FILES=$(git diff --name-only HEAD~1 2>/dev/null | grep -E '\.(c|bas)$' | head -1) CHANGED_FILES=$(git diff --name-only HEAD~1 2>/dev/null | grep -E '\.(c|bas)$' | head -1)
DELETED_FILES=$(git diff --name-only --diff-filter=D HEAD~1 2>/dev/null | grep -E '\.(c|bas)$')
echo "Changed files from last commit: '${CHANGED_FILES}'" echo "Changed files from last commit: '${CHANGED_FILES}'"
echo "Deleted files from last commit: '${DELETED_FILES}'"
else else
echo "No parent commit; skipping diff." echo "No parent commit; skipping diff."
CHANGED_FILES="" CHANGED_FILES=""
DELETED_FILES=""
fi fi
echo "=== Debug: Git diff check complete ===" echo "=== Debug: Git diff check complete ==="
@ -60,7 +57,7 @@ jobs:
echo "=== Debug: Fallback complete ===" echo "=== Debug: Fallback complete ==="
fi fi
if [ -z "$CHANGED_FILES" ] && [ -z "$DELETED_FILES" ]; then if [ -z "$CHANGED_FILES" ]; then
echo "No C/BAS files found; skipping workflow." echo "No C/BAS files found; skipping workflow."
exit 0 # Graceful skip, no failure exit 0 # Graceful skip, no failure
fi fi
@ -70,38 +67,11 @@ jobs:
echo "file=$CHANGED_FILES" >> $GITHUB_OUTPUT echo "file=$CHANGED_FILES" >> $GITHUB_OUTPUT
# Extract member name (handle .c or .bas) # Extract member name (handle .c or .bas)
if [ -n "$CHANGED_FILES" ]; then EXT="${CHANGED_FILES##*.}"
EXT="${CHANGED_FILES##*.}" BASE=$(basename "$CHANGED_FILES" ".$EXT")
BASE=$(basename "$CHANGED_FILES" ".$EXT") echo "member=$BASE" >> $GITHUB_OUTPUT
echo "member=$BASE" >> $GITHUB_OUTPUT
fi
# Process deleted files - convert to space-separated list of members
if [ -n "$DELETED_FILES" ]; then
DELETED_MEMBERS=""
for DFILE in $DELETED_FILES; do
DEXT="${DFILE##*.}"
DBASE=$(basename "$DFILE" ".$DEXT")
DELETED_MEMBERS="$DELETED_MEMBERS $DBASE"
done
echo "deleted_members=$DELETED_MEMBERS" >> $GITHUB_OUTPUT
fi
echo "=== Debug: File detection complete ===" echo "=== Debug: File detection complete ==="
- name: Delete removed members from PDS
if: ${{ steps.files.outputs.deleted_members != '' }}
run: |
echo "=== Debug: Starting deletion of removed members ==="
echo "Deleted members: ${{ steps.files.outputs.deleted_members }}"
for MEMBER in ${{ steps.files.outputs.deleted_members }}; do
echo "Deleting member: $MEMBER"
python3 delete_mvs_member.py "@05054.SRCLIB.C($MEMBER)"
done
echo "=== Debug: Deletion complete ==="
env:
MVS_BATCH_PASSWORD: ${{ vars.MVS_BATCH_PASSWORD }}
MVS_HOST: "oldcomputernerd.com"
- name: Upload to PDS and Submit JCL - name: Upload to PDS and Submit JCL
if: ${{ steps.files.outputs.file != '' }} if: ${{ steps.files.outputs.file != '' }}
run: | run: |