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."