Add buildDhall*Package support for generating documentation

The `buildDhall{Directory,GitHub}Package` utilities now take an
optional `document` argument for generating documentation using
`dhall-docs`.  The documentation is stored underneath the `./docs`
subdirectory of the build product.
This commit is contained in:
Gabriel Gonzalez 2020-11-25 22:02:26 -08:00 committed by Emery Hemingway
parent 86b651f169
commit 6dac8e6817
4 changed files with 57 additions and 29 deletions

View file

@ -14,12 +14,17 @@ lib.makePackageOverridable
, src
, # The file to import, relative to the root directory
file ? "package.dhall"
# Set to `true` to generate documentation for the package
, document ? false
}:
buildDhallPackage {
inherit name dependencies source;
buildDhallPackage
( { inherit name dependencies source;
code = "${src}/${file}";
}
code = "${src}/${file}";
}
// lib.optionalAttrs document { documentationRoot = src; }
)
)

View file

@ -12,6 +12,8 @@ lib.makePackageOverridable
directory ? ""
, # The file to import, relative to the above directory
file ? "package.dhall"
# Set to `true` to generate documentation for the package
, document ? false
# Arguments passed through to `fetchFromGitHub`
, owner
@ -22,29 +24,32 @@ lib.makePackageOverridable
, ...
}@args:
buildDhallPackage {
inherit name dependencies source;
let
src = fetchFromGitHub ({
name = "${name}-source";
code =
let
src = fetchFromGitHub ({
name = "${name}-source";
inherit owner repo rev;
} // removeAttrs args [
"name"
"dependencies"
"document"
"source"
"directory"
"file"
"owner"
"repo"
"rev"
]);
inherit owner repo rev;
} // removeAttrs args [
"name"
"dependencies"
"source"
"directory"
"file"
"owner"
"repo"
"rev"
]);
prefix = lib.optionalString (directory != "") "${directory}/";
prefix = lib.optionalString (directory != "") "${directory}/";
in
buildDhallPackage
( { inherit name dependencies source;
in
"${src}/${prefix}${file}";
}
code = "${src}/${prefix}${file}";
}
// lib.optionalAttrs document
{ documentationRoot = "${src}/${prefix}"; }
)
)

View file

@ -1,4 +1,4 @@
{ dhall, haskell, lib, lndir, runCommand, writeText }:
{ dhall, dhall-docs, haskell, lib, lndir, runCommand, writeText }:
{ name
@ -31,6 +31,12 @@
# space within the Nix store, but if you set the following `source` option to
# `true` then the package will also include `source.dhall`.
, source ? false
# Directory to generate documentation for (i.e. as the `--input` option to the
# `dhall-docs` command.)
#
# If `null`, then no documentation is generated.
, documentationRoot ? null
}:
let
@ -42,8 +48,12 @@ let
cache = ".cache";
data = ".local/share";
cacheDhall = "${cache}/dhall";
dataDhall = "${data}/dhall";
sourceFile = "source.dhall";
in
@ -71,4 +81,10 @@ in
echo "missing $SHA_HASH" > $out/binary.dhall
${lib.optionalString (!source) "rm $out/${sourceFile}"}
${lib.optionalString (documentationRoot != null) ''
mkdir -p $out/${dataDhall}
XDG_DATA_HOME=$out/${data} ${dhall-docs}/bin/dhall-docs --input '${documentationRoot}' --output-link $out/docs
''}
''

View file

@ -10310,13 +10310,15 @@ in
dhall = haskell.lib.justStaticExecutables haskellPackages.dhall;
dhall-nix = haskell.lib.justStaticExecutables haskellPackages.dhall-nix;
dhall-bash = haskell.lib.justStaticExecutables haskellPackages.dhall-bash;
dhall-docs = haskell.lib.justStaticExecutables haskellPackages.dhall-docs;
dhall-lsp-server = haskell.lib.justStaticExecutables haskellPackages.dhall-lsp-server;
dhall-json = haskell.lib.justStaticExecutables haskellPackages.dhall-json;
dhall-lsp-server = haskell.lib.justStaticExecutables haskellPackages.dhall-lsp-server;
dhall-nix = haskell.lib.justStaticExecutables haskellPackages.dhall-nix;
dhall-text = haskell.lib.justStaticExecutables haskellPackages.dhall-text;