Skip to content

Commit

Permalink
Merge pull request #27 from brandonchinn178/updates
Browse files Browse the repository at this point in the history
Updates
  • Loading branch information
brandonchinn178 committed Jun 13, 2023
2 parents 5ca7a15 + 8b88158 commit b4895eb
Show file tree
Hide file tree
Showing 24 changed files with 406 additions and 382 deletions.
159 changes: 106 additions & 53 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,90 +6,143 @@ on:
- main
workflow_call:

env:
TOML_TEST_VERSION: '1.2.0'

jobs:
build_and_test:
strategy:
matrix:
stack_yaml:
- stack-ghc-8.6.yaml
- stack-ghc-8.8.yaml
- stack-ghc-8.10.yaml
- stack-ghc-9.0.yaml
- stack-ghc-9.2.yaml
- stack-ghc-9.4.yaml
include:
- stack_yaml: stack.yaml
latest: true

name: build_and_test (${{ matrix.stack_yaml }})
runs-on: ubuntu-22.04
env:
STACK_YAML: ${{ matrix.stack_yaml }}
name: build_and_test
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3

- name: Install toml-test
env:
TOML_TEST_VERSION: '1.2.0'
-
uses: actions/checkout@v3
-
name: Install toml-test
run: |
curl -sSL \
"https://github.com/BurntSushi/toml-test/releases/download/v${TOML_TEST_VERSION}/toml-test-v${TOML_TEST_VERSION}-linux-amd64.gz" \
-o toml-test.gz
gunzip toml-test.gz
chmod +x toml-test
mv toml-test /usr/local/bin/
- uses: actions/cache@v3
curl -fsSL "https://github.com/BurntSushi/toml-test/releases/download/v${TOML_TEST_VERSION}/toml-test-v${TOML_TEST_VERSION}-linux-amd64.gz" \
| gunzip \
> /usr/local/bin/toml-test
chmod +x /usr/local/bin/toml-test
-
uses: actions/cache@v3
with:
path: ~/.stack
key: ${{ runner.os }}-stack-cache-${{ hashFiles(matrix.stack_yaml, 'package.yaml') }}
- name: Build + test
key: ${{ runner.os }}-stack-cache-${{ hashFiles('stack.yaml', 'package.yaml') }}
-
name: Build + test
run: stack test --coverage

- name: Check that Cabal file was generated
-
name: Check that Cabal file was generated
run: git diff --exit-code '*.cabal'

# upload coverage data
- name: Generate coverage data
run: stack install hpc-lcov && hpc-lcov
- uses: codecov/codecov-action@v2
-
name: Generate coverage data
run: |
HPC_LCOV_VERSION=1.1.1
curl -fsSL \
"https://github.com/brandonchinn178/hpc-lcov/releases/download/v${HPC_LCOV_VERSION}/hpc-lcov-${HPC_LCOV_VERSION}-linux-x86_64" \
-o /usr/local/bin/hpc-lcov
chmod +x /usr/local/bin/hpc-lcov
hpc-lcov
-
uses: codecov/codecov-action@v2
with:
files: lcov.info
if: ${{ matrix.latest }}

ghc_compat_test:
strategy:
matrix:
ghc_version:
- '9.0'
- '9.2'
- '9.4'
- '9.6'
include:
- ghc_version: '9.0'
oldest: true

name: ghc_compat_test (${{ matrix.ghc_version }})
runs-on: ubuntu-latest

steps:
-
uses: actions/checkout@v3
-
name: Install toml-test
run: |
curl -fsSL "https://github.com/BurntSushi/toml-test/releases/download/v${TOML_TEST_VERSION}/toml-test-v${TOML_TEST_VERSION}-linux-amd64.gz" \
| gunzip \
> /usr/local/bin/toml-test
chmod +x /usr/local/bin/toml-test
-
id: setup
name: Set up GHC ${{ matrix.ghc_version }}
uses: haskell-actions/setup@v2
with:
ghc-version: ${{ matrix.ghc_version }}
-
name: Configure the build
run:
cabal configure
--enable-test
--test-show-details=streaming
-
if: ${{ matrix.oldest }}
name: Use oldest dependencies
run: cabal configure --enable-append --prefer-oldest
-
name: Get build plan
run: cabal build --dry-run
-
name: Get current month to clear cache
run: echo "CURR_MONTH=$(date +%B)" | tee -a "$GITHUB_ENV"
-
uses: actions/cache@v3
with:
path: ${{ steps.setup.outputs.cabal-store }}
key: ${{ runner.os }}-cabal-cache-${{ env.CURR_MONTH }}-${{ matrix.ghc_version }}-${{ hashFiles('**/plan.json') }}
restore-keys: |
${{ runner.os }}-cabal-cache-${{ env.CURR_MONTH }}-${{ matrix.ghc_version }}-
-
name: Build + Test
run: cabal test

lint:
runs-on: ubuntu-latest
env:
FOURMOLU_VERSION: '0.7.0.1'
FOURMOLU_VERSION: '0.13.0.0'
steps:
- uses: actions/checkout@v3

- name: Install fourmolu
-
uses: actions/checkout@v3
-
name: Install fourmolu
run: |
curl -sSL \
"https://github.com/fourmolu/fourmolu/releases/download/v${FOURMOLU_VERSION}/fourmolu-${FOURMOLU_VERSION}-linux-x86_64" \
-o /usr/local/bin/fourmolu
chmod +x /usr/local/bin/fourmolu
- name: Run fourmolu
-
name: Run fourmolu
run: fourmolu -m check $(git ls-files '*.hs')

