mirror of
https://github.com/tfausak/witch.git
synced 2024-09-11 06:45:27 +03:00
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:
parent
3727ccb635
commit
dc670ce6c8
@ -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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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"
|
|
||||||
}
|
|
12
.github/dependabot.yaml
vendored
12
.github/dependabot.yaml
vendored
@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"updates": [
|
|
||||||
{
|
|
||||||
"directory": "/",
|
|
||||||
"package-ecosystem": "github-actions",
|
|
||||||
"schedule": {
|
|
||||||
"interval": "weekly"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"version": 2
|
|
||||||
}
|
|
6
.github/dependabot.yml
vendored
Normal file
6
.github/dependabot.yml
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
updates:
|
||||||
|
- directory: /
|
||||||
|
package-ecosystem: github-actions
|
||||||
|
schedule:
|
||||||
|
interval: weekly
|
||||||
|
version: 2
|
106
.github/workflows/ci.yml
vendored
Normal file
106
.github/workflows/ci.yml
vendored
Normal 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
|
199
.github/workflows/workflow.yaml
vendored
199
.github/workflows/workflow.yaml
vendored
@ -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"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
41
.hlint.yaml
41
.hlint.yaml
@ -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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
@ -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
8
README.md
Normal 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>.
|
36
witch.cabal
36
witch.cabal
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user