nixpkgs/pkgs/tools/networking/httpie/default.nix
Profpatsch 9176f20bc3 httpie: add manpage and html docs
httpie has quite extensive documentation in form of its rst readme.
With docutils it’s quite easy to convert to html.

We can also convert it to a manpage, which makes the documentation
accessible from the command line (even though it’s not quite standard
format as far as manpages go; however a lot better than nothing).
2020-03-02 00:47:23 +01:00

87 lines
2.3 KiB
Nix

{ stdenv, fetchFromGitHub, python3Packages, docutils, }:
python3Packages.buildPythonApplication rec {
pname = "httpie";
version = "2.0.0";
src = fetchFromGitHub {
owner = "jakubroztocil";
repo = "httpie";
rev = version;
sha256 = "0d0rsn5i973l9y0ws3xmnzaw4jwxdlryyjbasnlddph5mvkf7dq0";
};
outputs = [ "out" "doc" "man" ];
propagatedBuildInputs = with python3Packages; [ pygments requests setuptools ];
dontUseSetuptoolsCheck = true;
patches = [ ./strip-venv.patch ];
checkInputs = with python3Packages; [
mock
pytest
pytest-httpbin
pytestCheckHook
];
postInstall = ''
mkdir -p $man/share/man/man1
docdir=$doc/share/doc/httpie
mkdir -p $docdir/html
cp AUTHORS.rst CHANGELOG.rst CONTRIBUTING.rst $docdir
# helpfully, the readme has a `no-web` class to exclude
# the parts that are not relevant for offline docs
# this one build link was not marked however
sed -e 's/^|build|//g' -i README.rst
toHtml() {
${docutils}/bin/rst2html5 \
--strip-elements-with-class=no-web \
--title=http \
--no-generator \
--no-datestamp \
--no-source-link \
"$1" \
"$2"
}
toHtml README.rst $docdir/html/index.html
toHtml CHANGELOG.rst $docdir/html/CHANGELOG.html
toHtml CONTRIBUTING.rst $docdir/html/CONTRIBUTING.html
# change a few links to the local files
substituteInPlace $docdir/html/index.html \
--replace \
'https://github.com/jakubroztocil/httpie/blob/master/CHANGELOG.rst' \
"CHANGELOG.html" \
--replace \
'https://github.com/jakubroztocil/httpie/blob/master/CONTRIBUTING.rst' \
"CONTRIBUTING.html"
${docutils}/bin/rst2man \
--strip-elements-with-class=no-web \
--title=http \
--no-generator \
--no-datestamp \
--no-source-link \
README.rst \
$man/share/man/man1/http.1
'';
# the tests call rst2pseudoxml.py from docutils
preCheck = ''
export PATH=${docutils}/bin:$PATH
'';
meta = {
description = "A command line HTTP client whose goal is to make CLI human-friendly";
homepage = https://httpie.org/;
license = stdenv.lib.licenses.bsd3;
maintainers = with stdenv.lib.maintainers; [ antono relrod schneefux ];
};
}