check_sdist:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
-
uses: actions/checkout@v3
-
uses: actions/cache@v3
with:
path: ~/.stack
key: ${{ runner.os }}-check_sdist-${{ hashFiles('stack.yaml') }}

- name: Strip unreleased section from CHANGELOG
-
name: Strip unreleased section from CHANGELOG
run: sed -i -n '/^## Unreleased/d; /^## /,$p' CHANGELOG.md

- name: Create sdist bundle
-
name: Create sdist bundle
run: stack sdist --test-tarball --tar-dir .

- uses: actions/upload-artifact@v3
-
uses: actions/upload-artifact@v3
with:
name: toml-reader-sdist
path: toml-reader-*.tar.gz
36 changes: 18 additions & 18 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,43 +11,43 @@ jobs:
- ci

steps:
- uses: actions/checkout@v3
with:
ref: main

- uses: actions/download-artifact@v3
-
uses: actions/checkout@v3
-
uses: actions/download-artifact@v3
with:
name: toml-reader-sdist
path: ./sdist/

- uses: brandonchinn178/haskell-actions/parse-cabal-file@parse-cabal-file
-
id: cabal_file
uses: haskell-actions/parse-cabal-file@v1
with:
cabal_file: toml-reader.cabal
- name: Set version label
-
name: Set version label
run: echo 'VERSION=v${{ steps.cabal_file.outputs.version }}' >> "${GITHUB_ENV}"

- name: Load Hackage token secret name
-
id: hackage_token_secret
name: Load Hackage token secret name
run: |
USERNAME="$(echo "${GITHUB_ACTOR}" | tr '[:lower:]' '[:upper:]' | tr '-' '_')"
echo "name=HACKAGE_TOKEN_${USERNAME}" >> "${GITHUB_OUTPUT}"
- name: Get CHANGELOG section
-
name: Get CHANGELOG section
run: |
sed '/^## Unreleased/,/^$/d' CHANGELOG.md > /tmp/changelog-without-unreleased
if [[ "$(head -n 1 /tmp/changelog-without-unreleased)" != "## ${VERSION}" ]]; then
echo "CHANGELOG doesn't look updated" >&2
exit 1
fi
sed '1 d; /^## v/,$ d' /tmp/changelog-without-unreleased > /tmp/changelog-body
- uses: brandonchinn178/haskell-actions/hackage-upload@hackage-upload
-
uses: haskell-actions/hackage-publish@v1
with:
archive: sdist/toml-reader-*.tar.gz
token: ${{ secrets[steps.hackage_token_secret.outputs.name] }}

- uses: softprops/action-gh-release@v1
hackageToken: ${{ secrets[steps.hackage_token_secret.outputs.name] }}
packagesPath: ./sdist/
-
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ env.VERSION }}
body_path: /tmp/changelog-body
Expand Down
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
.stack-work/
stack-ghc-*.yaml.lock

cabal.project.local*
dist-newstyle/

.DS_Store
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
## Unreleased

## v0.2.1.0

* Drop support for GHC < 9.0

## v0.2.0.0

* Add getFieldOr [#10](https://github.com/brandonchinn178/toml-reader/issues/10)
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# toml-reader

[![](https://img.shields.io/github/workflow/status/brandonchinn178/toml-reader/CI/main)](https://github.com/brandonchinn178/toml-reader/actions)
[![GitHub Actions](https://img.shields.io/github/actions/workflow/status/brandonchinn178/toml-reader/ci.yml?branch=main)](https://github.com/brandonchinn178/toml-reader/actions?query=branch%3Amain)
[![](https://img.shields.io/codecov/c/gh/brandonchinn178/toml-reader)](https://app.codecov.io/gh/brandonchinn178/toml-reader)
[![](https://img.shields.io/hackage/v/toml-reader)](https://hackage.haskell.org/package/toml-reader)

Expand Down
4 changes: 4 additions & 0 deletions cabal.project
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
packages: .

program-options
ghc-options: -Werror
3 changes: 3 additions & 0 deletions fourmolu.yaml
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
indentation: 2
indent-wheres: true
function-arrows: leading-args
haddock-style: single-line
haddock-style-module: multi-line-compact
29 changes: 14 additions & 15 deletions package.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: toml-reader
version: 0.2.0.0
version: 0.2.1.0
category: TOML, Text, Configuration
synopsis: TOML format parser compliant with v1.0.0.
description: TOML format parser compliant with v1.0.0. See README.md for more details.
Expand All @@ -15,24 +15,23 @@ extra-source-files:

github: brandonchinn178/toml-reader

ghc-options: -Wall
when:
- condition: impl(ghc >= 8.0)
ghc-options:
- -Wcompat
- -Wincomplete-record-updates
- -Wincomplete-uni-patterns
- -Wnoncanonical-monad-instances
ghc-options:
- -Wall
- -Wcompat
- -Wincomplete-record-updates
- -Wincomplete-uni-patterns
- -Wnoncanonical-monad-instances
- -Wunused-packages

library:
source-dirs: src
dependencies:
- base >= 4.9 && < 5
- containers >= 0.6.0.1 && < 0.7
- megaparsec >= 7.0.5 && < 9.4
- parser-combinators >= 1.1.0 && < 1.4
- text >= 1.2.3.1 && < 2.1
- time >= 1.8.0.2 && < 1.13
- base >= 4.15 && < 5
- containers < 0.7
- megaparsec < 9.5
- parser-combinators < 1.4
- text < 2.1
- time < 1.13

tests:
toml-reader-tests:
Expand Down

0 comments on commit b4895eb

Please sign in to comment.