feat: implement file copy and move functionality with unique naming #38
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| jobs: | |
| verify: | |
| name: verify (${{ matrix.os }}) | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| # Platform-specific failures are the whole point of this matrix, so one | |
| # runner going red must not cancel the others - we want all three reports. | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, windows-latest, macos-latest] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: npm | |
| - run: npm ci --legacy-peer-deps | |
| # Several suites transitively import `electron`, and its index.js downloads | |
| # the binary on first require. Parallel vitest workers racing that download | |
| # corrupt the extract on macOS (EEXIST on the Electron Framework symlink), | |
| # so do it once, serially, up front. Idempotent - exits early if present. | |
| - name: Install Electron binary | |
| shell: bash | |
| run: | | |
| for attempt in 1 2 3; do | |
| npm run install-electron && exit 0 | |
| if [ "$attempt" -eq 3 ]; then exit 1; fi | |
| echo "Electron download failed (attempt $attempt/3); retrying in 10 seconds..." | |
| sleep 10 | |
| done | |
| - run: npm run typecheck | |
| - run: npm test |