diff --git a/README.md b/README.md index 349134d..452b533 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ jobs: runs-on: ubuntu-latest # or macOS-latest, or windows-latest steps: - uses: actions/checkout@v2 - - uses: actions/setup-haskell@v1 + - uses: actions/setup-haskell@v1.1 - run: runhaskell Hello.hs ``` @@ -41,7 +41,7 @@ jobs: runs-on: ubuntu-latest # or macOS-latest, or windows-latest steps: - uses: actions/checkout@v2 - - uses: actions/setup-haskell@v1 + - uses: actions/setup-haskell@v1.1 with: ghc-version: '8.8' # Resolves to the latest point release of GHC 8.8 cabal-version: '3.0.0.0' # Exact version of Cabal @@ -59,7 +59,7 @@ jobs: runs-on: ubuntu-latest # or macOS-latest, or windows-latest steps: - uses: actions/checkout@v2 - - uses: actions/setup-haskell@v1 + - uses: actions/setup-haskell@v1.1 with: ghc-version: '8.8.3' # Exact version of ghc to use # cabal-version: 'latest'. Omitted, but defalts to 'latest' @@ -88,7 +88,7 @@ jobs: steps: - uses: actions/checkout@v2 - name: Setup Haskell - uses: actions/setup-haskell@v1 + uses: actions/setup-haskell@v1.1 with: ghc-version: ${{ matrix.ghc }} cabal-version: ${{ matrix.cabal }} @@ -156,6 +156,7 @@ Recommendation: Use the latest available version if possible. **Stack:** - `latest` (recommended) -- follows the latest release automatically. +- `2.3.1` `2.3` - `2.1.3` `2.1` - `2.1.1` - `1.9.3.1` `1.9` diff --git a/__tests__/find-haskell.test.ts b/__tests__/find-haskell.test.ts index de1ba78..77b5897 100644 --- a/__tests__/find-haskell.test.ts +++ b/__tests__/find-haskell.test.ts @@ -3,6 +3,11 @@ import {getInput} from '@actions/core'; import * as supported_versions from '../src/versions.json'; const def = getDefaults(); +const latestVersions = { + ghc: supported_versions.ghc[0], + cabal: supported_versions.cabal[0], + stack: supported_versions.stack[0] +}; const mkName = (s: string): string => `INPUT_${s.replace(/ /g, '_').toUpperCase()}`; @@ -25,8 +30,7 @@ describe('actions/setup-haskell', () => { afterEach(() => (process.env = OLD_ENV)); it('Parses action.yml to get correct default versions', () => { - const defs = {ghc: '8.10.1', cabal: '3.2.0.0', stack: '2.1.3'}; - forAll(t => expect(def[t].version).toBe(defs[t])); + forAll(t => expect(def[t].version).toBe(latestVersions[t])); }); it('Supported versions are parsed from JSON correctly', () => @@ -56,14 +60,13 @@ describe('actions/setup-haskell', () => { }); it('"latest" Versions resolve correctly', () => { - const v = {ghc: '8.6.5', cabal: '2.4.1.0', stack: '2.1.3'}; setupEnv({ - 'stack-version': '2.1', - 'ghc-version': '8.6', - 'cabal-version': '2.4' + 'stack-version': 'latest', + 'ghc-version': 'latest', + 'cabal-version': 'latest' }); const options = getOpts(def); - forAll(t => expect(options[t].resolved).toBe(v[t])); + forAll(t => expect(options[t].resolved).toBe(latestVersions[t])); }); it('Enabling stack does not disable GHC or Cabal', () => { diff --git a/dist/index.js b/dist/index.js index 2e97d94..b0c32e2 100644 --- a/dist/index.js +++ b/dist/index.js @@ -2584,7 +2584,7 @@ function escapeProperty(s) { /***/ 447: /***/ (function(module) { -module.exports = {"ghc":["8.10.1","8.8.3","8.8.2","8.8.1","8.6.5","8.6.4","8.6.3","8.6.2","8.6.1","8.4.4","8.4.3","8.4.2","8.4.1","8.2.2","8.0.2","7.10.3"],"cabal":["3.2.0.0","3.0.0.0","2.4.1.0","2.4.0.0","2.2.0.0"],"stack":["2.1.3","2.1.1","1.9.3","1.9.1","1.7.1","1.6.5","1.6.3","1.6.1","1.5.1","1.5.0","1.4.0","1.3.2","1.3.0","1.2.0"]}; +module.exports = {"ghc":["8.10.1","8.8.3","8.8.2","8.8.1","8.6.5","8.6.4","8.6.3","8.6.2","8.6.1","8.4.4","8.4.3","8.4.2","8.4.1","8.2.2","8.0.2","7.10.3"],"cabal":["3.2.0.0","3.0.0.0","2.4.1.0","2.4.0.0","2.2.0.0"],"stack":["2.3.1","2.1.3","2.1.1","1.9.3","1.9.1","1.7.1","1.6.5","1.6.3","1.6.1","1.5.1","1.5.0","1.4.0","1.3.2","1.3.0","1.2.0"]}; /***/ }), @@ -10721,13 +10721,11 @@ exports.installTool = installTool; async function stack(version, os) { core.info(`Attempting to install stack ${version}`); const build = { - linux: 'linux-x86_64-static', + linux: `linux-x86_64${version >= '2.3.1' ? '' : '-static'}`, darwin: 'osx-x86_64', win32: 'windows-x86_64' }[os]; - const url = version === 'latest' - ? `https://get.haskellstack.org/stable/${build}.tar.gz` - : `https://github.com/commercialhaskell/stack/releases/download/v${version}/stack-${version}-${build}.tar.gz`; + const url = `https://github.com/commercialhaskell/stack/releases/download/v${version}/stack-${version}-${build}.tar.gz`; const p = await tc.downloadTool(`${url}`).then(tc.extractTar); const [stackPath] = await glob_1.create(`${p}/stack*`, { implicitDescendants: false diff --git a/src/installer.ts b/src/installer.ts index 4dc1402..8057ac5 100644 --- a/src/installer.ts +++ b/src/installer.ts @@ -135,15 +135,12 @@ export async function installTool( async function stack(version: string, os: OS): Promise { core.info(`Attempting to install stack ${version}`); const build = { - linux: 'linux-x86_64-static', + linux: `linux-x86_64${version >= '2.3.1' ? '' : '-static'}`, darwin: 'osx-x86_64', win32: 'windows-x86_64' }[os]; - const url = - version === 'latest' - ? `https://get.haskellstack.org/stable/${build}.tar.gz` - : `https://github.com/commercialhaskell/stack/releases/download/v${version}/stack-${version}-${build}.tar.gz`; + const url = `https://github.com/commercialhaskell/stack/releases/download/v${version}/stack-${version}-${build}.tar.gz`; const p = await tc.downloadTool(`${url}`).then(tc.extractTar); const [stackPath] = await glob(`${p}/stack*`, { implicitDescendants: false diff --git a/src/versions.json b/src/versions.json index e90fef1..ecc96dd 100644 --- a/src/versions.json +++ b/src/versions.json @@ -19,6 +19,7 @@ ], "cabal": ["3.2.0.0", "3.0.0.0", "2.4.1.0", "2.4.0.0", "2.2.0.0"], "stack": [ + "2.3.1", "2.1.3", "2.1.1", "1.9.3",