Small program for building and uploading packages and documentation
built with the stack
build tool to a hackage server.
For instance, to build and upload package documentation to https://hackage.haskell.org/ for a package candidate:
$ hup docboth --candidate --user myHackageUserID --password myHackagePassword
Instead of providing a password on the command line, you can set the
HUP_HACKAGE_PASSWORD
environment variable and hup
will use that as the
password.
In addition to stack
, hup
requires the cabal
executable,
but will install an appropriate cabal
if it doesn't find one in the
binaries for the package snapshot your project is using.
The recommended install method is to run:
$ stack --resolver=lts-11 build --copy-bins hup
On Linux, this will install hup
to your ~/.local/bin
directory --
ensure that it's on your PATH, and you're good to go.
Alternatively, you can download a statically linked executable (for Linux, AMD64 architecture) from the "Releases" page.
Try something like:
$ cd /path/to/my/project
$ stack build
$ hup packboth -u myHackageUserID -p myHackagePassword
$ hup docboth -u myHackageUserID -p myHackagePassword
-
hup [COMMAND] ... [OPTIONS]
Build and/or upload packages or documentation to a hackage server. A server url should be of the format PROTOCOL://SERVER[:PORT]/, and defaults to https://hackage.haskell.org/ if not specified.
A password can also be given in the HUP_HACKAGE_PASSWORD environment variable instead of on the command line.
'hup --help=all' will give help for all commands.
-
Commands:
packbuild Build source distribution .tgz for a package. packup Upload FILE as a package (or candidate package). packboth Build source distribution .tgz and upload as package (or candidate package). docbuild Build documentation for a package. docup Upload FILE as documentation. docboth Build and upload documentation for a package.
-
Common flags:
-v --verbose be verbose -h --help Display help message -V --version Print version information --numeric-version Print just the version number
'--help=bash' will output code for bash command-line completion.
-
hup packbuild [OPTIONS]
Build source distribution .tgz for a package.
-
hup packup [OPTIONS] FILE
Upload FILE as a package (or candidate package).
Flags:
-s --server=URL -c --candidate -u --user=USER -p --password=PASSWORD
-
hup packboth [OPTIONS]
Build source distribution .tgz and upload as package (or candidate package).
Flags:
-s --server=URL -c --candidate -u --user=USER -p --password=PASSWORD
-
hup docbuild [OPTIONS]
Build documentation for a package.
Flags:
-e --executables Run haddock for Executables targets -t --tests Run haddock for Test Suite targets -i --internal Run haddock for internal modules and include all symbols --haddock-arguments=ARGS extra args to pass to haddock -q --quick quick build - don't build docco for dependencies (links may be broken)
-
hup docup [OPTIONS] FILE
Upload FILE as documentation.
Flags:
-s --server=URL -c --candidate -u --user=USER -p --password=PASSWORD
-
hup docboth [OPTIONS]
Build and upload documentation for a package.
Flags:
-e --executables Run haddock for Executables targets -t --tests Run haddock for Test Suite targets -i --internal Run haddock for internal modules and include all symbols --haddock-arguments=ARGS extra args to pass to haddock -q --quick quick build - don't build docco for dependencies (links may be broken) -s --server=URL -c --candidate -u --user=USER -p --password=PASSWORD
For documentation of the library, see the Hackage documentation.
This is not actually a bug in hup
, but is found in e.g. Docker containers
that don't have all the packages needed for networking - see e.g.
here on StackOverflow.
You will need to install networking packages appropriate for your distro - on Ubuntu, something like ca-certificates, libgnutls28 (or another version of the GNU TLS library), and netbase.
I get some sort of error when building documents that says "...haddock: internal error: ... hGetContents: invalid argument (invalid byte sequence)"
Again, this isn't actually a bug in hup
, but happens (e.g. in Docker
containers) when the system locale is not properly set up (see a bug report
here arising from a
similar issue). Annoyingly, haddock
depends on the locale being properly set,
though it doesn't really seem necessary.
Try running locale-gen "en_US.UTF-8"
to generate an appropriate UTF-8
locale, and export LC_ALL="en_US.UTF-8"
so that the locale can be found
from environment variables.
To enable bash command-completion:
Run
$ hup --help=bash > hup.complete
then either "source hup.complete
" or ". hup.complete
".
Uses "https://hackage.haskell.org/
" as the default server location,
but see the DefaultServerUrl
module if you want to patch this to
something else before installing.
- Some very basic tests of library and app functionality are run on MS Windows and MacOS virtual machines using GitHub and Appveyor's CI/CD capabilities, but no extensive testing on those platforms is performed.
So that actual bugs and defects aren't cluttered by other issues, proposed features and feature requests are maintained as closed issues on GitHub with the labels "enhancement" and "incomplete" (see here).
hup
is a Haskellified version of Oleg Grenrus's script,
which is a stack-enabled version of Eric Mertens's script.