diff options
Diffstat (limited to 'nixpkgs/doc/doc-support')
-rw-r--r-- | nixpkgs/doc/doc-support/default.nix | 26 | ||||
-rw-r--r-- | nixpkgs/doc/doc-support/lib-function-docs.nix | 37 | ||||
-rw-r--r-- | nixpkgs/doc/doc-support/lib-function-locations.nix | 24 | ||||
-rw-r--r-- | nixpkgs/doc/doc-support/parameters.xml | 10 | ||||
-rw-r--r-- | nixpkgs/doc/doc-support/xmlformat.conf | 72 |
5 files changed, 136 insertions, 33 deletions
diff --git a/nixpkgs/doc/doc-support/default.nix b/nixpkgs/doc/doc-support/default.nix index 429c7a5fbe80..cfa7cbdc8283 100644 --- a/nixpkgs/doc/doc-support/default.nix +++ b/nixpkgs/doc/doc-support/default.nix @@ -3,8 +3,23 @@ let inherit (pkgs) lib; inherit (lib) hasPrefix removePrefix; - locationsXml = import ./lib-function-locations.nix { inherit pkgs nixpkgs; }; - functionDocs = import ./lib-function-docs.nix { inherit locationsXml pkgs; }; + libsets = [ + { name = "asserts"; description = "assertion functions"; } + { name = "attrsets"; description = "attribute set functions"; } + { name = "strings"; description = "string manipulation functions"; } + { name = "versions"; description = "version string functions"; } + { name = "trivial"; description = "miscellaneous functions"; } + { name = "lists"; description = "list manipulation functions"; } + { name = "debug"; description = "debugging functions"; } + { name = "options"; description = "NixOS / nixpkgs option handling"; } + { name = "path"; description = "path functions"; } + { name = "filesystem"; description = "filesystem functions"; } + { name = "sources"; description = "source filtering functions"; } + { name = "cli"; description = "command-line serialization functions"; } + ]; + + locationsXml = import ./lib-function-locations.nix { inherit pkgs nixpkgs libsets; }; + functionDocs = import ./lib-function-docs.nix { inherit locationsXml pkgs libsets; }; version = pkgs.lib.version; epub-xsl = pkgs.writeText "epub.xsl" '' @@ -30,7 +45,10 @@ let # NB: This file describes the Nixpkgs manual, which happens to use module # docs infra originally developed for NixOS. optionsDoc = pkgs.nixosOptionsDoc { - inherit (pkgs.lib.evalModules { modules = [ ../../pkgs/top-level/config.nix ]; }) options; + inherit (pkgs.lib.evalModules { + modules = [ ../../pkgs/top-level/config.nix ]; + class = "nixpkgsConfig"; + }) options; documentType = "none"; transformOptions = opt: opt // { @@ -60,7 +78,7 @@ in pkgs.runCommand "doc-support" {} ln -s ${epub-xsl} ./epub.xsl ln -s ${xhtml-xsl} ./xhtml.xsl - ln -s ${../../nixos/doc/xmlformat.conf} ./xmlformat.conf + ln -s ${./xmlformat.conf} ./xmlformat.conf ln -s ${pkgs.documentation-highlighter} ./highlightjs echo -n "${version}" > ./version diff --git a/nixpkgs/doc/doc-support/lib-function-docs.nix b/nixpkgs/doc/doc-support/lib-function-docs.nix index f6d613cac0b6..cf218fa70401 100644 --- a/nixpkgs/doc/doc-support/lib-function-docs.nix +++ b/nixpkgs/doc/doc-support/lib-function-docs.nix @@ -1,27 +1,36 @@ -# Generates the documentation for library functons via nixdoc. To add -# another library function file to this list, the include list in the -# file `doc/functions/library.xml` must also be updated. +# Generates the documentation for library functions via nixdoc. -{ pkgs ? import ./.. {}, locationsXml }: +{ pkgs, locationsXml, libsets }: with pkgs; stdenv.mkDerivation { name = "nixpkgs-lib-docs"; - src = ./../../lib; + src = ../../lib; buildInputs = [ nixdoc ]; installPhase = '' function docgen { - nixdoc -c "$1" -d "$2" -f "../lib/$1.nix" > "$out/$1.xml" + # TODO: wrap lib.$1 in <literal>, make nixdoc not escape it + if [[ -e "../lib/$1.nix" ]]; then + nixdoc -c "$1" -d "lib.$1: $2" -f "$1.nix" > "$out/$1.xml" + else + nixdoc -c "$1" -d "lib.$1: $2" -f "$1/default.nix" > "$out/$1.xml" + fi + echo "<xi:include href='$1.xml' />" >> "$out/index.xml" } - mkdir -p $out - ln -s ${locationsXml} $out/locations.xml + mkdir -p "$out" + + cat > "$out/index.xml" << 'EOF' + <?xml version="1.0" encoding="utf-8"?> + <root xmlns:xi="http://www.w3.org/2001/XInclude"> + EOF + + ${lib.concatMapStrings ({ name, description }: '' + docgen ${name} ${lib.escapeShellArg description} + '') libsets} - docgen strings 'String manipulation functions' - docgen trivial 'Miscellaneous functions' - docgen lists 'List manipulation functions' - docgen debug 'Debugging functions' - docgen options 'NixOS / nixpkgs option handling' - docgen sources 'Source filtering functions' + echo "</root>" >> "$out/index.xml" + + ln -s ${locationsXml} $out/locations.xml ''; } diff --git a/nixpkgs/doc/doc-support/lib-function-locations.nix b/nixpkgs/doc/doc-support/lib-function-locations.nix index 68edd2709854..1ee59648330a 100644 --- a/nixpkgs/doc/doc-support/lib-function-locations.nix +++ b/nixpkgs/doc/doc-support/lib-function-locations.nix @@ -1,24 +1,24 @@ -{ pkgs ? (import ./.. { }), nixpkgs ? { }}: +{ pkgs, nixpkgs ? { }, libsets }: let - revision = pkgs.lib.trivial.revisionWithDefault (nixpkgs.revision or "master"); + revision = pkgs.lib.trivial.revisionWithDefault (nixpkgs.rev or "master"); - libDefPos = set: - builtins.map - (name: { - name = name; + libDefPos = prefix: set: + builtins.concatMap + (name: [{ + name = builtins.concatStringsSep "." (prefix ++ [name]); location = builtins.unsafeGetAttrPos name set; - }) - (builtins.attrNames set); + }] ++ nixpkgsLib.optionals + (builtins.length prefix == 0 && builtins.isAttrs set.${name}) + (libDefPos (prefix ++ [name]) set.${name}) + ) (builtins.attrNames set); libset = toplib: builtins.map (subsetname: { subsetname = subsetname; - functions = libDefPos toplib.${subsetname}; + functions = libDefPos [] toplib.${subsetname}; }) - (builtins.filter - (name: builtins.isAttrs toplib.${name}) - (builtins.attrNames toplib)); + (builtins.map (x: x.name) libsets); nixpkgsLib = pkgs.lib; diff --git a/nixpkgs/doc/doc-support/parameters.xml b/nixpkgs/doc/doc-support/parameters.xml index 8b413dcd337a..5b39d2f7f1a5 100644 --- a/nixpkgs/doc/doc-support/parameters.xml +++ b/nixpkgs/doc/doc-support/parameters.xml @@ -2,12 +2,16 @@ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> - <xsl:param name="section.autolabel" select="1" /> - <xsl:param name="section.label.includes.component.label" select="1" /> + <xsl:param name="chapter.autolabel" select="0" /> + <xsl:param name="part.autolabel" select="0" /> + <xsl:param name="preface.autolabel" select="0" /> + <xsl:param name="reference.autolabel" select="0" /> + <xsl:param name="section.autolabel" select="0" /> <xsl:param name="html.stylesheet" select="'style.css overrides.css highlightjs/mono-blue.css'" /> <xsl:param name="html.script" select="'./highlightjs/highlight.pack.js ./highlightjs/loader.js'" /> - <xsl:param name="xref.with.number.and.title" select="1" /> + <xsl:param name="xref.with.number.and.title" select="0" /> <xsl:param name="use.id.as.filename" select="1" /> + <xsl:param name="generate.section.toc.level" select="1" /> <xsl:param name="toc.section.depth" select="0" /> <xsl:param name="admon.style" select="''" /> <xsl:param name="callout.graphics.extension" select="'.svg'" /> diff --git a/nixpkgs/doc/doc-support/xmlformat.conf b/nixpkgs/doc/doc-support/xmlformat.conf new file mode 100644 index 000000000000..c3f39c7fd81b --- /dev/null +++ b/nixpkgs/doc/doc-support/xmlformat.conf @@ -0,0 +1,72 @@ +# +# DocBook Configuration file for "xmlformat" +# see http://www.kitebird.com/software/xmlformat/ +# 10 Sept. 2004 +# + +# Only block elements +ackno address appendix article biblioentry bibliography bibliomixed \ +biblioset blockquote book bridgehead callout calloutlist caption caution \ +chapter chapterinfo classsynopsis cmdsynopsis colophon constraintdef \ +constructorsynopsis dedication destructorsynopsis entry epigraph equation example \ +figure formalpara funcsynopsis glossary glossdef glossdiv glossentry glosslist \ +glosssee glossseealso graphic graphicco highlights imageobjectco important \ +index indexdiv indexentry indexinfo info informalequation informalexample \ +informalfigure informaltable legalnotice literallayout lot lotentry mediaobject \ +mediaobjectco msgmain msgset note orderedlist para part preface primaryie \ +procedure qandadiv qandaentry qandaset refentry refentrytitle reference \ +refnamediv refsect1 refsect2 refsect3 refsection revhistory screenshot sect1 \ +sect2 sect3 sect4 sect5 section seglistitem set setindex sidebar simpara \ +simplesect step substeps synopfragment synopsis table term title \ +toc variablelist varlistentry warning itemizedlist listitem \ +footnote colspec partintro row simplelist subtitle tbody tgroup thead tip + format block + normalize no + + +#appendix bibliography chapter glossary preface reference +# element-break 3 + +sect1 section + element-break 2 + + +# +para abstract + format block + entry-break 1 + exit-break 1 + normalize yes + +title + format block + normalize = yes + entry-break = 0 + exit-break = 0 + +# Inline elements +abbrev accel acronym action application citation citebiblioid citerefentry citetitle \ +classname co code command computeroutput constant country database date email emphasis \ +envar errorcode errorname errortext errortype exceptionname fax filename \ +firstname firstterm footnoteref foreignphrase funcdef funcparams function \ +glossterm group guibutton guiicon guilabel guimenu guimenuitem guisubmenu \ +hardware holder honorific indexterm inlineequation inlinegraphic inlinemediaobject \ +interface interfacename \ +keycap keycode keycombo keysym lineage link literal manvolnum markup medialabel \ +menuchoice methodname methodparam modifier mousebutton olink ooclass ooexception \ +oointerface option optional otheraddr othername package paramdef parameter personname \ +phrase pob postcode productname prompt property quote refpurpose replaceable \ +returnvalue revnumber sgmltag state street structfield structname subscript \ +superscript surname symbol systemitem token trademark type ulink userinput \ +uri varargs varname void wordasword xref year mathphrase member tag + format inline + +programlisting screen + format verbatim + entry-break = 0 + exit-break = 0 + +# This is needed so that the spacing inside those tags is kept. +term cmdsynopsis arg + normalize yes + format block |