I've already got a few packages on hackage, but I'd like to upload a few more, but I'm finding the workflow management particularly excessive. Here's what I'd like to do roughly:
1. Choose a number of stack snapshots I'd like my package to successfully build and test against.
2. Automatically apply appropriate version bounds to dependencies in my cabal file based on those snapshots.
3. When these changes are pushed to Github, attempt to compile them using Travis CI, against all the stack snapshots chosen.
4. If we do a push to a particular branch or with particular tag, this signifies we're attempting a release. Attempt to compile using Travis CI, perform the tests. If the compile and tests are successful, push a separate commit, adjust the "source-repository" field in github to point to that release commit (not to master) and upload to hackage.
I'm currently doing all of this manually but it's increasingly a bit of a pain. Is there tooling to help me automate this?
> 2. Automatically apply appropriate version bounds to dependencies in my cabal
> file based on those snapshots.
I've never used 'stack', but I think it mostly boils down to setting the
appropriate snapshot dependency constraints and ghc version for the 'cabal'
run and therefore 'cabal-bounds' should work in the same way as for
a direct 'cabal' run.
'cabal-bounds' only widdens the version bounds of a dependency, so
calling it for builds of multiple 'stack' snapshots should work.
So building your package for each snapshot and just calling
'cabal-bounds update' might just work.