Add deletion capabilities, reorganize, and update readme #4
83
.gitea/workflows/mvs_delete.yaml
Normal file
83
.gitea/workflows/mvs_delete.yaml
Normal 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."
|
||||
@ -31,7 +31,7 @@ jobs:
|
||||
nc -h
|
||||
echo "=== Debug: Setup complete ==="
|
||||
|
||||
- name: Find changed and deleted source files
|
||||
- name: Find changed source files
|
||||
id: files
|
||||
run: |
|
||||
echo "=== Debug: Starting file detection ==="
|
||||
@ -41,13 +41,10 @@ jobs:
|
||||
if git rev-parse --verify HEAD~1 >/dev/null 2>&1; then
|
||||
echo "Parent commit exists; running git diff."
|
||||
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 "Deleted files from last commit: '${DELETED_FILES}'"
|
||||
else
|
||||
echo "No parent commit; skipping diff."
|
||||
CHANGED_FILES=""
|
||||
DELETED_FILES=""
|
||||
fi
|
||||
echo "=== Debug: Git diff check complete ==="
|
||||
|
||||
@ -60,7 +57,7 @@ jobs:
|
||||
echo "=== Debug: Fallback complete ==="
|
||||
fi
|
||||
|
||||
if [ -z "$CHANGED_FILES" ] && [ -z "$DELETED_FILES" ]; then
|
||||
if [ -z "$CHANGED_FILES" ]; then
|
||||
echo "No C/BAS files found; skipping workflow."
|
||||
exit 0 # Graceful skip, no failure
|
||||
fi
|
||||
@ -70,38 +67,11 @@ jobs:
|
||||
echo "file=$CHANGED_FILES" >> $GITHUB_OUTPUT
|
||||
|
||||
# Extract member name (handle .c or .bas)
|
||||
if [ -n "$CHANGED_FILES" ]; then
|
||||
EXT="${CHANGED_FILES##*.}"
|
||||
BASE=$(basename "$CHANGED_FILES" ".$EXT")
|
||||
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 ==="
|
||||
|
||||
- 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
|
||||
if: ${{ steps.files.outputs.file != '' }}
|
||||
run: |
|
||||
|
||||
Loading…
Reference in New Issue
Block a user