name: "Pull Git LFS Objects" description: "Pull only LFS objects for changed skins and core assets" inputs: changed_skins_file: description: "Path to file containing changed skins (JSON array)" required: false default: "" runs: using: "composite" steps: - name: Pull Git LFS objects shell: bash run: | if [ -z "${{ inputs.changed_skins_file }}" ] || [ ! -s "${{ inputs.changed_skins_file }}" ]; then echo "No skins changed. Skipping git pull lfs." exit 0 fi mapfile -t skins < <(jq -r '.[]' "${{ inputs.changed_skins_file }}") [ "${#skins[@]}" -eq 0 ] && { echo "No skins to process. Exiting."; exit 0; } includes="src/**,export/**,media/**" skin_includes=$( for skin in "${skins[@]}"; do esc=$(printf '%s' "$skin" \ | sed -e 's/\[/\\[/g' -e 's/\]/\\]/g') printf 'Skins/%s/**\n' "$esc" done | paste -sd ',' ) includes="$includes,$skin_includes" echo "→ Pulling LFS objects for patterns: $includes" git lfs pull --include="$includes"