haspara: A library providing definitions to work with monetary values.

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

Please see the README on GitHub at https://github.com/telostat/haspara#readme


[Skip to Readme]

Properties

Versions 0.0.0.0, 0.0.0.1, 0.0.0.2, 0.0.0.3, 0.0.0.4, 0.0.0.5, 0.0.0.7, 0.0.0.8, 0.0.0.8, 0.0.0.10
Change log CHANGELOG.md
Dependencies aeson (>=1.5.6.0 && <2.1), base (>=4.11 && <5), containers (>=0.6.4.1 && <0.7), data-default (>=0.7 && <0.8), exceptions (>=0.10.4 && <0.11), hashable (>=1.3.0.0 && <1.5), megaparsec (>=9.0.1 && <9.3), mtl (>=2.2.2 && <2.3), refined (>=0.6.3 && <0.7), safe-decimal (>=0.2.1.0 && <0.3), scientific (>=0.3.7.0 && <0.4), template-haskell (>=2.16.0.0 && <2.19), text (>=1.2.4.1 && <1.3), time (>=1.9.3 && <1.12) [details]
License MIT
Copyright Copyright (c) 2021-2022 Telostat Pte Ltd
Author Vehbi Sinan Tunalioglu
Maintainer vst@vsthost.com
Category Finance
Home page https://github.com/telostat/haspara#readme
Bug tracker https://github.com/telostat/haspara/issues
Source repo head: git clone https://github.com/telostat/haspara
Uploaded by vst at 2022-11-21T02:31:28Z

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Readme for haspara-0.0.0.8

[back to package description]

haspara

Hackage version GitHub release (latest by date) GitHub contributors GitHub

Note: This software is under development and of prototype quality at the moment. Expect significant breaking changes without notification until we reach the first minor version. Until then, we will keep bumping the patch version.

haspara is a Haskell library that provides monetary definitions and a rudimentary (and experimental) accounting functionality.

Supported GHC Versions

  1. ghc90
  2. ghc92

At the moment, there is no particular reason for not supporting ghc94 except that required settings are not done yet in Nix support files, in particular for Cabal dependency.

Testing Against GHC Versions

You can use Nix support to test against different GHC versions:

nix-build --arg compiler "\"ghc92\""
nix-build --arg compiler "\"ghc90\""

nix-build command will default to ghc90. Check ./default.nix file for the default ghc version in case that this documentation is out of date.

Development

Before committing code to repository, reformat the code:

fourmolu -i src/ test/

Compile the codebase, check warnings and errors:

cabal build -O0
cabal test -O0
cabal haddock -O0

Run hlint:

hlint src/

Run weeder:

weeder --require-hs-files

Making Releases

  1. Checkout main branch:

    git checkout main
    
  2. Ensure that your branch is up to date:

    git pull
    
  3. Update the version information in package.yaml if required, run hpack to reflect the change on the .cabal file, and recompile the project, run tests and generate Haddock documentation:

    hpack
    cabal clean
    cabal build -O0
    cabal test -O0
    cabal haddock -O0
    nix-build --arg compiler "\"ghc92\""
    nix-build --arg compiler "\"ghc90\""
    
  4. Update CHANGELOG.md file:

    git-chglog --next-tag <NEW-VERSION> -o CHANGELOG.md
    
  5. Commit, tag and push:

    git commit -am "chore(release): <NEW-VERSION>"
    git tag -a -m "Release <NEW-VERSION>" <NEW-VERSION>
    git push --follow-tags origin main
    
  6. Create the package, upload to Hackage as a candidate first and check the result:

    cabal clean
    cabal build -O0
    cabal test -O0
    cabal haddock -O0
    cabal sdist
    cabal upload <path to .tar.gz archive>
    
  7. If the candidate package release works fine, release to Hackage:

    cabal upload --publish <path to .tar.gz archive>
    

License

Copyright Telostat Pte Ltd (c) 2021-2022.

This work is licensed under MIT license. See LICENSE.