name: timelord description: | Use timelord to set file timestamps with git-warp-time fallback for cache misses inputs: key: description: | The key to use for caching the timelord data. required: false default: '' path: description: | The path to the directory to be timestamped. required: false default: '' outputs: database-path: description: Path to timelord database value: '${{ env.TIMELORD_CACHE_PATH }}' runs: using: composite steps: - name: Set defaults shell: bash run: | echo "TIMELORD_KEY=${{ inputs.key || format('timelord-v1-{0}-{1}', github.repository, hashFiles('**/*.rs', '**/Cargo.toml', '**/Cargo.lock')) }}" >> $GITHUB_ENV echo "TIMELORD_PATH=${{ inputs.path || '.' }}" >> $GITHUB_ENV echo "TIMELORD_CACHE_PATH=$HOME/.cache/timelord" >> $GITHUB_ENV - name: Install timelord-cli and git-warp-time uses: https://github.com/taiki-e/install-action@v2 with: tool: git-warp-time,timelord-cli@3.0.1 - name: Restore timelord cache with fallbacks id: timelord-restore uses: actions/cache/restore@v4 with: path: ${{ env.TIMELORD_CACHE_PATH }} key: ${{ env.TIMELORD_KEY }} restore-keys: | timelord-v1-${{ github.repository }}- - name: Initialize timestamps on complete cache miss if: steps.timelord-restore.outputs.cache-hit != 'true' shell: bash run: | echo "Complete timelord cache miss - running git-warp-time" git fetch --unshallow if [ "${{ env.TIMELORD_PATH }}" = "." ]; then ~/.cargo/bin/git-warp-time --quiet else ~/.cargo/bin/git-warp-time --quiet ${{ env.TIMELORD_PATH }} fi echo "Git timestamps restored" - name: Run timelord sync shell: bash run: | mkdir -p ${{ env.TIMELORD_CACHE_PATH }} ~/.cargo/bin/timelord sync --source-dir ${{ env.TIMELORD_PATH }} --cache-dir ${{ env.TIMELORD_CACHE_PATH }} - name: Save updated timelord cache immediately uses: actions/cache/save@v4 with: path: ${{ env.TIMELORD_CACHE_PATH }} key: ${{ env.TIMELORD_KEY }}