about summary refs log tree commit diff
path: root/pkgs/by-name/do
diff options
context:
space:
mode:
authorTomodachi94 <tomodachi94@protonmail.com>2024-06-22 00:10:41 -0700
committerTomodachi94 <tomodachi94@protonmail.com>2024-06-22 01:24:52 -0700
commitea635ffac9e5447eb075312c8ea60cfaa3707a17 (patch)
tree976ce6105e52241cdac86d6b1b8219ed07a2a357 /pkgs/by-name/do
parentd80561385586e228c8a22d44943610c4a8a2e43b (diff)
doctoc: init at 2.2.0
Diffstat (limited to 'pkgs/by-name/do')
-rw-r--r--pkgs/by-name/do/doctoc/package.nix35
-rw-r--r--pkgs/by-name/do/doctoc/test-generates-valid-markdown/default.nix14
-rw-r--r--pkgs/by-name/do/doctoc/test-generates-valid-markdown/input.md11
3 files changed, 60 insertions, 0 deletions
diff --git a/pkgs/by-name/do/doctoc/package.nix b/pkgs/by-name/do/doctoc/package.nix
new file mode 100644
index 0000000000000..faded51f44317
--- /dev/null
+++ b/pkgs/by-name/do/doctoc/package.nix
@@ -0,0 +1,35 @@
+{
+  lib,
+  buildNpmPackage,
+  fetchFromGitHub,
+  callPackage,
+}:
+
+buildNpmPackage rec {
+  pname = "doctoc";
+  version = "2.2.0";
+
+  src = fetchFromGitHub {
+    owner = "thlorenz";
+    repo = "doctoc";
+    rev = "v${version}";
+    hash = "sha256-LYVxW8bZ4M87CmBvPyp4y0IeL9UFawwAKnUWHEWB5Gs=";
+  };
+
+  npmDepsHash = "sha256-TbAnFpiN/v6xjQQznL/B180f0W48HPRqW21cO9XZhYA=";
+
+  dontNpmBuild = true;
+
+  passthru.tests = {
+    generates-valid-markdown = callPackage ./test-generates-valid-markdown { };
+  };
+
+  meta = {
+    description = "Generate table of contents for Markdown files";
+    homepage = "https://github.com/thlorenz/doctoc";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ tomodachi94 ];
+    mainProgram = "doctoc";
+    platforms = lib.platforms.all;
+  };
+}
diff --git a/pkgs/by-name/do/doctoc/test-generates-valid-markdown/default.nix b/pkgs/by-name/do/doctoc/test-generates-valid-markdown/default.nix
new file mode 100644
index 0000000000000..d986566bde4f8
--- /dev/null
+++ b/pkgs/by-name/do/doctoc/test-generates-valid-markdown/default.nix
@@ -0,0 +1,14 @@
+{ runCommandNoCC, doctoc }:
+runCommandNoCC "doctoc-test-generates-valid-markdown.md" { nativeBuildInputs = [ doctoc ]; } ''
+  cp ${./input.md} ./target.md && chmod +w ./target.md
+  doctoc ./target.md
+
+  # Ensure that ./target.md changed
+  cmp --quiet ${./input.md} ./target.md && echo "doctoc-test-generates-valid-markdown: files unchanged, test fails" && exit 1
+  # Check for DocToc's default title
+  grep --fixed-strings '**Table of Contents**  *generated with [DocToc](https://github.com/thlorenz/doctoc)*' target.md
+  # Check for at least one Markdown anchor link
+  grep --extended-regexp '\- \[.*\]\(#[a-z-]*\)' target.md
+
+  cp target.md $out
+''
diff --git a/pkgs/by-name/do/doctoc/test-generates-valid-markdown/input.md b/pkgs/by-name/do/doctoc/test-generates-valid-markdown/input.md
new file mode 100644
index 0000000000000..e15e445a04be4
--- /dev/null
+++ b/pkgs/by-name/do/doctoc/test-generates-valid-markdown/input.md
@@ -0,0 +1,11 @@
+# Hello Nixpkgs!
+
+## I am a document consisting entirely of headings.
+
+### Woah, it's a third-level heading!
+
+#### A fourth-level...
+
+### Another third-level!
+
+## A second level.