diff options
author | Aspen Smith <root@gws.fyi> | 2023-11-06T15·41-0500 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2023-11-06T15·46+0000 |
commit | 1027754b866e9489b6db0ed18a5c736f128aadcc (patch) | |
tree | 46bf05b3e411d9b53807494363544db147f33bbf /users/grfn/web/orgExportHTML.nix | |
parent | f3dea2ffbc4255c64d01a80e2668b2060b676e9e (diff) |
refactor(users/grfn): Rename gws.fyi -> web r/6966
Change-Id: Icdee0caa3a053958750d4b81853dbc3eee5b193a Reviewed-on: https://cl.tvl.fyi/c/depot/+/9973 Tested-by: BuildkiteCI Reviewed-by: grfn <grfn@gws.fyi> Autosubmit: grfn <grfn@gws.fyi>
Diffstat (limited to 'users/grfn/web/orgExportHTML.nix')
-rw-r--r-- | users/grfn/web/orgExportHTML.nix | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/users/grfn/web/orgExportHTML.nix b/users/grfn/web/orgExportHTML.nix new file mode 100644 index 000000000000..aac4e32e7ac5 --- /dev/null +++ b/users/grfn/web/orgExportHTML.nix @@ -0,0 +1,67 @@ +{ pkgs, depot, ... }: + +with pkgs; +with lib; + +let + + emacs = pkgs.emacs28; + +in + +opts: + +let + src = if isAttrs opts then opts.src else opts; + headline = if isAttrs opts then opts.headline else null; + + bn = builtins.baseNameOf src; + filename = elemAt (splitString "." bn) 0; + + outName = + if isNull headline + then + let + bn = builtins.baseNameOf src; + filename = elemAt (splitString "." bn) 0; + in + if depot.nix.utils.isDirectory src + then filename + else filename + ".html" + else "${filename}-${replaceStrings [" "] ["-"] filename}.html"; + + escapeDoubleQuotes = replaceStrings [ "\"" ] [ "\\\"" ]; + + navToHeadline = optionalString (! isNull headline) '' + (search-forward "${escapeDoubleQuotes headline}") + (org-narrow-to-subtree) + ''; + +in + +runCommand outName { inherit src; } '' + buildFile() { + cp "$1" file.org + ${emacs}/bin/emacs --batch \ + --load ${./config.el} \ + --visit file.org \ + --eval "(progn + ${escapeDoubleQuotes navToHeadline} + (org-html-export-to-html))" \ + --kill + rm file.org + substitute file.html "$2" \ + --replace '<title>‎</title>' "" + rm file.html + } + + if [ -d $src ]; then + for file in $src/*; do + result=''${file/$src/$out} + mkdir -p $(dirname $result) + buildFile $file ''${result/.org/.html} + done + else + buildFile $src $out + fi +'' |