name: Haskell CI
on: [push]
-
jobs:
- lint:
- runs-on: ubuntu-latest
- steps:
- - uses: domdere/haskell-lint-action@v1.0.2
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
build:
- runs-on: ubuntu-latest
+ runs-on: ${{ matrix.os }}
+
+ env:
+ hieref: 7cf1295a2804a527381331bb7b73d58255721edc
+
+ strategy:
+ matrix:
+ ghc: ['8.6.5']
+ os: [ubuntu-latest, macOS-latest]
steps:
- uses: actions/checkout@v1
- - name: Install HIE
+ - uses: bubba/setup-haskell@macos-ghcup
+ with:
+ ghc-version: ${{ matrix.ghc }}
+ cabal-version: '3.0'
+ - run: cabal update
+
+ - name: Clone HIE
+ uses: actions/checkout@v1
+ with:
+ repository: haskell/haskell-ide-engine
+ submodules: recurse
+ ref: ${{ env.hieref }}
+ path: haskell-ide-engine
+
+ - name: Cache Cabal binaries
+ uses: actions/cache@v1
+ with:
+ path: $HOME/.cabal/bin
+ key: ${{ runner.OS }}-${{ matrix.ghc }}-${{ env.hieref }}
+
+ - name: Build HIE
run: |
- apt upgrade ghc cabal-install
- pushd $HOME
- git clone https://github.com/haskell/haskell-ide-engine --recurse-submodules
- cd haskell-ide-engine
- cabal v2-install hie
- cabal v2-install hoogle
+ if [ -e $HOME/.cabal/bin/hie ]; then
+ echo "hie is already built"
+ exit 0
+ fi
+ echo $GITHUB_WORKSPACE
+ ls
+ ls $GITHUB_WORKSPACE
+ pushd $GITHUB_WORKSPACE/haskell-ide-engine
+ cabal install hie
+ cabal install hoogle
hoogle generate
popd
+ - name: Install JS Language Server
+ run: npm install javascript-typescript-langserver
- name: Build
- run: cabal v2-build
- - name: Run tests
- run: cabal v2-test
+ run: cabal build
+ - name: Test
+ run: |
+ export PATH=$PATH:$HOME/.cabal/bin:$(npm bin)
+ cabal test