cabal-bounds: A command line program for managing the bounds/versions of the dependencies in a cabal file.
If you have several cabalized projects, then it can be quite time consuming to keep the
bounds of your dependencies up to date. Especially if you're following the, then you want
to raise your upper bounds from time to time, to allow the building with newer versions
of the dependencies.
`cabal-bounds` tries to automate this update process to some degree. So a typical update process might look like:
$> # update the version infos of all libraries
$> cabal update
$> # drops the upper bound of all dependencies in myproject.cabal
, most likely you want to ignore base
$> cabal-bounds drop --upper --ignore=base myproject.cabal
$> # create a cabal sandbox for building of myproject
$> cabal sandbox init
$> # build myproject
$> cabal install
$> # update the upper bound of all dependencies in myproject.cabal
by the cabal build information
$> cabal-bounds update --upper --ignore=base myproject.cabal distdist-sandbox-*setup-config
Examples
========
The =>
shows what the result is of the operation for every dependency. Left is the dependency before
calling the command, right the one after calling.
$> cabal drop myproject.cabal
lens >=4.0.1 && = lens
$> cabal drop --upper myproject.cabal
lens >=4.0.1 && = lens >=4.0.1
If the cabal build (the setup-config) uses `lens 4.1.2`, then the results of the update
command would be:
$> cabal update myproject.cabal setup-config
lens >=4.0.1 && = lens >=4.1.2 && <4.2
lens => lens >=4.1.2 && <4.2
$> cabal update --lower myproject.cabal setup-config
lens >=4.0.1 && = lens >=4.1.2
lens = lens >=4.1.2
lens => lens >=4.1.2
$> cabal update --upper myproject.cabal setup-config
lens >=4.0.1 && = lens >=4.0.1 && <4.2
lens >=4.0.1 => lens >=4.0.1 && <4.2
lens => lens >=4.1.2 && <4.2
Installation
============
You have to ensure, that the Cabal
library of `cabal-bounds` matches the one used by the cabal
binary:
$> cabal --version
cabal-install version 1.18.0.2
using version 1.18.1 of the Cabal library
$> cabal install --constraint="Cabal == 1.18.1" cabal-bounds
If you update the cabal
binary and the used Cabal
library changes, then you have to rebuild `cabal-bounds`.
Command Line Usage
==================
$> cabal-bounds --help
cabal-bounds [COMMAND] ... [OPTIONS]
A command line program for managing the bounds/versions of the dependencies
in a cabal file.
Common flags:
-O --only=ITEM Only the bounds of the dependency are modified.
-I --ignore=ITEM This dependency is ignored, not modified in any
way.
-o --outputCabalFile=ITEM Save modified cabal file to file, if empty, the
cabal file is modified inplace.
-h --help Display help message
-v --version Print version information
cabal-bounds drop [OPTIONS] CABAL-FILE
-U --upper Only the upper bound is dropped, otherwise both
- the lower and upper - bounds are dropped.
-l --library Only the bounds of the library are dropped.
-e --executable=ITEM Only the bounds of the executable are dropped.
-t --testsuite=ITEM Only the bounds of the test suite are dropped.
-b --benchmark=ITEM Only the bounds of the benchmark are dropped.
cabal-bounds update [OPTIONS] CABAL-FILE SETUP-CONFIG-FILE
-L --lower Only the lower bound is updated.
-U --upper Only the upper bound is updated.
-l --library Only the bounds of the library are updated.
-e --executable=ITEM Only the bounds of the executable are updated.
-t --testsuite=ITEM Only the bounds of the test suite are updated.
-b --benchmark=ITEM Only the bounds of the benchmark are updated.
Issues
======
Perhaps the currently most annoying thing is, that you have to live with the reformating of your
cabal
file done by the pretty printer of the Cabal
library.
To reformat your cabal
file without changing any bounds you can call `cabal-bounds` with the name of
a section that isn't present in the cabal
file:
$> cabal-bounds drop --executable=blub myproject.cabal
[Skip to Readme]
Downloads
- cabal-bounds-0.1.4.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
Versions [RSS] | 0.1.2, 0.1.3, 0.1.4, 0.1.5, 0.1.6, 0.1.7, 0.1.8, 0.1.9, 0.1.10, 0.1.11, 0.1.12, 0.1.13, 0.1.14, 0.1.15, 0.1.16, 0.2, 0.2.1, 0.3, 0.4, 0.4.1, 0.5, 0.6, 0.7, 0.8, 0.8.1, 0.8.2, 0.8.3, 0.8.4, 0.8.5, 0.8.6, 0.8.7, 0.8.8, 0.8.9, 0.9, 0.9.1, 0.9.2, 0.9.3, 0.9.4, 0.9.5, 1.0.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.1.0, 1.2.0, 1.3.0, 1.4.0, 1.5.0, 1.6.0, 2.0.0, 2.1.0, 2.1.1, 2.2.0, 2.2.1, 2.3.0, 2.4.0, 2.5.0, 2.6.0 (info) |
---|---|
Dependencies | base (>=3 && <5), Cabal (>=1.18.0 && <1.19), cmdargs (>=0.10.5 && <0.11), lens (>=4.0.1 && <4.1), strict (>=0.3.2 && <0.4) [details] |
License | BSD-3-Clause |
Author | Daniel Trstenjak |
Maintainer | daniel.trstenjak@gmail.com |
Category | Utils |
Source repo | head: git clone https://github.com/dan-t/cabal-bounds |
Uploaded | by DanielTrstenjak at 2014-02-24T17:42:48Z |
Distributions | |
Reverse Dependencies | 1 direct, 0 indirect [details] |
Executables | cabal-bounds |
Downloads | 42973 total (64 in the last 30 days) |
Rating | 2.0 (votes: 1) [estimated by Bayesian average] |
Your Rating | |
Status | Docs available [build log] Successful builds reported [all 1 reports] |