Add support for GHC 9.10, remove support for GHC 9.4 (#96)

* Upgrade to GHC 9.10

* Update badges
This commit is contained in:
Taylor Fausak 2024-05-19 10:50:19 -05:00 committed by GitHub
parent 3727ccb635
commit dc670ce6c8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 151 additions and 301 deletions

View File

@ -1,21 +0,0 @@
{
"services": {
"devcontainer": {
"command": "sh -exc 'sleep infinity'",
"image": "public.ecr.aws/acilearning/haskell:9.6.2",
"init": true,
"volumes": [
"..:/workspace",
"cabal-cache:/home/vscode/.cache/cabal",
"cabal-state:/home/vscode/.local/state/cabal"
],
"working_dir": "/workspace"
}
},
"volumes": {
"cabal-cache": null,
"cabal-state": {
"external": true
}
}
}

View File

@ -1,14 +0,0 @@
{
"customizations": {
"vscode": {
"extensions": [
"taylorfausak.purple-yolk"
]
}
},
"dockerComposeFile": "compose.yaml",
"initializeCommand": "docker volume create cabal-state",
"postCreateCommand": "cabal update",
"service": "devcontainer",
"workspaceFolder": "/workspace"
}

View File

@ -1,12 +0,0 @@
{
"updates": [
{
"directory": "/",
"package-ecosystem": "github-actions",
"schedule": {
"interval": "weekly"
}
}
],
"version": 2
}

6
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,6 @@
updates:
- directory: /
package-ecosystem: github-actions
schedule:
interval: weekly
version: 2

106
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,106 @@
jobs:
build:
name: GHC ${{ matrix.ghc }} on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- run: mkdir artifact
- id: haskell
uses: haskell-actions/setup@v2
with:
ghc-version: ${{ matrix.ghc }}
- run: ghc-pkg list
- run: cabal sdist --output-dir artifact
- run: cabal configure --enable-tests --flags=pedantic --jobs
- run: cat cabal.project.local
- run: cp cabal.project.local artifact
- run: cabal freeze
- run: cat cabal.project.freeze
- run: cp cabal.project.freeze artifact
- run: cabal outdated --v2-freeze-file
- uses: actions/cache@v4
with:
key: ${{ matrix.os }}-${{ matrix.ghc }}-${{ hashFiles('cabal.project.freeze') }}
path: ${{ steps.haskell.outputs.cabal-store }}
restore-keys: ${{ matrix.os }}-${{ matrix.ghc }}-
- run: cabal build --only-download
- run: cabal build --only-dependencies
- run: cabal build
- run: tar --create --file artifact.tar --verbose artifact
- uses: actions/upload-artifact@v4
with:
name: witch-${{ github.sha }}-${{ matrix.os }}-${{ matrix.ghc }}
path: artifact.tar
- run: cabal run -- witch-test-suite --randomize --strict
strategy:
matrix:
include:
- ghc: '9.10'
os: macos-13
- ghc: '9.10'
os: macos-14
- ghc: 9.6
os: ubuntu-22.04
- ghc: 9.8
os: ubuntu-22.04
- ghc: '9.10'
os: ubuntu-22.04
- ghc: '9.10'
os: windows-2022
cabal:
name: Cabal
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: cabal check
gild:
name: Gild
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: tfausak/cabal-gild-setup-action@v2
- run: cabal-gild --input witch.cabal --mode check
hlint:
name: HLint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: haskell-actions/hlint-setup@9e09cc3653fc13702000a35f638a27b064adfbbe
- uses: haskell-actions/hlint-run@v2
with:
fail-on: status
ormolu:
name: Ormolu
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: haskell-actions/run-ormolu@v15
release:
if: ${{ github.event_name == 'release' }}
name: Release
needs: build
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4
with:
name: witch-${{ github.sha }}-ubuntu-22.04-9.10
- run: tar --extract --file artifact.tar --verbose
- uses: softprops/action-gh-release@v2
with:
files: artifact/witch-${{ github.event.release.tag_name }}.tar.gz
- run: cabal upload --publish --username '${{ secrets.HACKAGE_USERNAME }}' --password '${{ secrets.HACKAGE_PASSWORD }}' artifact/witch-${{ github.event.release.tag_name }}.tar.gz
name: CI
on:
pull_request:
branches:
- main
push:
branches:
- main
release:
types:
- created
schedule:
- cron: 0 0 * * 1

View File

@ -1,199 +0,0 @@
{
"jobs": {
"build": {
"name": "Build on ${{ matrix.platform }} with GHC ${{ matrix.ghc }}",
"runs-on": "${{ matrix.platform }}-${{ matrix.version }}",
"steps": [
{
"uses": "actions/checkout@v4"
},
{
"run": "mkdir artifact"
},
{
"id": "artifact",
"run": "echo 'directory=artifact/${{ matrix.platform }}-${{ matrix.ghc }}' >> $GITHUB_OUTPUT",
"shell": "bash"
},
{
"run": "mkdir ${{ steps.artifact.outputs.directory }}"
},
{
"id": "haskell",
"uses": "haskell-actions/setup@v2",
"with": {
"cabal-version": "3.10.2.1",
"ghc-version": "${{ matrix.ghc }}"
}
},
{
"run": "cabal sdist --output-dir ${{ steps.artifact.outputs.directory }}"
},
{
"run": "cabal configure --enable-optimization=2 --flags pedantic --jobs"
},
{
"run": "cat cabal.project.local"
},
{
"run": "cp cabal.project.local ${{ steps.artifact.outputs.directory }}"
},
{
"run": "cabal freeze"
},
{
"run": "cat cabal.project.freeze"
},
{
"run": "cp cabal.project.freeze ${{ steps.artifact.outputs.directory }}"
},
{
"run": "cabal outdated --v2-freeze-file cabal.project.freeze"
},
{
"uses": "actions/cache@v3",
"with": {
"key": "${{ matrix.platform }}-${{ matrix.ghc }}-${{ hashFiles('cabal.project.freeze') }}",
"path": "${{ steps.haskell.outputs.cabal-store }}",
"restore-keys": "${{ matrix.platform }}-${{ matrix.ghc }}-"
}
},
{
"run": "cabal build --only-download"
},
{
"run": "cabal build --only-dependencies"
},
{
"run": "cabal build"
},
{
"uses": "actions/upload-artifact@v3",
"with": {
"name": "witch-${{ github.sha }}",
"path": "artifact"
}
},
{
"run": "cabal run witch-test-suite"
}
],
"strategy": {
"matrix": {
"include": [
{
"ghc": "9.4.7",
"platform": "macos",
"version": "12"
},
{
"ghc": "9.4.7",
"platform": "ubuntu",
"version": "22.04"
},
{
"ghc": "9.6.2",
"platform": "ubuntu",
"version": "22.04"
},
{
"ghc": "9.8.1",
"platform": "ubuntu",
"version": "22.04"
},
{
"extension": ".exe",
"ghc": "9.4.7",
"platform": "windows",
"version": "2022"
}
]
}
}
},
"cabal": {
"name": "Cabal",
"runs-on": "ubuntu-22.04",
"steps": [
{
"uses": "actions/checkout@v4"
},
{
"run": "cabal check"
}
]
},
"hlint": {
"name": "HLint",
"runs-on": "ubuntu-22.04",
"steps": [
{
"uses": "actions/checkout@v4"
},
{
"uses": "haskell-actions/hlint-setup@v2",
"with": {
"version": 3.5
}
},
{
"uses": "haskell-actions/hlint-run@v2",
"with": {
"fail-on": "status"
}
}
]
},
"ormolu": {
"name": "Ormolu",
"runs-on": "ubuntu-22.04",
"steps": [
{
"uses": "actions/checkout@v4"
},
{
"uses": "haskell-actions/run-ormolu@v15"
}
]
},
"release": {
"if": "github.event_name == 'release'",
"name": "Release",
"needs": "build",
"runs-on": "ubuntu-22.04",
"steps": [
{
"uses": "actions/download-artifact@v3",
"with": {
"name": "witch-${{ github.sha }}",
"path": "artifact"
}
},
{
"uses": "svenstaro/upload-release-action@v2",
"with": {
"asset_name": "witch-${{ github.event.release.tag_name }}.tar.gz",
"file": "artifact/ubuntu-9.4.7/witch-${{ github.event.release.tag_name }}.tar.gz"
}
},
{
"run": "cabal upload --publish --username '${{ secrets.HACKAGE_USERNAME }}' --password '${{ secrets.HACKAGE_PASSWORD }}' artifact/ubuntu-9.4.7/witch-${{ github.event.release.tag_name }}.tar.gz"
}
]
}
},
"name": "Workflow",
"on": {
"push": null,
"release": {
"types": [
"created"
]
},
"schedule": [
{
"cron": "0 0 * * 1"
}
]
}
}

View File

@ -1,29 +1,12 @@
[ - group:
{ enabled: true
"group": { name: dollar
"enabled": true, - group:
"name": "dollar" enabled: true
} name: generalise
}, - ignore:
{ name: Use lambda-case
"group": { - ignore:
"enabled": true, name: Use tuple-section
"name": "generalise" - ignore:
} name: Redundant bracket
},
{
"ignore": {
"name": "Use lambda-case"
}
},
{
"ignore": {
"name": "Use tuple-section"
}
},
{
"ignore": {
"name": "Redundant bracket"
}
}
]

View File

@ -1,9 +0,0 @@
# Witch
[![Workflow](https://github.com/tfausak/witch/actions/workflows/workflow.yaml/badge.svg)](https://github.com/tfausak/witch/actions/workflows/workflow.yaml)
[![Hackage](https://img.shields.io/hackage/v/witch)](https://hackage.haskell.org/package/witch)
[![Stackage](https://www.stackage.org/package/witch/badge/nightly?label=stackage)](https://www.stackage.org/package/witch)
:mage_woman: Convert values from one type into another.
See the documentation on Hackage: <https://hackage.haskell.org/package/witch>.

8
README.md Normal file
View File

@ -0,0 +1,8 @@
# Witch
[![CI](https://github.com/tfausak/witch/actions/workflows/ci.yml/badge.svg)](https://github.com/tfausak/witch/actions/workflows/ci.yml)
[![Hackage](https://badgen.net/hackage/v/witch)](https://hackage.haskell.org/package/witch)
:mage_woman: Convert values from one type into another.
See the documentation on Hackage: <https://hackage.haskell.org/package/witch>.

View File

@ -1,14 +1,15 @@
cabal-version: 2.2 cabal-version: 2.2
name: witch name: witch
version: 1.2.1.0 version: 1.2.1.0
synopsis: Convert values from one type into another. synopsis: Convert values from one type into another.
description: Witch converts values from one type into another. description: Witch converts values from one type into another.
build-type: Simple build-type: Simple
category: Data category: Data
extra-source-files: CHANGELOG.markdown README.markdown extra-doc-files:
license-file: LICENSE.markdown CHANGELOG.md
README.md
license-file: LICENSE.txt
license: MIT license: MIT
maintainer: Taylor Fausak maintainer: Taylor Fausak
@ -18,17 +19,17 @@ source-repository head
flag pedantic flag pedantic
default: False default: False
description: Enables @-Werror@, which turns warnings into errors.
manual: True manual: True
common library common library
build-depends: base ^>=4.18.0.0 || ^>=4.19.0.0 || ^>=4.20.0.0
build-depends: build-depends:
, base >= 4.16.0 && < 4.20 bytestring ^>=0.11.4.0 || ^>=0.12.0.2,
, bytestring >= 0.11.3 && < 0.13 containers ^>=0.6.7 || ^>=0.7,
, containers >= 0.6.5 && < 0.8 tagged ^>=0.8.8,
, tagged >= 0.8.6 && < 0.9 text ^>=2.0.2 || ^>=2.1,
, text >= 1.2.5 && < 1.3 || >= 2.0 && < 2.2 time ^>=1.12.2 || ^>=1.14,
, time >= 1.11.1 && < 1.13
default-language: Haskell2010 default-language: Haskell2010
ghc-options: ghc-options:
-Weverything -Weverything
@ -54,7 +55,6 @@ common library
common executable common executable
import: library import: library
build-depends: witch build-depends: witch
ghc-options: ghc-options:
-rtsopts -rtsopts
@ -62,9 +62,10 @@ common executable
library library
import: library import: library
build-depends: build-depends:
, template-haskell >= 2.18 && < 2.22 template-haskell ^>=2.20.0.0 || ^>=2.21.0.0 || ^>=2.22.0.0
-- cabal-gild: discover source/library
exposed-modules: exposed-modules:
Witch Witch
Witch.Encoding Witch.Encoding
@ -74,14 +75,15 @@ library
Witch.TryFrom Witch.TryFrom
Witch.TryFromException Witch.TryFromException
Witch.Utility Witch.Utility
hs-source-dirs: source/library hs-source-dirs: source/library
test-suite witch-test-suite test-suite witch-test-suite
import: executable import: executable
build-depends: build-depends:
, HUnit >= 1.6.1 && < 1.7 HUnit ^>=1.6.2.0,
, transformers >= 0.5.6 && < 0.7 transformers ^>=0.6.1.0,
hs-source-dirs: source/test-suite hs-source-dirs: source/test-suite
main-is: Main.hs main-is: Main.hs
type: exitcode-stdio-1.0 type: exitcode-stdio-1.0