Finalise names of everything in preparation for the first release #59
This file contains 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: Build rescript-atdgen-generator | |
on: [push, pull_request] | |
jobs: | |
test_and_build: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-13, macos-latest, windows-latest] | |
steps: | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 'lts/*' | |
- uses: actions/checkout@v4 | |
- run: npm install -g esy | |
- name: Try to restore install cache | |
uses: actions/cache@v4 | |
with: | |
path: ~/.esy/source | |
key: source-${{ hashFiles('**/index.json') }} | |
- name: Install | |
run: esy install | |
- name: Print esy cache | |
id: print_esy_cache | |
run: node .github/workflows/print_esy_cache.js | |
- name: Try to restore build cache | |
id: deps-cache-macos | |
uses: actions/cache@v4 | |
with: | |
path: ${{ steps.print_esy_cache.outputs.esy_cache }} | |
key: build-${{ matrix.os }}-${{ hashFiles('**/index.json') }} | |
restore-keys: build-${{ matrix.os }}- | |
- name: Build | |
run: esy build | |
- name: "[Test] npm install" | |
run: npm install | |
working-directory: test | |
- if: matrix.os != 'windows-latest' | |
name: (Mac, Linux) Get atdgen path | |
id: atdgen-path-nix | |
run: echo "path=$(esy which atdgen)" >> "$GITHUB_OUTPUT" | |
- if: matrix.os == 'windows-latest' | |
name: (Windows) Get atdgen path | |
id: atdgen-path-win | |
run: echo "::set-output name=path::$(esy where atdgen)" | |
- if: matrix.os != 'windows-latest' | |
name: "(Mac, Linux) [Test] Generate bsconfig.json" | |
env: | |
ATDGEN_PATH: ${{ steps.atdgen-path-nix.outputs.path }} | |
run: node makeBsconfig "$ATDGEN_PATH" | |
working-directory: test | |
- if: matrix.os == 'windows-latest' | |
name: "(Windows) [Test] Generate bsconfig.json" | |
env: | |
ATDGEN_PATH: ${{ steps.atdgen-path-win.outputs.path }} | |
run: node makeBsconfig "$ATDGEN_PATH" | |
working-directory: test | |
shell: bash | |
- name: "[Test] npm run build (dev)" | |
run: npm run build | |
working-directory: test | |
- name: "[Test] Install last published version" | |
run: npm install @jchavarri/bs-atdgen-generator --save-dev | |
working-directory: test | |
- if: matrix.os != 'windows-latest' | |
name: "(Mac, Linux) [Test] Generate bsconfig.json for published version" | |
env: | |
ATDGEN_PATH: ${{ steps.atdgen-path-nix.outputs.path }} | |
run: node makeBsconfig "npx atdgen" | |
working-directory: test | |
- if: matrix.os == 'windows-latest' | |
name: "(Windows) [Test] Generate bsconfig.json for published version" | |
env: | |
ATDGEN_PATH: ${{ steps.atdgen-path-win.outputs.path }} | |
run: node makeBsconfig "cmd /c npx atdgen" | |
working-directory: test | |
- name: "[Test] npm run clean" | |
run: npm run clean | |
working-directory: test | |
- name: "[Test] npm run build (last published version)" | |
run: npm run build | |
working-directory: test | |
- if: matrix.os != 'windows-latest' | |
name: (Mac, Linux) Upload artifacts ${{ matrix.os }} | |
# if: github.event_name != 'pull_request' && startsWith(github.ref, 'refs/tags/') | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.os }} | |
path: ${{ steps.atdgen-path-nix.outputs.path }} | |
- if: matrix.os == 'windows-latest' | |
name: (Mac, Linux) Upload artifacts ${{ matrix.os }} | |
# if: github.event_name != 'pull_request' && startsWith(github.ref, 'refs/tags/') | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.os }} | |
path: ${{ steps.atdgen-path-win.outputs.path }} | |
- name: Cleanup | |
run: | | |
# Cleanup build cache in case dependencies have changed | |
esy cleanup . | |
prepublish: | |
needs: test_and_build | |
# if: github.event_name != 'pull_request' && startsWith(github.ref, 'refs/tags/') | |
name: (only on release) Prepublish | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 12 | |
- name: Download linux artifacts | |
if: success() | |
uses: actions/download-artifact@v4 | |
with: | |
name: ubuntu-latest | |
path: binaries/linux | |
- name: Download macOS x64 artifacts | |
if: success() | |
uses: actions/download-artifact@v4 | |
with: | |
name: macos-13 | |
path: binaries/darwin | |
- name: Download macOS arm64 artifacts | |
if: success() | |
uses: actions/download-artifact@v4 | |
with: | |
name: macos-latest | |
path: binaries/darwin-arm64 | |
- name: Download windows artifacts | |
if: success() | |
uses: actions/download-artifact@v4 | |
with: | |
name: windows-latest | |
path: binaries/windows | |
- name: Move artifacts | |
if: success() | |
run: | | |
mkdir -p exe | |
ls -la binaries | |
ls -la binaries/darwin | |
ls -la binaries/windows | |
ls -la binaries/linux | |
mv binaries/darwin-arm64/atdgen exe/rescript-atdgen-generator-darwin-arm64.exe | |
mv binaries/darwin/atdgen exe/rescript-atdgen-generator-darwin-x64.exe | |
mv binaries/windows/atdgen.exe exe/rescript-atdgen-generator-win-x64.exe | |
mv binaries/linux/atdgen exe/rescript-atdgen-generator-linux-x64.exe | |
- name: Upload release artifacts | |
# if: github.event_name != 'pull_request' && startsWith(github.ref, 'refs/tags/') | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Release | |
path: exe |