From 6e7e1c0b3dd691fde50b7066f9b4fe69660fe399 Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Sat, 7 May 2022 20:30:46 +0000
Subject: [PATCH 01/29] Initial gh-pages commit


From e524523c1c70ee5b0233a558fdef2355d5df1df6 Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Sat, 7 May 2022 20:30:47 +0000
Subject: [PATCH 02/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@937a4c196425932cdb5e25efbf409bcb687bbb69=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 index.html                |  45 +++++++++++
 install.html              |  53 ++++++++++++
 manual.html               |  72 +++++++++++++++++
 quick-start.html          |  67 ++++++++++++++++
 selective-changelogs.html |  69 ++++++++++++++++
 style.css                 | 164 ++++++++++++++++++++++++++++++++++++++
 styles.html               | 161 +++++++++++++++++++++++++++++++++++++
 usage.html                |  37 +++++++++
 versioning.html           |  36 +++++++++
 9 files changed, 704 insertions(+)
 create mode 100644 index.html
 create mode 100644 install.html
 create mode 100644 manual.html
 create mode 100644 quick-start.html
 create mode 100644 selective-changelogs.html
 create mode 100644 style.css
 create mode 100644 styles.html
 create mode 100644 usage.html
 create mode 100644 versioning.html

diff --git a/index.html b/index.html
new file mode 100644
index 0000000..2ef181d
--- /dev/null
+++ b/index.html
@@ -0,0 +1,45 @@
+  <head>
+    <link rel="stylesheet" href="style.css" />
+  </head>
+    <body>
+  <div class="layout-container">
+  <section>
+  <nav class="sidebar"><ul>
+<li><a href="/">Home</a></li>
+<li><a href="/install">Install</a></li>
+<li><a href="/quick-start">Quick Start</a></li>
+<li><a href="/usage">Usage</a>
+<ul>
+<li><a href="/selective-changelogs">Selective Changelogs</a></li>
+<li><a href="/versioning">Version Management</a></li>
+<li><a href="/manual">Manual</a></li>
+</ul>
+</li>
+</ul>
+</nav></section><section><p align="center">
+  <img src="https://raw.githubusercontent.com/barelyhuman/commitlog/main/assets/commitlog.png" height="64">
+<p align="center">Changelog generator using Commit History</p>
+<p><a href="https://goreportcard.com/report/github.com/barelyhuman/commitlog"><img src="https://goreportcard.com/badge/github.com/barelyhuman/commitlog" alt="Go Report Card" /></a></p>
+<h2>Philosophy</h2>
+<ul>
+<li>Work on all major operating systems</li>
+<li>Not platform dependent, not tied to Github, Gitlab, or anything. It's just markdown.</li>
+<li>Ability to generate change logs between version tags</li>
+<li>Handle release versioning of the project</li>
+<li>Stay small</li>
+</ul>
+<h2>Why</h2>
+<p>Every language has it's own isolated version of a tool like this, for someone who works with multiple languages, it's easier to
+have the same tool working everywhere, without having to setup something get it working. There's an even tighter scoped version of this, <a href="https://github.com/barelyhuman/nimclog">nimclog</a>.</p>
+<p>The point of the tool is not to create super descriptive changelogs for you but to help your changelogs have enough information for you as a developer to be able to write proper changelogs while having references to the changes in one place.</p>
+<h2>Documentation</h2>
+<p>The documentation can be read from the <code>docs</code> folder of the repository, or on the <a href="https://barelyhuman.github.io/commitlog">website</a></p>
+<h2>License</h2>
+<p><a href="/LICENSE">MIT</a></p>
+</section></div>
+  <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
+  <script>
+    hljs.highlightAll();
+  </script>
+  </body>
+  
\ No newline at end of file
diff --git a/install.html b/install.html
new file mode 100644
index 0000000..b80dd33
--- /dev/null
+++ b/install.html
@@ -0,0 +1,53 @@
+  <head>
+    <link rel="stylesheet" href="style.css" />
+  </head>
+    <body>
+  <div class="layout-container">
+  <section>
+  <nav class="sidebar"><ul>
+<li><a href="/">Home</a></li>
+<li><a href="/install">Install</a></li>
+<li><a href="/quick-start">Quick Start</a></li>
+<li><a href="/usage">Usage</a>
+<ul>
+<li><a href="/selective-changelogs">Selective Changelogs</a></li>
+<li><a href="/versioning">Version Management</a></li>
+<li><a href="/manual">Manual</a></li>
+</ul>
+</li>
+</ul>
+</nav></section><section><h3><a href="/">commitlog</a></h3>
+<h1>Install</h1>
+<h2>From goblin</h2>
+<p>Goblin will build the project for your specific system so it might take a bit of time based on the traffic</p>
+<pre><code class="language-sh">curl -sf https://goblin.reaper.im/github.com/barelyhuman/commitlog
+</code></pre>
+<h2>From Releases</h2>
+<p>To avoid the above work load you can download the binaries from the github releases pages
+<a href="https://github.com/barelyhuman/commitlog/releases">Commitlog Releases →</a></p>
+<h2>From Source</h2>
+<p>If you have golang installed on your system you can build the binary on your system</p>
+<pre><code class="language-sh"># clone the repository
+git clone https://github.com/barelyhuman/commitlog
+
+# cd into the folder
+cd commitlog
+
+# run go mod to download needed deps
+go mod tidy
+
+# run go build and wait for it to complete
+go build
+
+# if on unix, use the `install` command to install it onto a system used path
+install goblin /usr/local/bin
+# or if you need perms
+sudo install goblin /usr/local/bin
+</code></pre>
+</section></div>
+  <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
+  <script>
+    hljs.highlightAll();
+  </script>
+  </body>
+  
\ No newline at end of file
diff --git a/manual.html b/manual.html
new file mode 100644
index 0000000..bf870fe
--- /dev/null
+++ b/manual.html
@@ -0,0 +1,72 @@
+  <head>
+    <link rel="stylesheet" href="style.css" />
+  </head>
+    <body>
+  <div class="layout-container">
+  <section>
+  <nav class="sidebar"><ul>
+<li><a href="/">Home</a></li>
+<li><a href="/install">Install</a></li>
+<li><a href="/quick-start">Quick Start</a></li>
+<li><a href="/usage">Usage</a>
+<ul>
+<li><a href="/selective-changelogs">Selective Changelogs</a></li>
+<li><a href="/versioning">Version Management</a></li>
+<li><a href="/manual">Manual</a></li>
+</ul>
+</li>
+</ul>
+</nav></section><section><h3><a href="/">commitlog</a></h3>
+<h2>Manual</h2>
+<pre><code>$ commitlog &lt;subcommand&gt; [flags]
+</code></pre>
+<h3>Subcommands</h3>
+<ul>
+<li><code>log</code></li>
+<li><code>release</code> (added in v0.0.7-dev.7)</li>
+</ul>
+<h4><code>commitlog log</code></h4>
+<pre><code class="language-sh">eg:
+$ commitlog log -p .
+## or the shorthand
+$ commitlog
+</code></pre>
+<pre><code class="language-sh">Usage of commitlog:
+  -e string
+        commit hash string / revision (ex. HEAD, HEAD^, HEAD~2)
+         to stop collecting commit message at
+  -i string
+        commit types to be includes (default &quot;ci|refactor|docs|fix|feat|test|chore|other&quot;)
+  -p string
+        path to the repository, points to the current working directory by default (default &quot;.&quot;)
+  -promo
+        if enabled will add a &quot;generated by&quot; promotional tag to the changelog
+  -s string
+        commit hash string / revision (ex. HEAD, HEAD^, HEAD~2)
+         to start collecting commit messages from
+  -skip
+        if enabled will skip trying to classify and just give a list of changes
+</code></pre>
+<p><small><code>-promo</code> (added in v1.0.0)</small></p>
+<h4><code>commitlog release</code></h4>
+<pre><code class="language-sh">$ commitlog release [init | &lt;flags&gt;]
+</code></pre>
+<pre><code class="language-sh">Usage of release:
+  -beta
+        If the release is a beta/prerelease
+  -beta-suffix -beta.x
+        If the release is a beta, to add/increment tag with -beta.x or mentioned string
+  -major
+        If release is a *major* one, will increment the x.0.0
+  -minor
+        If release is a *minor* one, will increment the 0.x.0
+  -patch
+        If release is a *patch*, will increment the 0.0.x
+</code></pre>
+</section></div>
+  <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
+  <script>
+    hljs.highlightAll();
+  </script>
+  </body>
+  
\ No newline at end of file
diff --git a/quick-start.html b/quick-start.html
new file mode 100644
index 0000000..5eb1c43
--- /dev/null
+++ b/quick-start.html
@@ -0,0 +1,67 @@
+  <head>
+    <link rel="stylesheet" href="style.css" />
+  </head>
+    <body>
+  <div class="layout-container">
+  <section>
+  <nav class="sidebar"><ul>
+<li><a href="/">Home</a></li>
+<li><a href="/install">Install</a></li>
+<li><a href="/quick-start">Quick Start</a></li>
+<li><a href="/usage">Usage</a>
+<ul>
+<li><a href="/selective-changelogs">Selective Changelogs</a></li>
+<li><a href="/versioning">Version Management</a></li>
+<li><a href="/manual">Manual</a></li>
+</ul>
+</li>
+</ul>
+</nav></section><section><h3><a href="/">commitlog</a></h3>
+<h1>Quick Start</h1>
+<h2>Changelog</h2>
+<ol>
+<li>
+<p>Install using one of the methods from <a href="/install">Installation Instructions</a></p>
+</li>
+<li>
+<p>Change terminal directory into the git repository you want the changelogs from.</p>
+</li>
+<li>
+<p>run the base command</p>
+<pre><code class="language-sh"># on mac
+$ commitlog | pbcopy
+
+# on linux with x11
+$ commitlog | xclip
+</code></pre>
+</li>
+</ol>
+<h2>Version Management</h2>
+<ol>
+<li>
+<p>Install using one of the methods from <a href="/install">Installation Instructions</a></p>
+</li>
+<li>
+<p>Change terminal directory into the git repository you want the changelogs from.</p>
+</li>
+<li>
+<p>Initialise version management</p>
+<pre><code class="language-sh">$ commitlog release init
+</code></pre>
+</li>
+<li>
+<p>If working in an existing project, change the <code>.commitlog.release</code> file to match with the current version of the project.</p>
+</li>
+<li>
+<p>Run the needed command to increase versino</p>
+<pre><code class="language-sh">$ commitlog release
+</code></pre>
+</li>
+</ol>
+</section></div>
+  <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
+  <script>
+    hljs.highlightAll();
+  </script>
+  </body>
+  
\ No newline at end of file
diff --git a/selective-changelogs.html b/selective-changelogs.html
new file mode 100644
index 0000000..caff62a
--- /dev/null
+++ b/selective-changelogs.html
@@ -0,0 +1,69 @@
+  <head>
+    <link rel="stylesheet" href="style.css" />
+  </head>
+    <body>
+  <div class="layout-container">
+  <section>
+  <nav class="sidebar"><ul>
+<li><a href="/">Home</a></li>
+<li><a href="/install">Install</a></li>
+<li><a href="/quick-start">Quick Start</a></li>
+<li><a href="/usage">Usage</a>
+<ul>
+<li><a href="/selective-changelogs">Selective Changelogs</a></li>
+<li><a href="/versioning">Version Management</a></li>
+<li><a href="/manual">Manual</a></li>
+</ul>
+</li>
+</ul>
+</nav></section><section><h3><a href="/">commitlog</a></h3>
+<h1>Selective Changelogs</h1>
+<h2>Classification</h2>
+<p>Commitlog was built on a minor subset of classification flags from the commitlint spec
+which includes the following type of commits.</p>
+<p><code>ci|refactor|docs|fix|feat|test|chore|other</code></p>
+<p>These are all turned on by default on the cli and will use the commit message's subject to classify commits for you.</p>
+<p>Eg:
+The following git message would generate a commitlog like so</p>
+<pre><code># git message
+feat: added handling for feature flags
+</code></pre>
+<pre><code class="language-markdown">&lt;!-- COMMITLOG --&gt;
+
+# Features
+
+53cb64436a3df5b22702cf6d012a4d09df93d930 - added handling for feature flags
+</code></pre>
+<p>Everything that cannot be classified in the above types will be put into <code>other</code></p>
+<h3>Selected types</h3>
+<p>If you only want to include feature and fix flags for changelogs you could do so in the following manner</p>
+<pre><code class="language-sh">$ commitlog -i &quot;fix|feat&quot;
+# or
+$ commitlog -i &quot;fix,feat&quot;
+</code></pre>
+<h3>Skip classification</h3>
+<p>If you wish to avoid classification all together and just want commits between a range you can do so as well (though you are better off without the tool for this usecase since git handles this natively)</p>
+<pre><code class="language-sh">$ commitlog --skip
+</code></pre>
+<h2>Commits in range</h2>
+<p>A very common use case is to get commits between a range if you aren't using tags in your current workflow.
+This can be done by using <strong>git revision handles</strong> or the <strong>commit hashes</strong>.</p>
+<p>Eg:
+Let's say I want the last 3 commits</p>
+<pre><code class="language-sh">$ commitlog -s HEAD -e HEAD~4
+</code></pre>
+<p><small><code>HEAD~4</code> since the end commit is excluded from the range.</small></p>
+<p>Both <code>-s</code> and <code>-e</code> are individual flags and don't have to be used together.</p>
+<p>So something like will also give you the last 4 commits.</p>
+<pre><code class="language-sh">$ commitlog -e HEAD~4
+</code></pre>
+<p>and the following would give you all commits till the next tagged instance starting form the given commit</p>
+<pre><code class="language-sh">$ commitlog -s HEAD~4
+</code></pre>
+</section></div>
+  <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
+  <script>
+    hljs.highlightAll();
+  </script>
+  </body>
+  
\ No newline at end of file
diff --git a/style.css b/style.css
new file mode 100644
index 0000000..4162af1
--- /dev/null
+++ b/style.css
@@ -0,0 +1,164 @@
+@import url("https://rsms.me/inter/inter.css");
+@import url("https://cdn.jsdelivr.net/npm/hack-font@3/build/web/hack.css");
+
+@import url("https://unpkg.com/highlight.js@11.5.1/styles/base16/one-light.css")
+screen;
+
+@import url("https://unpkg.com/highlight.js@11.5.1/styles/base16/onedark.css")
+  screen and (prefers-color-scheme: dark);
+
+/* https://barelyhuman.github.io/zinccolors/ */
+:root {
+  --zinc-50: #fafafa;
+  --zinc-100: #f4f4f5;
+  --zinc-200: #e4e4e7;
+  --zinc-300: #d4d4d8;
+  --zinc-400: #a1a1aa;
+  --zinc-500: #71717a;
+  --zinc-600: #52525b;
+  --zinc-700: #3f3f46;
+  --zinc-800: #27272a;
+  --zinc-900: #18181b;
+}
+
+/* vars for everything else */
+:root {
+  --base: var(--zinc-50);
+  --surface: var(--zinc-100);
+  --overlay: var(--zinc-200);
+  --text: var(--zinc-700);
+  --subtle: var(--zinc-400);
+  --muted: var(--zinc-300);
+
+  --font-sans: "Hack", monospace;
+  --font-mono: "Hack", monospace;
+}
+
+html {
+  font-size: 100%;
+}
+
+body {
+  background: var(--base);
+  font-family: var(--font-sans);
+  font-weight: 400;
+  line-height: 1.75;
+  color: var(--text);
+  margin: 0 auto;
+  padding: 1rem;
+}
+
+p {
+  margin-bottom: 1rem;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5 {
+  margin: 3rem 0 1.38rem;
+  font-family: var(--font-sans);
+  font-weight: 400;
+  line-height: 1.3;
+}
+
+h1 {
+  margin-top: 0;
+  font-size: 3.052rem;
+}
+
+h2 {
+  font-size: 2.441rem;
+}
+
+h3 {
+  font-size: 1.953rem;
+}
+
+h4 {
+  font-size: 1.563rem;
+}
+
+h5 {
+  font-size: 1.25rem;
+}
+
+small,
+.text_small {
+  font-size: 0.8rem;
+}
+
+pre,
+code {
+  font-family: var(--font-mono);
+}
+
+code {
+  background: var(--surface);
+  padding: 2px;
+  border-radius: 4px;
+}
+
+pre {
+  white-space: pre-wrap;
+}
+
+pre > .hljs {
+  background: var(--surface);
+  border-radius: 6px;
+  padding: 1em;
+}
+
+a {
+  color: var(--subtle);
+  text-decoration: none;
+}
+
+a:hover {
+  color: var(--text);
+  text-decoration: underline;
+}
+
+.layout-container {
+  display: flex;
+  align-items: baseline;
+  gap: 1em;
+}
+
+nav.sidebar {
+  display: none;
+  min-width: 250px;
+  max-width: 350px;
+}
+
+nav.sidebar ul {
+  padding-left: 0.75rem;
+}
+
+nav.sidebar li {
+  list-style-type: none;
+}
+
+nav.sidebar li::before {
+  content: "\2192";
+  color: var(--muted);
+  margin-inline-end: 1ch;
+}
+
+@media screen and (prefers-color-scheme: dark) {
+  :root {
+    --base: var(--zinc-900);
+    --surface: var(--zinc-800);
+    --overlay: var(--zinc-700);
+    --text: var(--zinc-100);
+    --subtle: var(--zinc-400);
+    --muted: var(--zinc-500);
+  }
+}
+
+@media screen and (min-width: 768px) {
+  nav.sidebar {
+    display: flex;
+  }
+}
diff --git a/styles.html b/styles.html
new file mode 100644
index 0000000..7be5ad9
--- /dev/null
+++ b/styles.html
@@ -0,0 +1,161 @@
+  <head>
+    <link rel="stylesheet" href="style.css" />
+  </head>
+    <body>
+  <div class="layout-container">
+  <section>
+  <nav class="sidebar"><ul>
+<li><a href="/">Home</a></li>
+<li><a href="/install">Install</a></li>
+<li><a href="/quick-start">Quick Start</a></li>
+<li><a href="/usage">Usage</a>
+<ul>
+<li><a href="/selective-changelogs">Selective Changelogs</a></li>
+<li><a href="/versioning">Version Management</a></li>
+<li><a href="/manual">Manual</a></li>
+</ul>
+</li>
+</ul>
+</nav></section><section><p>@import url(&quot;https://rsms.me/inter/inter.css&quot;);
+@import url(&quot;https://cdn.jsdelivr.net/npm/hack-font@3/build/web/hack.css&quot;);</p>
+<p>@import url(&quot;https://unpkg.com/highlight.js@11.5.1/styles/base16/one-light.css&quot;)
+screen;</p>
+<p>@import url(&quot;https://unpkg.com/highlight.js@11.5.1/styles/base16/onedark.css&quot;)
+screen and (prefers-color-scheme: dark);</p>
+<p>/* https://barelyhuman.github.io/zinccolors/ */
+:root {
+--zinc-50: #fafafa;
+--zinc-100: #f4f4f5;
+--zinc-200: #e4e4e7;
+--zinc-300: #d4d4d8;
+--zinc-400: #a1a1aa;
+--zinc-500: #71717a;
+--zinc-600: #52525b;
+--zinc-700: #3f3f46;
+--zinc-800: #27272a;
+--zinc-900: #18181b;
+}</p>
+<p>/* vars for everything else */
+:root {
+--base: var(--zinc-50);
+--surface: var(--zinc-100);
+--overlay: var(--zinc-200);
+--text: var(--zinc-700);
+--subtle: var(--zinc-400);
+--muted: var(--zinc-300);</p>
+<p>--font-sans: &quot;Hack&quot;, monospace;
+--font-mono: &quot;Hack&quot;, monospace;
+}</p>
+<p>html {
+font-size: 100%;
+}</p>
+<p>body {
+background: var(--base);
+font-family: var(--font-sans);
+font-weight: 400;
+line-height: 1.75;
+color: var(--text);
+margin: 0 auto;
+padding: 1rem;
+}</p>
+<p>p {
+margin-bottom: 1rem;
+}</p>
+<p>h1,
+h2,
+h3,
+h4,
+h5 {
+margin: 3rem 0 1.38rem;
+font-family: var(--font-sans);
+font-weight: 400;
+line-height: 1.3;
+}</p>
+<p>h1 {
+margin-top: 0;
+font-size: 3.052rem;
+}</p>
+<p>h2 {
+font-size: 2.441rem;
+}</p>
+<p>h3 {
+font-size: 1.953rem;
+}</p>
+<p>h4 {
+font-size: 1.563rem;
+}</p>
+<p>h5 {
+font-size: 1.25rem;
+}</p>
+<p>small,
+.text_small {
+font-size: 0.8rem;
+}</p>
+<p>pre,
+code {
+font-family: var(--font-mono);
+}</p>
+<p>code {
+background: var(--surface);
+padding: 2px;
+border-radius: 4px;
+}</p>
+<p>pre {
+white-space: pre-wrap;
+}</p>
+<p>pre &gt; .hljs {
+background: var(--surface);
+border-radius: 6px;
+padding: 1em;
+}</p>
+<p>a {
+color: var(--subtle);
+text-decoration: none;
+}</p>
+<p>a:hover {
+color: var(--text);
+text-decoration: underline;
+}</p>
+<p>.layout-container {
+display: flex;
+align-items: baseline;
+gap: 1em;
+}</p>
+<p>nav.sidebar {
+display: none;
+min-width: 250px;
+max-width: 350px;
+}</p>
+<p>nav.sidebar ul {
+padding-left: 0.75rem;
+}</p>
+<p>nav.sidebar li {
+list-style-type: none;
+}</p>
+<p>nav.sidebar li::before {
+content: &quot;\2192&quot;;
+color: var(--muted);
+margin-inline-end: 1ch;
+}</p>
+<p>@media screen and (prefers-color-scheme: dark) {
+:root {
+--base: var(--zinc-900);
+--surface: var(--zinc-800);
+--overlay: var(--zinc-700);
+--text: var(--zinc-100);
+--subtle: var(--zinc-400);
+--muted: var(--zinc-500);
+}
+}</p>
+<p>@media screen and (min-width: 768px) {
+nav.sidebar {
+display: flex;
+}
+}</p>
+</section></div>
+  <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
+  <script>
+    hljs.highlightAll();
+  </script>
+  </body>
+  
\ No newline at end of file
diff --git a/usage.html b/usage.html
new file mode 100644
index 0000000..c1a6cb4
--- /dev/null
+++ b/usage.html
@@ -0,0 +1,37 @@
+  <head>
+    <link rel="stylesheet" href="style.css" />
+  </head>
+    <body>
+  <div class="layout-container">
+  <section>
+  <nav class="sidebar"><ul>
+<li><a href="/">Home</a></li>
+<li><a href="/install">Install</a></li>
+<li><a href="/quick-start">Quick Start</a></li>
+<li><a href="/usage">Usage</a>
+<ul>
+<li><a href="/selective-changelogs">Selective Changelogs</a></li>
+<li><a href="/versioning">Version Management</a></li>
+<li><a href="/manual">Manual</a></li>
+</ul>
+</li>
+</ul>
+</nav></section><section><h3><a href="/">commitlog</a></h3>
+<h1>Usage</h1>
+<p>If you are looking for an overview of the flags, please check the <a href="/manual">manual</a>.</p>
+<p>The base command should serve enough for most people but let's still get into the details of what can be done.</p>
+<ul>
+<li>The cli allows you to select a range which can be reference strings like (HEAD, HEAD~2) and this will give you commits in that range, exclusive of the end reference.</li>
+<li>classification is optional but is turned on by default and uses the inclusion types to do the classification</li>
+<li>You can also handle managing releases by using the <code>release</code> subcommand.</li>
+</ul>
+<p>For details on how to do each</p>
+<p><a href="/selective-changelogs">Selective Changelogs →</a></p>
+<p><a href="/versioning">Versioning →</a></p>
+</section></div>
+  <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
+  <script>
+    hljs.highlightAll();
+  </script>
+  </body>
+  
\ No newline at end of file
diff --git a/versioning.html b/versioning.html
new file mode 100644
index 0000000..e3f6777
--- /dev/null
+++ b/versioning.html
@@ -0,0 +1,36 @@
+  <head>
+    <link rel="stylesheet" href="style.css" />
+  </head>
+    <body>
+  <div class="layout-container">
+  <section>
+  <nav class="sidebar"><ul>
+<li><a href="/">Home</a></li>
+<li><a href="/install">Install</a></li>
+<li><a href="/quick-start">Quick Start</a></li>
+<li><a href="/usage">Usage</a>
+<ul>
+<li><a href="/selective-changelogs">Selective Changelogs</a></li>
+<li><a href="/versioning">Version Management</a></li>
+<li><a href="/manual">Manual</a></li>
+</ul>
+</li>
+</ul>
+</nav></section><section><h3><a href="/">commitlog</a></h3>
+<h2>Version Management</h2>
+<p>There's not much to version management as it's a very simple handler of semver increments.</p>
+<h3>Initialise Versioning</h3>
+<p>To work with <code>commitlog release</code> you'll need a <code>.commitlog.release</code> file in your repo and that can be added using the following command. This will set the initial version to be <code>v0.0.0</code> when starting and you can sync it with you current package version manually by changing the file.
+(We wish to add automatic syncing with major language version management systems but I'll need help due to low bandwidth)</p>
+<pre><code class="language-sh">$ commitlog release init
+</code></pre>
+<h3>Increments</h3>
+<p>You can then run the <code>commitlog release</code> command to initialise the TUI flow for selecting the next version or you can do the same using the flags if you are in a <strong>non-interactive</strong> environment.</p>
+<p><strong>Note</strong>: Increments are of the standard semver spec with the minor change of pre-releases being called <strong>beta</strong> releases</p>
+</section></div>
+  <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
+  <script>
+    hljs.highlightAll();
+  </script>
+  </body>
+  
\ No newline at end of file

From e7abf5bd8bdf87be63fe1755755804936fc6dc8e Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Fri, 10 Jun 2022 11:06:43 +0000
Subject: [PATCH 03/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@540bb3d7419aab314fdb999dd57eeac3c53f5fad=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 index.html                | 14 +++++++-------
 install.html              | 14 +++++++-------
 manual.html               | 14 +++++++-------
 quick-start.html          | 14 +++++++-------
 selective-changelogs.html | 14 +++++++-------
 styles.html               | 14 +++++++-------
 usage.html                | 14 +++++++-------
 versioning.html           | 14 +++++++-------
 8 files changed, 56 insertions(+), 56 deletions(-)

diff --git a/index.html b/index.html
index 2ef181d..4df0e1b 100644
--- a/index.html
+++ b/index.html
@@ -5,14 +5,14 @@
   <div class="layout-container">
   <section>
   <nav class="sidebar"><ul>
-<li><a href="/">Home</a></li>
-<li><a href="/install">Install</a></li>
-<li><a href="/quick-start">Quick Start</a></li>
-<li><a href="/usage">Usage</a>
+<li><a href="/commitlog/">Home</a></li>
+<li><a href="/commitlog/install">Install</a></li>
+<li><a href="/commitlog/quick-start">Quick Start</a></li>
+<li><a href="/commitlog/usage">Usage</a>
 <ul>
-<li><a href="/selective-changelogs">Selective Changelogs</a></li>
-<li><a href="/versioning">Version Management</a></li>
-<li><a href="/manual">Manual</a></li>
+<li><a href="/commitlog/selective-changelogs">Selective Changelogs</a></li>
+<li><a href="/commitlog/versioning">Version Management</a></li>
+<li><a href="/commitlog/manual">Manual</a></li>
 </ul>
 </li>
 </ul>
diff --git a/install.html b/install.html
index b80dd33..718cd54 100644
--- a/install.html
+++ b/install.html
@@ -5,14 +5,14 @@
   <div class="layout-container">
   <section>
   <nav class="sidebar"><ul>
-<li><a href="/">Home</a></li>
-<li><a href="/install">Install</a></li>
-<li><a href="/quick-start">Quick Start</a></li>
-<li><a href="/usage">Usage</a>
+<li><a href="/commitlog/">Home</a></li>
+<li><a href="/commitlog/install">Install</a></li>
+<li><a href="/commitlog/quick-start">Quick Start</a></li>
+<li><a href="/commitlog/usage">Usage</a>
 <ul>
-<li><a href="/selective-changelogs">Selective Changelogs</a></li>
-<li><a href="/versioning">Version Management</a></li>
-<li><a href="/manual">Manual</a></li>
+<li><a href="/commitlog/selective-changelogs">Selective Changelogs</a></li>
+<li><a href="/commitlog/versioning">Version Management</a></li>
+<li><a href="/commitlog/manual">Manual</a></li>
 </ul>
 </li>
 </ul>
diff --git a/manual.html b/manual.html
index bf870fe..502cdea 100644
--- a/manual.html
+++ b/manual.html
@@ -5,14 +5,14 @@
   <div class="layout-container">
   <section>
   <nav class="sidebar"><ul>
-<li><a href="/">Home</a></li>
-<li><a href="/install">Install</a></li>
-<li><a href="/quick-start">Quick Start</a></li>
-<li><a href="/usage">Usage</a>
+<li><a href="/commitlog/">Home</a></li>
+<li><a href="/commitlog/install">Install</a></li>
+<li><a href="/commitlog/quick-start">Quick Start</a></li>
+<li><a href="/commitlog/usage">Usage</a>
 <ul>
-<li><a href="/selective-changelogs">Selective Changelogs</a></li>
-<li><a href="/versioning">Version Management</a></li>
-<li><a href="/manual">Manual</a></li>
+<li><a href="/commitlog/selective-changelogs">Selective Changelogs</a></li>
+<li><a href="/commitlog/versioning">Version Management</a></li>
+<li><a href="/commitlog/manual">Manual</a></li>
 </ul>
 </li>
 </ul>
diff --git a/quick-start.html b/quick-start.html
index 5eb1c43..11a14e2 100644
--- a/quick-start.html
+++ b/quick-start.html
@@ -5,14 +5,14 @@
   <div class="layout-container">
   <section>
   <nav class="sidebar"><ul>
-<li><a href="/">Home</a></li>
-<li><a href="/install">Install</a></li>
-<li><a href="/quick-start">Quick Start</a></li>
-<li><a href="/usage">Usage</a>
+<li><a href="/commitlog/">Home</a></li>
+<li><a href="/commitlog/install">Install</a></li>
+<li><a href="/commitlog/quick-start">Quick Start</a></li>
+<li><a href="/commitlog/usage">Usage</a>
 <ul>
-<li><a href="/selective-changelogs">Selective Changelogs</a></li>
-<li><a href="/versioning">Version Management</a></li>
-<li><a href="/manual">Manual</a></li>
+<li><a href="/commitlog/selective-changelogs">Selective Changelogs</a></li>
+<li><a href="/commitlog/versioning">Version Management</a></li>
+<li><a href="/commitlog/manual">Manual</a></li>
 </ul>
 </li>
 </ul>
diff --git a/selective-changelogs.html b/selective-changelogs.html
index caff62a..c835566 100644
--- a/selective-changelogs.html
+++ b/selective-changelogs.html
@@ -5,14 +5,14 @@
   <div class="layout-container">
   <section>
   <nav class="sidebar"><ul>
-<li><a href="/">Home</a></li>
-<li><a href="/install">Install</a></li>
-<li><a href="/quick-start">Quick Start</a></li>
-<li><a href="/usage">Usage</a>
+<li><a href="/commitlog/">Home</a></li>
+<li><a href="/commitlog/install">Install</a></li>
+<li><a href="/commitlog/quick-start">Quick Start</a></li>
+<li><a href="/commitlog/usage">Usage</a>
 <ul>
-<li><a href="/selective-changelogs">Selective Changelogs</a></li>
-<li><a href="/versioning">Version Management</a></li>
-<li><a href="/manual">Manual</a></li>
+<li><a href="/commitlog/selective-changelogs">Selective Changelogs</a></li>
+<li><a href="/commitlog/versioning">Version Management</a></li>
+<li><a href="/commitlog/manual">Manual</a></li>
 </ul>
 </li>
 </ul>
diff --git a/styles.html b/styles.html
index 7be5ad9..6ed7f21 100644
--- a/styles.html
+++ b/styles.html
@@ -5,14 +5,14 @@
   <div class="layout-container">
   <section>
   <nav class="sidebar"><ul>
-<li><a href="/">Home</a></li>
-<li><a href="/install">Install</a></li>
-<li><a href="/quick-start">Quick Start</a></li>
-<li><a href="/usage">Usage</a>
+<li><a href="/commitlog/">Home</a></li>
+<li><a href="/commitlog/install">Install</a></li>
+<li><a href="/commitlog/quick-start">Quick Start</a></li>
+<li><a href="/commitlog/usage">Usage</a>
 <ul>
-<li><a href="/selective-changelogs">Selective Changelogs</a></li>
-<li><a href="/versioning">Version Management</a></li>
-<li><a href="/manual">Manual</a></li>
+<li><a href="/commitlog/selective-changelogs">Selective Changelogs</a></li>
+<li><a href="/commitlog/versioning">Version Management</a></li>
+<li><a href="/commitlog/manual">Manual</a></li>
 </ul>
 </li>
 </ul>
diff --git a/usage.html b/usage.html
index c1a6cb4..7d9c9b6 100644
--- a/usage.html
+++ b/usage.html
@@ -5,14 +5,14 @@
   <div class="layout-container">
   <section>
   <nav class="sidebar"><ul>
-<li><a href="/">Home</a></li>
-<li><a href="/install">Install</a></li>
-<li><a href="/quick-start">Quick Start</a></li>
-<li><a href="/usage">Usage</a>
+<li><a href="/commitlog/">Home</a></li>
+<li><a href="/commitlog/install">Install</a></li>
+<li><a href="/commitlog/quick-start">Quick Start</a></li>
+<li><a href="/commitlog/usage">Usage</a>
 <ul>
-<li><a href="/selective-changelogs">Selective Changelogs</a></li>
-<li><a href="/versioning">Version Management</a></li>
-<li><a href="/manual">Manual</a></li>
+<li><a href="/commitlog/selective-changelogs">Selective Changelogs</a></li>
+<li><a href="/commitlog/versioning">Version Management</a></li>
+<li><a href="/commitlog/manual">Manual</a></li>
 </ul>
 </li>
 </ul>
diff --git a/versioning.html b/versioning.html
index e3f6777..d947990 100644
--- a/versioning.html
+++ b/versioning.html
@@ -5,14 +5,14 @@
   <div class="layout-container">
   <section>
   <nav class="sidebar"><ul>
-<li><a href="/">Home</a></li>
-<li><a href="/install">Install</a></li>
-<li><a href="/quick-start">Quick Start</a></li>
-<li><a href="/usage">Usage</a>
+<li><a href="/commitlog/">Home</a></li>
+<li><a href="/commitlog/install">Install</a></li>
+<li><a href="/commitlog/quick-start">Quick Start</a></li>
+<li><a href="/commitlog/usage">Usage</a>
 <ul>
-<li><a href="/selective-changelogs">Selective Changelogs</a></li>
-<li><a href="/versioning">Version Management</a></li>
-<li><a href="/manual">Manual</a></li>
+<li><a href="/commitlog/selective-changelogs">Selective Changelogs</a></li>
+<li><a href="/commitlog/versioning">Version Management</a></li>
+<li><a href="/commitlog/manual">Manual</a></li>
 </ul>
 </li>
 </ul>

From dfe514da2de8f686c859893ac0a17412e01eea2d Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Fri, 10 Jun 2022 12:17:23 +0000
Subject: [PATCH 04/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@2aa7eec88f5c58f29fa5741eb7694b9bb9d080c2=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/index.html b/index.html
index 4df0e1b..3310827 100644
--- a/index.html
+++ b/index.html
@@ -18,7 +18,7 @@
 </ul>
 </nav></section><section><p align="center">
   <img src="https://raw.githubusercontent.com/barelyhuman/commitlog/main/assets/commitlog.png" height="64">
-<p align="center">Changelog generator using Commit History</p>
+<p align="center">commits to changelogs</p>
 <p><a href="https://goreportcard.com/report/github.com/barelyhuman/commitlog"><img src="https://goreportcard.com/badge/github.com/barelyhuman/commitlog" alt="Go Report Card" /></a></p>
 <h2>Philosophy</h2>
 <ul>

From cf8f6f4573dbc717ba1c7924eface80e7cc52e70 Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Sat, 25 Jun 2022 14:43:34 +0000
Subject: [PATCH 05/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@c84ada69afa36578fd990135cfcbbe2672a6c0bb=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 index.html                | 2 +-
 install.html              | 2 +-
 manual.html               | 2 +-
 quick-start.html          | 6 +++---
 selective-changelogs.html | 2 +-
 usage.html                | 8 ++++----
 versioning.html           | 2 +-
 7 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/index.html b/index.html
index 3310827..0ceeffd 100644
--- a/index.html
+++ b/index.html
@@ -35,7 +35,7 @@ <h2>Why</h2>
 <h2>Documentation</h2>
 <p>The documentation can be read from the <code>docs</code> folder of the repository, or on the <a href="https://barelyhuman.github.io/commitlog">website</a></p>
 <h2>License</h2>
-<p><a href="/LICENSE">MIT</a></p>
+<p><a href="/commitlog/LICENSE">MIT</a></p>
 </section></div>
   <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
   <script>
diff --git a/install.html b/install.html
index 718cd54..536affe 100644
--- a/install.html
+++ b/install.html
@@ -16,7 +16,7 @@
 </ul>
 </li>
 </ul>
-</nav></section><section><h3><a href="/">commitlog</a></h3>
+</nav></section><section><h3><a href="/commitlog/">commitlog</a></h3>
 <h1>Install</h1>
 <h2>From goblin</h2>
 <p>Goblin will build the project for your specific system so it might take a bit of time based on the traffic</p>
diff --git a/manual.html b/manual.html
index 502cdea..8f4041a 100644
--- a/manual.html
+++ b/manual.html
@@ -16,7 +16,7 @@
 </ul>
 </li>
 </ul>
-</nav></section><section><h3><a href="/">commitlog</a></h3>
+</nav></section><section><h3><a href="/commitlog/">commitlog</a></h3>
 <h2>Manual</h2>
 <pre><code>$ commitlog &lt;subcommand&gt; [flags]
 </code></pre>
diff --git a/quick-start.html b/quick-start.html
index 11a14e2..63b2718 100644
--- a/quick-start.html
+++ b/quick-start.html
@@ -16,12 +16,12 @@
 </ul>
 </li>
 </ul>
-</nav></section><section><h3><a href="/">commitlog</a></h3>
+</nav></section><section><h3><a href="/commitlog/">commitlog</a></h3>
 <h1>Quick Start</h1>
 <h2>Changelog</h2>
 <ol>
 <li>
-<p>Install using one of the methods from <a href="/install">Installation Instructions</a></p>
+<p>Install using one of the methods from <a href="/commitlog/install">Installation Instructions</a></p>
 </li>
 <li>
 <p>Change terminal directory into the git repository you want the changelogs from.</p>
@@ -39,7 +39,7 @@ <h2>Changelog</h2>
 <h2>Version Management</h2>
 <ol>
 <li>
-<p>Install using one of the methods from <a href="/install">Installation Instructions</a></p>
+<p>Install using one of the methods from <a href="/commitlog/install">Installation Instructions</a></p>
 </li>
 <li>
 <p>Change terminal directory into the git repository you want the changelogs from.</p>
diff --git a/selective-changelogs.html b/selective-changelogs.html
index c835566..fcb3b31 100644
--- a/selective-changelogs.html
+++ b/selective-changelogs.html
@@ -16,7 +16,7 @@
 </ul>
 </li>
 </ul>
-</nav></section><section><h3><a href="/">commitlog</a></h3>
+</nav></section><section><h3><a href="/commitlog/">commitlog</a></h3>
 <h1>Selective Changelogs</h1>
 <h2>Classification</h2>
 <p>Commitlog was built on a minor subset of classification flags from the commitlint spec
diff --git a/usage.html b/usage.html
index 7d9c9b6..cdac17f 100644
--- a/usage.html
+++ b/usage.html
@@ -16,9 +16,9 @@
 </ul>
 </li>
 </ul>
-</nav></section><section><h3><a href="/">commitlog</a></h3>
+</nav></section><section><h3><a href="/commitlog/">commitlog</a></h3>
 <h1>Usage</h1>
-<p>If you are looking for an overview of the flags, please check the <a href="/manual">manual</a>.</p>
+<p>If you are looking for an overview of the flags, please check the <a href="/commitlog/manual">manual</a>.</p>
 <p>The base command should serve enough for most people but let's still get into the details of what can be done.</p>
 <ul>
 <li>The cli allows you to select a range which can be reference strings like (HEAD, HEAD~2) and this will give you commits in that range, exclusive of the end reference.</li>
@@ -26,8 +26,8 @@ <h1>Usage</h1>
 <li>You can also handle managing releases by using the <code>release</code> subcommand.</li>
 </ul>
 <p>For details on how to do each</p>
-<p><a href="/selective-changelogs">Selective Changelogs →</a></p>
-<p><a href="/versioning">Versioning →</a></p>
+<p><a href="/commitlog/selective-changelogs">Selective Changelogs →</a></p>
+<p><a href="/commitlog/versioning">Versioning →</a></p>
 </section></div>
   <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
   <script>
diff --git a/versioning.html b/versioning.html
index d947990..3d60a9d 100644
--- a/versioning.html
+++ b/versioning.html
@@ -16,7 +16,7 @@
 </ul>
 </li>
 </ul>
-</nav></section><section><h3><a href="/">commitlog</a></h3>
+</nav></section><section><h3><a href="/commitlog/">commitlog</a></h3>
 <h2>Version Management</h2>
 <p>There's not much to version management as it's a very simple handler of semver increments.</p>
 <h3>Initialise Versioning</h3>

From ce43e00a4e0e919d8268f9417614ccb865efb7ac Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Sun, 26 Jun 2022 09:27:53 +0000
Subject: [PATCH 06/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@540bb3d7419aab314fdb999dd57eeac3c53f5fad=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 index.html                | 4 ++--
 install.html              | 2 +-
 manual.html               | 2 +-
 quick-start.html          | 6 +++---
 selective-changelogs.html | 2 +-
 usage.html                | 8 ++++----
 versioning.html           | 2 +-
 7 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/index.html b/index.html
index 0ceeffd..4df0e1b 100644
--- a/index.html
+++ b/index.html
@@ -18,7 +18,7 @@
 </ul>
 </nav></section><section><p align="center">
   <img src="https://raw.githubusercontent.com/barelyhuman/commitlog/main/assets/commitlog.png" height="64">
-<p align="center">commits to changelogs</p>
+<p align="center">Changelog generator using Commit History</p>
 <p><a href="https://goreportcard.com/report/github.com/barelyhuman/commitlog"><img src="https://goreportcard.com/badge/github.com/barelyhuman/commitlog" alt="Go Report Card" /></a></p>
 <h2>Philosophy</h2>
 <ul>
@@ -35,7 +35,7 @@ <h2>Why</h2>
 <h2>Documentation</h2>
 <p>The documentation can be read from the <code>docs</code> folder of the repository, or on the <a href="https://barelyhuman.github.io/commitlog">website</a></p>
 <h2>License</h2>
-<p><a href="/commitlog/LICENSE">MIT</a></p>
+<p><a href="/LICENSE">MIT</a></p>
 </section></div>
   <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
   <script>
diff --git a/install.html b/install.html
index 536affe..718cd54 100644
--- a/install.html
+++ b/install.html
@@ -16,7 +16,7 @@
 </ul>
 </li>
 </ul>
-</nav></section><section><h3><a href="/commitlog/">commitlog</a></h3>
+</nav></section><section><h3><a href="/">commitlog</a></h3>
 <h1>Install</h1>
 <h2>From goblin</h2>
 <p>Goblin will build the project for your specific system so it might take a bit of time based on the traffic</p>
diff --git a/manual.html b/manual.html
index 8f4041a..502cdea 100644
--- a/manual.html
+++ b/manual.html
@@ -16,7 +16,7 @@
 </ul>
 </li>
 </ul>
-</nav></section><section><h3><a href="/commitlog/">commitlog</a></h3>
+</nav></section><section><h3><a href="/">commitlog</a></h3>
 <h2>Manual</h2>
 <pre><code>$ commitlog &lt;subcommand&gt; [flags]
 </code></pre>
diff --git a/quick-start.html b/quick-start.html
index 63b2718..11a14e2 100644
--- a/quick-start.html
+++ b/quick-start.html
@@ -16,12 +16,12 @@
 </ul>
 </li>
 </ul>
-</nav></section><section><h3><a href="/commitlog/">commitlog</a></h3>
+</nav></section><section><h3><a href="/">commitlog</a></h3>
 <h1>Quick Start</h1>
 <h2>Changelog</h2>
 <ol>
 <li>
-<p>Install using one of the methods from <a href="/commitlog/install">Installation Instructions</a></p>
+<p>Install using one of the methods from <a href="/install">Installation Instructions</a></p>
 </li>
 <li>
 <p>Change terminal directory into the git repository you want the changelogs from.</p>
@@ -39,7 +39,7 @@ <h2>Changelog</h2>
 <h2>Version Management</h2>
 <ol>
 <li>
-<p>Install using one of the methods from <a href="/commitlog/install">Installation Instructions</a></p>
+<p>Install using one of the methods from <a href="/install">Installation Instructions</a></p>
 </li>
 <li>
 <p>Change terminal directory into the git repository you want the changelogs from.</p>
diff --git a/selective-changelogs.html b/selective-changelogs.html
index fcb3b31..c835566 100644
--- a/selective-changelogs.html
+++ b/selective-changelogs.html
@@ -16,7 +16,7 @@
 </ul>
 </li>
 </ul>
-</nav></section><section><h3><a href="/commitlog/">commitlog</a></h3>
+</nav></section><section><h3><a href="/">commitlog</a></h3>
 <h1>Selective Changelogs</h1>
 <h2>Classification</h2>
 <p>Commitlog was built on a minor subset of classification flags from the commitlint spec
diff --git a/usage.html b/usage.html
index cdac17f..7d9c9b6 100644
--- a/usage.html
+++ b/usage.html
@@ -16,9 +16,9 @@
 </ul>
 </li>
 </ul>
-</nav></section><section><h3><a href="/commitlog/">commitlog</a></h3>
+</nav></section><section><h3><a href="/">commitlog</a></h3>
 <h1>Usage</h1>
-<p>If you are looking for an overview of the flags, please check the <a href="/commitlog/manual">manual</a>.</p>
+<p>If you are looking for an overview of the flags, please check the <a href="/manual">manual</a>.</p>
 <p>The base command should serve enough for most people but let's still get into the details of what can be done.</p>
 <ul>
 <li>The cli allows you to select a range which can be reference strings like (HEAD, HEAD~2) and this will give you commits in that range, exclusive of the end reference.</li>
@@ -26,8 +26,8 @@ <h1>Usage</h1>
 <li>You can also handle managing releases by using the <code>release</code> subcommand.</li>
 </ul>
 <p>For details on how to do each</p>
-<p><a href="/commitlog/selective-changelogs">Selective Changelogs →</a></p>
-<p><a href="/commitlog/versioning">Versioning →</a></p>
+<p><a href="/selective-changelogs">Selective Changelogs →</a></p>
+<p><a href="/versioning">Versioning →</a></p>
 </section></div>
   <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
   <script>
diff --git a/versioning.html b/versioning.html
index 3d60a9d..d947990 100644
--- a/versioning.html
+++ b/versioning.html
@@ -16,7 +16,7 @@
 </ul>
 </li>
 </ul>
-</nav></section><section><h3><a href="/commitlog/">commitlog</a></h3>
+</nav></section><section><h3><a href="/">commitlog</a></h3>
 <h2>Version Management</h2>
 <p>There's not much to version management as it's a very simple handler of semver increments.</p>
 <h3>Initialise Versioning</h3>

From 8c0032ffde3776badbef534415e6fc6e00aeffe4 Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Sun, 26 Jun 2022 09:28:39 +0000
Subject: [PATCH 07/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@909fd032facdeb4fb7633a4fad82dced28e8de83=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 index.html                | 4 ++--
 install.html              | 2 +-
 manual.html               | 2 +-
 quick-start.html          | 6 +++---
 selective-changelogs.html | 2 +-
 usage.html                | 8 ++++----
 versioning.html           | 2 +-
 7 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/index.html b/index.html
index 4df0e1b..0ceeffd 100644
--- a/index.html
+++ b/index.html
@@ -18,7 +18,7 @@
 </ul>
 </nav></section><section><p align="center">
   <img src="https://raw.githubusercontent.com/barelyhuman/commitlog/main/assets/commitlog.png" height="64">
-<p align="center">Changelog generator using Commit History</p>
+<p align="center">commits to changelogs</p>
 <p><a href="https://goreportcard.com/report/github.com/barelyhuman/commitlog"><img src="https://goreportcard.com/badge/github.com/barelyhuman/commitlog" alt="Go Report Card" /></a></p>
 <h2>Philosophy</h2>
 <ul>
@@ -35,7 +35,7 @@ <h2>Why</h2>
 <h2>Documentation</h2>
 <p>The documentation can be read from the <code>docs</code> folder of the repository, or on the <a href="https://barelyhuman.github.io/commitlog">website</a></p>
 <h2>License</h2>
-<p><a href="/LICENSE">MIT</a></p>
+<p><a href="/commitlog/LICENSE">MIT</a></p>
 </section></div>
   <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
   <script>
diff --git a/install.html b/install.html
index 718cd54..536affe 100644
--- a/install.html
+++ b/install.html
@@ -16,7 +16,7 @@
 </ul>
 </li>
 </ul>
-</nav></section><section><h3><a href="/">commitlog</a></h3>
+</nav></section><section><h3><a href="/commitlog/">commitlog</a></h3>
 <h1>Install</h1>
 <h2>From goblin</h2>
 <p>Goblin will build the project for your specific system so it might take a bit of time based on the traffic</p>
diff --git a/manual.html b/manual.html
index 502cdea..8f4041a 100644
--- a/manual.html
+++ b/manual.html
@@ -16,7 +16,7 @@
 </ul>
 </li>
 </ul>
-</nav></section><section><h3><a href="/">commitlog</a></h3>
+</nav></section><section><h3><a href="/commitlog/">commitlog</a></h3>
 <h2>Manual</h2>
 <pre><code>$ commitlog &lt;subcommand&gt; [flags]
 </code></pre>
diff --git a/quick-start.html b/quick-start.html
index 11a14e2..63b2718 100644
--- a/quick-start.html
+++ b/quick-start.html
@@ -16,12 +16,12 @@
 </ul>
 </li>
 </ul>
-</nav></section><section><h3><a href="/">commitlog</a></h3>
+</nav></section><section><h3><a href="/commitlog/">commitlog</a></h3>
 <h1>Quick Start</h1>
 <h2>Changelog</h2>
 <ol>
 <li>
-<p>Install using one of the methods from <a href="/install">Installation Instructions</a></p>
+<p>Install using one of the methods from <a href="/commitlog/install">Installation Instructions</a></p>
 </li>
 <li>
 <p>Change terminal directory into the git repository you want the changelogs from.</p>
@@ -39,7 +39,7 @@ <h2>Changelog</h2>
 <h2>Version Management</h2>
 <ol>
 <li>
-<p>Install using one of the methods from <a href="/install">Installation Instructions</a></p>
+<p>Install using one of the methods from <a href="/commitlog/install">Installation Instructions</a></p>
 </li>
 <li>
 <p>Change terminal directory into the git repository you want the changelogs from.</p>
diff --git a/selective-changelogs.html b/selective-changelogs.html
index c835566..fcb3b31 100644
--- a/selective-changelogs.html
+++ b/selective-changelogs.html
@@ -16,7 +16,7 @@
 </ul>
 </li>
 </ul>
-</nav></section><section><h3><a href="/">commitlog</a></h3>
+</nav></section><section><h3><a href="/commitlog/">commitlog</a></h3>
 <h1>Selective Changelogs</h1>
 <h2>Classification</h2>
 <p>Commitlog was built on a minor subset of classification flags from the commitlint spec
diff --git a/usage.html b/usage.html
index 7d9c9b6..cdac17f 100644
--- a/usage.html
+++ b/usage.html
@@ -16,9 +16,9 @@
 </ul>
 </li>
 </ul>
-</nav></section><section><h3><a href="/">commitlog</a></h3>
+</nav></section><section><h3><a href="/commitlog/">commitlog</a></h3>
 <h1>Usage</h1>
-<p>If you are looking for an overview of the flags, please check the <a href="/manual">manual</a>.</p>
+<p>If you are looking for an overview of the flags, please check the <a href="/commitlog/manual">manual</a>.</p>
 <p>The base command should serve enough for most people but let's still get into the details of what can be done.</p>
 <ul>
 <li>The cli allows you to select a range which can be reference strings like (HEAD, HEAD~2) and this will give you commits in that range, exclusive of the end reference.</li>
@@ -26,8 +26,8 @@ <h1>Usage</h1>
 <li>You can also handle managing releases by using the <code>release</code> subcommand.</li>
 </ul>
 <p>For details on how to do each</p>
-<p><a href="/selective-changelogs">Selective Changelogs →</a></p>
-<p><a href="/versioning">Versioning →</a></p>
+<p><a href="/commitlog/selective-changelogs">Selective Changelogs →</a></p>
+<p><a href="/commitlog/versioning">Versioning →</a></p>
 </section></div>
   <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
   <script>
diff --git a/versioning.html b/versioning.html
index d947990..3d60a9d 100644
--- a/versioning.html
+++ b/versioning.html
@@ -16,7 +16,7 @@
 </ul>
 </li>
 </ul>
-</nav></section><section><h3><a href="/">commitlog</a></h3>
+</nav></section><section><h3><a href="/commitlog/">commitlog</a></h3>
 <h2>Version Management</h2>
 <p>There's not much to version management as it's a very simple handler of semver increments.</p>
 <h3>Initialise Versioning</h3>

From ebc15533730bc856713982d953c36c2cdf7eb1f0 Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Sun, 26 Jun 2022 11:42:42 +0000
Subject: [PATCH 08/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@d2aaccfce4e53c95c1f2800e15fa29ac5c43924e=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 download.html             |  36 +++++++++
 index.html                |  15 +---
 install.html              |  53 ------------
 manual.html               |  71 +++-------------
 quick-start.html          |  67 ----------------
 selective-changelogs.html |  69 ----------------
 style.css                 | 165 +-------------------------------------
 styles.html               | 161 -------------------------------------
 usage.html                |  37 ---------
 versioning.html           |  36 ---------
 10 files changed, 49 insertions(+), 661 deletions(-)
 create mode 100644 download.html
 delete mode 100644 install.html
 delete mode 100644 quick-start.html
 delete mode 100644 selective-changelogs.html
 delete mode 100644 styles.html
 delete mode 100644 usage.html
 delete mode 100644 versioning.html

diff --git a/download.html b/download.html
new file mode 100644
index 0000000..4d31a71
--- /dev/null
+++ b/download.html
@@ -0,0 +1,36 @@
+  <head>
+    <link rel="stylesheet" href="style.css" />
+  </head>
+    <body>
+  <div class="layout-container">
+  <section><!-- meta -->
+<title>
+    commitlog | downloads
+</title>
+<meta name="description" content="commits to changelog generator">
+<!-- meta end -->
+<h3><a href="/commitlog/">commitlog</a></h3>
+<p><a href="/commitlog/manual">Manual</a><br />
+<a href="/commitlog/download">Download ↓</a></p>
+<h4>Downloads</h4>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-darwin-amd64.tar.gz%22">commitlog-v2.0.0-beta.0-darwin-amd64.tar.gz</a><br />
+<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-darwin-amd64.tar.gz.md5%22">commitlog-v2.0.0-beta.0-darwin-amd64.tar.gz.md5</a><br />
+<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-darwin-arm64.tar.gz%22">commitlog-v2.0.0-beta.0-darwin-arm64.tar.gz</a><br />
+<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-darwin-arm64.tar.gz.md5%22">commitlog-v2.0.0-beta.0-darwin-arm64.tar.gz.md5</a><br />
+<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-linux-386.tar.gz%22">commitlog-v2.0.0-beta.0-linux-386.tar.gz</a><br />
+<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-linux-386.tar.gz.md5%22">commitlog-v2.0.0-beta.0-linux-386.tar.gz.md5</a><br />
+<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-linux-amd64.tar.gz%22">commitlog-v2.0.0-beta.0-linux-amd64.tar.gz</a><br />
+<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-linux-amd64.tar.gz.md5%22">commitlog-v2.0.0-beta.0-linux-amd64.tar.gz.md5</a><br />
+<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-linux-arm64.tar.gz%22">commitlog-v2.0.0-beta.0-linux-arm64.tar.gz</a><br />
+<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-linux-arm64.tar.gz.md5%22">commitlog-v2.0.0-beta.0-linux-arm64.tar.gz.md5</a><br />
+<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-windows-386.zip%22">commitlog-v2.0.0-beta.0-windows-386.zip</a><br />
+<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-windows-386.zip.md5%22">commitlog-v2.0.0-beta.0-windows-386.zip.md5</a><br />
+<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-windows-amd64.zip%22">commitlog-v2.0.0-beta.0-windows-amd64.zip</a><br />
+<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-windows-amd64.zip.md5%22">commitlog-v2.0.0-beta.0-windows-amd64.zip.md5</a></p>
+</section></div>
+  <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
+  <script>
+    hljs.highlightAll();
+  </script>
+  </body>
+  
\ No newline at end of file
diff --git a/index.html b/index.html
index 0ceeffd..4094ed7 100644
--- a/index.html
+++ b/index.html
@@ -3,20 +3,7 @@
   </head>
     <body>
   <div class="layout-container">
-  <section>
-  <nav class="sidebar"><ul>
-<li><a href="/commitlog/">Home</a></li>
-<li><a href="/commitlog/install">Install</a></li>
-<li><a href="/commitlog/quick-start">Quick Start</a></li>
-<li><a href="/commitlog/usage">Usage</a>
-<ul>
-<li><a href="/commitlog/selective-changelogs">Selective Changelogs</a></li>
-<li><a href="/commitlog/versioning">Version Management</a></li>
-<li><a href="/commitlog/manual">Manual</a></li>
-</ul>
-</li>
-</ul>
-</nav></section><section><p align="center">
+  <section><p align="center">
   <img src="https://raw.githubusercontent.com/barelyhuman/commitlog/main/assets/commitlog.png" height="64">
 <p align="center">commits to changelogs</p>
 <p><a href="https://goreportcard.com/report/github.com/barelyhuman/commitlog"><img src="https://goreportcard.com/badge/github.com/barelyhuman/commitlog" alt="Go Report Card" /></a></p>
diff --git a/install.html b/install.html
deleted file mode 100644
index 536affe..0000000
--- a/install.html
+++ /dev/null
@@ -1,53 +0,0 @@
-  <head>
-    <link rel="stylesheet" href="style.css" />
-  </head>
-    <body>
-  <div class="layout-container">
-  <section>
-  <nav class="sidebar"><ul>
-<li><a href="/commitlog/">Home</a></li>
-<li><a href="/commitlog/install">Install</a></li>
-<li><a href="/commitlog/quick-start">Quick Start</a></li>
-<li><a href="/commitlog/usage">Usage</a>
-<ul>
-<li><a href="/commitlog/selective-changelogs">Selective Changelogs</a></li>
-<li><a href="/commitlog/versioning">Version Management</a></li>
-<li><a href="/commitlog/manual">Manual</a></li>
-</ul>
-</li>
-</ul>
-</nav></section><section><h3><a href="/commitlog/">commitlog</a></h3>
-<h1>Install</h1>
-<h2>From goblin</h2>
-<p>Goblin will build the project for your specific system so it might take a bit of time based on the traffic</p>
-<pre><code class="language-sh">curl -sf https://goblin.reaper.im/github.com/barelyhuman/commitlog
-</code></pre>
-<h2>From Releases</h2>
-<p>To avoid the above work load you can download the binaries from the github releases pages
-<a href="https://github.com/barelyhuman/commitlog/releases">Commitlog Releases →</a></p>
-<h2>From Source</h2>
-<p>If you have golang installed on your system you can build the binary on your system</p>
-<pre><code class="language-sh"># clone the repository
-git clone https://github.com/barelyhuman/commitlog
-
-# cd into the folder
-cd commitlog
-
-# run go mod to download needed deps
-go mod tidy
-
-# run go build and wait for it to complete
-go build
-
-# if on unix, use the `install` command to install it onto a system used path
-install goblin /usr/local/bin
-# or if you need perms
-sudo install goblin /usr/local/bin
-</code></pre>
-</section></div>
-  <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
-  <script>
-    hljs.highlightAll();
-  </script>
-  </body>
-  
\ No newline at end of file
diff --git a/manual.html b/manual.html
index 8f4041a..1d7d65d 100644
--- a/manual.html
+++ b/manual.html
@@ -3,66 +3,17 @@
   </head>
     <body>
   <div class="layout-container">
-  <section>
-  <nav class="sidebar"><ul>
-<li><a href="/commitlog/">Home</a></li>
-<li><a href="/commitlog/install">Install</a></li>
-<li><a href="/commitlog/quick-start">Quick Start</a></li>
-<li><a href="/commitlog/usage">Usage</a>
-<ul>
-<li><a href="/commitlog/selective-changelogs">Selective Changelogs</a></li>
-<li><a href="/commitlog/versioning">Version Management</a></li>
-<li><a href="/commitlog/manual">Manual</a></li>
-</ul>
-</li>
-</ul>
-</nav></section><section><h3><a href="/commitlog/">commitlog</a></h3>
-<h2>Manual</h2>
-<pre><code>$ commitlog &lt;subcommand&gt; [flags]
-</code></pre>
-<h3>Subcommands</h3>
-<ul>
-<li><code>log</code></li>
-<li><code>release</code> (added in v0.0.7-dev.7)</li>
-</ul>
-<h4><code>commitlog log</code></h4>
-<pre><code class="language-sh">eg:
-$ commitlog log -p .
-## or the shorthand
-$ commitlog
-</code></pre>
-<pre><code class="language-sh">Usage of commitlog:
-  -e string
-        commit hash string / revision (ex. HEAD, HEAD^, HEAD~2)
-         to stop collecting commit message at
-  -i string
-        commit types to be includes (default &quot;ci|refactor|docs|fix|feat|test|chore|other&quot;)
-  -p string
-        path to the repository, points to the current working directory by default (default &quot;.&quot;)
-  -promo
-        if enabled will add a &quot;generated by&quot; promotional tag to the changelog
-  -s string
-        commit hash string / revision (ex. HEAD, HEAD^, HEAD~2)
-         to start collecting commit messages from
-  -skip
-        if enabled will skip trying to classify and just give a list of changes
-</code></pre>
-<p><small><code>-promo</code> (added in v1.0.0)</small></p>
-<h4><code>commitlog release</code></h4>
-<pre><code class="language-sh">$ commitlog release [init | &lt;flags&gt;]
-</code></pre>
-<pre><code class="language-sh">Usage of release:
-  -beta
-        If the release is a beta/prerelease
-  -beta-suffix -beta.x
-        If the release is a beta, to add/increment tag with -beta.x or mentioned string
-  -major
-        If release is a *major* one, will increment the x.0.0
-  -minor
-        If release is a *minor* one, will increment the 0.x.0
-  -patch
-        If release is a *patch*, will increment the 0.0.x
-</code></pre>
+  <section><!-- meta -->
+<title>
+    commitlog | manual
+</title>
+<meta name="description" content="commits to changelog generator">
+<!-- meta end -->
+<h3><a href="/commitlog/">commitlog</a></h3>
+<p><a href="/commitlog/manual">Manual</a><br />
+<a href="/commitlog/download">Download ↓</a></p>
+<h1>Manual</h1>
+<p>TBD</p>
 </section></div>
   <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
   <script>
diff --git a/quick-start.html b/quick-start.html
deleted file mode 100644
index 63b2718..0000000
--- a/quick-start.html
+++ /dev/null
@@ -1,67 +0,0 @@
-  <head>
-    <link rel="stylesheet" href="style.css" />
-  </head>
-    <body>
-  <div class="layout-container">
-  <section>
-  <nav class="sidebar"><ul>
-<li><a href="/commitlog/">Home</a></li>
-<li><a href="/commitlog/install">Install</a></li>
-<li><a href="/commitlog/quick-start">Quick Start</a></li>
-<li><a href="/commitlog/usage">Usage</a>
-<ul>
-<li><a href="/commitlog/selective-changelogs">Selective Changelogs</a></li>
-<li><a href="/commitlog/versioning">Version Management</a></li>
-<li><a href="/commitlog/manual">Manual</a></li>
-</ul>
-</li>
-</ul>
-</nav></section><section><h3><a href="/commitlog/">commitlog</a></h3>
-<h1>Quick Start</h1>
-<h2>Changelog</h2>
-<ol>
-<li>
-<p>Install using one of the methods from <a href="/commitlog/install">Installation Instructions</a></p>
-</li>
-<li>
-<p>Change terminal directory into the git repository you want the changelogs from.</p>
-</li>
-<li>
-<p>run the base command</p>
-<pre><code class="language-sh"># on mac
-$ commitlog | pbcopy
-
-# on linux with x11
-$ commitlog | xclip
-</code></pre>
-</li>
-</ol>
-<h2>Version Management</h2>
-<ol>
-<li>
-<p>Install using one of the methods from <a href="/commitlog/install">Installation Instructions</a></p>
-</li>
-<li>
-<p>Change terminal directory into the git repository you want the changelogs from.</p>
-</li>
-<li>
-<p>Initialise version management</p>
-<pre><code class="language-sh">$ commitlog release init
-</code></pre>
-</li>
-<li>
-<p>If working in an existing project, change the <code>.commitlog.release</code> file to match with the current version of the project.</p>
-</li>
-<li>
-<p>Run the needed command to increase versino</p>
-<pre><code class="language-sh">$ commitlog release
-</code></pre>
-</li>
-</ol>
-</section></div>
-  <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
-  <script>
-    hljs.highlightAll();
-  </script>
-  </body>
-  
\ No newline at end of file
diff --git a/selective-changelogs.html b/selective-changelogs.html
deleted file mode 100644
index fcb3b31..0000000
--- a/selective-changelogs.html
+++ /dev/null
@@ -1,69 +0,0 @@
-  <head>
-    <link rel="stylesheet" href="style.css" />
-  </head>
-    <body>
-  <div class="layout-container">
-  <section>
-  <nav class="sidebar"><ul>
-<li><a href="/commitlog/">Home</a></li>
-<li><a href="/commitlog/install">Install</a></li>
-<li><a href="/commitlog/quick-start">Quick Start</a></li>
-<li><a href="/commitlog/usage">Usage</a>
-<ul>
-<li><a href="/commitlog/selective-changelogs">Selective Changelogs</a></li>
-<li><a href="/commitlog/versioning">Version Management</a></li>
-<li><a href="/commitlog/manual">Manual</a></li>
-</ul>
-</li>
-</ul>
-</nav></section><section><h3><a href="/commitlog/">commitlog</a></h3>
-<h1>Selective Changelogs</h1>
-<h2>Classification</h2>
-<p>Commitlog was built on a minor subset of classification flags from the commitlint spec
-which includes the following type of commits.</p>
-<p><code>ci|refactor|docs|fix|feat|test|chore|other</code></p>
-<p>These are all turned on by default on the cli and will use the commit message's subject to classify commits for you.</p>
-<p>Eg:
-The following git message would generate a commitlog like so</p>
-<pre><code># git message
-feat: added handling for feature flags
-</code></pre>
-<pre><code class="language-markdown">&lt;!-- COMMITLOG --&gt;
-
-# Features
-
-53cb64436a3df5b22702cf6d012a4d09df93d930 - added handling for feature flags
-</code></pre>
-<p>Everything that cannot be classified in the above types will be put into <code>other</code></p>
-<h3>Selected types</h3>
-<p>If you only want to include feature and fix flags for changelogs you could do so in the following manner</p>
-<pre><code class="language-sh">$ commitlog -i &quot;fix|feat&quot;
-# or
-$ commitlog -i &quot;fix,feat&quot;
-</code></pre>
-<h3>Skip classification</h3>
-<p>If you wish to avoid classification all together and just want commits between a range you can do so as well (though you are better off without the tool for this usecase since git handles this natively)</p>
-<pre><code class="language-sh">$ commitlog --skip
-</code></pre>
-<h2>Commits in range</h2>
-<p>A very common use case is to get commits between a range if you aren't using tags in your current workflow.
-This can be done by using <strong>git revision handles</strong> or the <strong>commit hashes</strong>.</p>
-<p>Eg:
-Let's say I want the last 3 commits</p>
-<pre><code class="language-sh">$ commitlog -s HEAD -e HEAD~4
-</code></pre>
-<p><small><code>HEAD~4</code> since the end commit is excluded from the range.</small></p>
-<p>Both <code>-s</code> and <code>-e</code> are individual flags and don't have to be used together.</p>
-<p>So something like will also give you the last 4 commits.</p>
-<pre><code class="language-sh">$ commitlog -e HEAD~4
-</code></pre>
-<p>and the following would give you all commits till the next tagged instance starting form the given commit</p>
-<pre><code class="language-sh">$ commitlog -s HEAD~4
-</code></pre>
-</section></div>
-  <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
-  <script>
-    hljs.highlightAll();
-  </script>
-  </body>
-  
\ No newline at end of file
diff --git a/style.css b/style.css
index 4162af1..a0c8300 100644
--- a/style.css
+++ b/style.css
@@ -1,164 +1 @@
-@import url("https://rsms.me/inter/inter.css");
-@import url("https://cdn.jsdelivr.net/npm/hack-font@3/build/web/hack.css");
-
-@import url("https://unpkg.com/highlight.js@11.5.1/styles/base16/one-light.css")
-screen;
-
-@import url("https://unpkg.com/highlight.js@11.5.1/styles/base16/onedark.css")
-  screen and (prefers-color-scheme: dark);
-
-/* https://barelyhuman.github.io/zinccolors/ */
-:root {
-  --zinc-50: #fafafa;
-  --zinc-100: #f4f4f5;
-  --zinc-200: #e4e4e7;
-  --zinc-300: #d4d4d8;
-  --zinc-400: #a1a1aa;
-  --zinc-500: #71717a;
-  --zinc-600: #52525b;
-  --zinc-700: #3f3f46;
-  --zinc-800: #27272a;
-  --zinc-900: #18181b;
-}
-
-/* vars for everything else */
-:root {
-  --base: var(--zinc-50);
-  --surface: var(--zinc-100);
-  --overlay: var(--zinc-200);
-  --text: var(--zinc-700);
-  --subtle: var(--zinc-400);
-  --muted: var(--zinc-300);
-
-  --font-sans: "Hack", monospace;
-  --font-mono: "Hack", monospace;
-}
-
-html {
-  font-size: 100%;
-}
-
-body {
-  background: var(--base);
-  font-family: var(--font-sans);
-  font-weight: 400;
-  line-height: 1.75;
-  color: var(--text);
-  margin: 0 auto;
-  padding: 1rem;
-}
-
-p {
-  margin-bottom: 1rem;
-}
-
-h1,
-h2,
-h3,
-h4,
-h5 {
-  margin: 3rem 0 1.38rem;
-  font-family: var(--font-sans);
-  font-weight: 400;
-  line-height: 1.3;
-}
-
-h1 {
-  margin-top: 0;
-  font-size: 3.052rem;
-}
-
-h2 {
-  font-size: 2.441rem;
-}
-
-h3 {
-  font-size: 1.953rem;
-}
-
-h4 {
-  font-size: 1.563rem;
-}
-
-h5 {
-  font-size: 1.25rem;
-}
-
-small,
-.text_small {
-  font-size: 0.8rem;
-}
-
-pre,
-code {
-  font-family: var(--font-mono);
-}
-
-code {
-  background: var(--surface);
-  padding: 2px;
-  border-radius: 4px;
-}
-
-pre {
-  white-space: pre-wrap;
-}
-
-pre > .hljs {
-  background: var(--surface);
-  border-radius: 6px;
-  padding: 1em;
-}
-
-a {
-  color: var(--subtle);
-  text-decoration: none;
-}
-
-a:hover {
-  color: var(--text);
-  text-decoration: underline;
-}
-
-.layout-container {
-  display: flex;
-  align-items: baseline;
-  gap: 1em;
-}
-
-nav.sidebar {
-  display: none;
-  min-width: 250px;
-  max-width: 350px;
-}
-
-nav.sidebar ul {
-  padding-left: 0.75rem;
-}
-
-nav.sidebar li {
-  list-style-type: none;
-}
-
-nav.sidebar li::before {
-  content: "\2192";
-  color: var(--muted);
-  margin-inline-end: 1ch;
-}
-
-@media screen and (prefers-color-scheme: dark) {
-  :root {
-    --base: var(--zinc-900);
-    --surface: var(--zinc-800);
-    --overlay: var(--zinc-700);
-    --text: var(--zinc-100);
-    --subtle: var(--zinc-400);
-    --muted: var(--zinc-500);
-  }
-}
-
-@media screen and (min-width: 768px) {
-  nav.sidebar {
-    display: flex;
-  }
-}
+@import "https://rsms.me/inter/inter.css";@import "https://cdn.jsdelivr.net/npm/hack-font@3/build/web/hack.css";@import "https://unpkg.com/highlight.js@11.5.1/styles/base16/one-light.css" screen;@import "https://unpkg.com/highlight.js@11.5.1/styles/base16/onedark.css" screen and (prefers-color-scheme:dark);:root{--zinc-50:#fafafa;--zinc-100:#f4f4f5;--zinc-200:#e4e4e7;--zinc-300:#d4d4d8;--zinc-400:#a1a1aa;--zinc-500:#71717a;--zinc-600:#52525b;--zinc-700:#3f3f46;--zinc-800:#27272a;--zinc-900:#18181b;--base:var(--zinc-50);--surface:var(--zinc-100);--overlay:var(--zinc-200);--text:var(--zinc-700);--subtle:var(--zinc-400);--muted:var(--zinc-300);--font-sans:"Inter",sans-serif;--font-mono:"Hack",monospace}html{font-size:100%}body{background:var(--base);font-family:var(--font-sans);color:var(--text);margin:0 auto;padding:1rem;font-weight:400;line-height:1.75}p{margin-bottom:1rem}h1,h2,h3,h4,h5{margin:3rem 0 1.38rem;font-family:Inter,sans-serif;font-weight:400;line-height:1.3}h1{margin-top:0;font-size:3.052rem}h2{font-size:2.441rem}h3{font-size:1.953rem}h4{font-size:1.563rem}h5{font-size:1.25rem}small,.text_small{font-size:.8rem}pre,code{font-family:var(--font-mono)}code{background:var(--surface);border-radius:4px;padding:2px}pre{white-space:pre-wrap}pre>.hljs{background:var(--base);border-radius:6px;padding:0!important}a{color:var(--subtle);text-decoration:none}a:hover{color:var(--text);text-decoration:underline}.layout-container{align-items:baseline;gap:1em;display:flex}nav.sidebar{min-width:250px;max-width:350px}nav.sidebar li{list-style-type:none}nav.sidebar li:before{content:"→";color:var(--muted)}nav.sidebar li:not(:lang(ae)):not(:lang(ar)):not(:lang(arc)):not(:lang(bcc)):not(:lang(bqi)):not(:lang(ckb)):not(:lang(dv)):not(:lang(fa)):not(:lang(glk)):not(:lang(he)):not(:lang(ku)):not(:lang(mzn)):not(:lang(nqo)):not(:lang(pnb)):not(:lang(ps)):not(:lang(sd)):not(:lang(ug)):not(:lang(ur)):not(:lang(yi)):before{margin-right:1ch}nav.sidebar li:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)):before{margin-left:1ch}nav.sidebar li:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)):before{margin-left:1ch}@media screen and (prefers-color-scheme:dark){:root{--base:var(--zinc-900);--surface:var(--zinc-800);--overlay:var(--zinc-700);--text:var(--zinc-100);--subtle:var(--zinc-400);--muted:var(--zinc-500)}}
\ No newline at end of file
diff --git a/styles.html b/styles.html
deleted file mode 100644
index 6ed7f21..0000000
--- a/styles.html
+++ /dev/null
@@ -1,161 +0,0 @@
-  <head>
-    <link rel="stylesheet" href="style.css" />
-  </head>
-    <body>
-  <div class="layout-container">
-  <section>
-  <nav class="sidebar"><ul>
-<li><a href="/commitlog/">Home</a></li>
-<li><a href="/commitlog/install">Install</a></li>
-<li><a href="/commitlog/quick-start">Quick Start</a></li>
-<li><a href="/commitlog/usage">Usage</a>
-<ul>
-<li><a href="/commitlog/selective-changelogs">Selective Changelogs</a></li>
-<li><a href="/commitlog/versioning">Version Management</a></li>
-<li><a href="/commitlog/manual">Manual</a></li>
-</ul>
-</li>
-</ul>
-</nav></section><section><p>@import url(&quot;https://rsms.me/inter/inter.css&quot;);
-@import url(&quot;https://cdn.jsdelivr.net/npm/hack-font@3/build/web/hack.css&quot;);</p>
-<p>@import url(&quot;https://unpkg.com/highlight.js@11.5.1/styles/base16/one-light.css&quot;)
-screen;</p>
-<p>@import url(&quot;https://unpkg.com/highlight.js@11.5.1/styles/base16/onedark.css&quot;)
-screen and (prefers-color-scheme: dark);</p>
-<p>/* https://barelyhuman.github.io/zinccolors/ */
-:root {
---zinc-50: #fafafa;
---zinc-100: #f4f4f5;
---zinc-200: #e4e4e7;
---zinc-300: #d4d4d8;
---zinc-400: #a1a1aa;
---zinc-500: #71717a;
---zinc-600: #52525b;
---zinc-700: #3f3f46;
---zinc-800: #27272a;
---zinc-900: #18181b;
-}</p>
-<p>/* vars for everything else */
-:root {
---base: var(--zinc-50);
---surface: var(--zinc-100);
---overlay: var(--zinc-200);
---text: var(--zinc-700);
---subtle: var(--zinc-400);
---muted: var(--zinc-300);</p>
-<p>--font-sans: &quot;Hack&quot;, monospace;
---font-mono: &quot;Hack&quot;, monospace;
-}</p>
-<p>html {
-font-size: 100%;
-}</p>
-<p>body {
-background: var(--base);
-font-family: var(--font-sans);
-font-weight: 400;
-line-height: 1.75;
-color: var(--text);
-margin: 0 auto;
-padding: 1rem;
-}</p>
-<p>p {
-margin-bottom: 1rem;
-}</p>
-<p>h1,
-h2,
-h3,
-h4,
-h5 {
-margin: 3rem 0 1.38rem;
-font-family: var(--font-sans);
-font-weight: 400;
-line-height: 1.3;
-}</p>
-<p>h1 {
-margin-top: 0;
-font-size: 3.052rem;
-}</p>
-<p>h2 {
-font-size: 2.441rem;
-}</p>
-<p>h3 {
-font-size: 1.953rem;
-}</p>
-<p>h4 {
-font-size: 1.563rem;
-}</p>
-<p>h5 {
-font-size: 1.25rem;
-}</p>
-<p>small,
-.text_small {
-font-size: 0.8rem;
-}</p>
-<p>pre,
-code {
-font-family: var(--font-mono);
-}</p>
-<p>code {
-background: var(--surface);
-padding: 2px;
-border-radius: 4px;
-}</p>
-<p>pre {
-white-space: pre-wrap;
-}</p>
-<p>pre &gt; .hljs {
-background: var(--surface);
-border-radius: 6px;
-padding: 1em;
-}</p>
-<p>a {
-color: var(--subtle);
-text-decoration: none;
-}</p>
-<p>a:hover {
-color: var(--text);
-text-decoration: underline;
-}</p>
-<p>.layout-container {
-display: flex;
-align-items: baseline;
-gap: 1em;
-}</p>
-<p>nav.sidebar {
-display: none;
-min-width: 250px;
-max-width: 350px;
-}</p>
-<p>nav.sidebar ul {
-padding-left: 0.75rem;
-}</p>
-<p>nav.sidebar li {
-list-style-type: none;
-}</p>
-<p>nav.sidebar li::before {
-content: &quot;\2192&quot;;
-color: var(--muted);
-margin-inline-end: 1ch;
-}</p>
-<p>@media screen and (prefers-color-scheme: dark) {
-:root {
---base: var(--zinc-900);
---surface: var(--zinc-800);
---overlay: var(--zinc-700);
---text: var(--zinc-100);
---subtle: var(--zinc-400);
---muted: var(--zinc-500);
-}
-}</p>
-<p>@media screen and (min-width: 768px) {
-nav.sidebar {
-display: flex;
-}
-}</p>
-</section></div>
-  <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
-  <script>
-    hljs.highlightAll();
-  </script>
-  </body>
-  
\ No newline at end of file
diff --git a/usage.html b/usage.html
deleted file mode 100644
index cdac17f..0000000
--- a/usage.html
+++ /dev/null
@@ -1,37 +0,0 @@
-  <head>
-    <link rel="stylesheet" href="style.css" />
-  </head>
-    <body>
-  <div class="layout-container">
-  <section>
-  <nav class="sidebar"><ul>
-<li><a href="/commitlog/">Home</a></li>
-<li><a href="/commitlog/install">Install</a></li>
-<li><a href="/commitlog/quick-start">Quick Start</a></li>
-<li><a href="/commitlog/usage">Usage</a>
-<ul>
-<li><a href="/commitlog/selective-changelogs">Selective Changelogs</a></li>
-<li><a href="/commitlog/versioning">Version Management</a></li>
-<li><a href="/commitlog/manual">Manual</a></li>
-</ul>
-</li>
-</ul>
-</nav></section><section><h3><a href="/commitlog/">commitlog</a></h3>
-<h1>Usage</h1>
-<p>If you are looking for an overview of the flags, please check the <a href="/commitlog/manual">manual</a>.</p>
-<p>The base command should serve enough for most people but let's still get into the details of what can be done.</p>
-<ul>
-<li>The cli allows you to select a range which can be reference strings like (HEAD, HEAD~2) and this will give you commits in that range, exclusive of the end reference.</li>
-<li>classification is optional but is turned on by default and uses the inclusion types to do the classification</li>
-<li>You can also handle managing releases by using the <code>release</code> subcommand.</li>
-</ul>
-<p>For details on how to do each</p>
-<p><a href="/commitlog/selective-changelogs">Selective Changelogs →</a></p>
-<p><a href="/commitlog/versioning">Versioning →</a></p>
-</section></div>
-  <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
-  <script>
-    hljs.highlightAll();
-  </script>
-  </body>
-  
\ No newline at end of file
diff --git a/versioning.html b/versioning.html
deleted file mode 100644
index 3d60a9d..0000000
--- a/versioning.html
+++ /dev/null
@@ -1,36 +0,0 @@
-  <head>
-    <link rel="stylesheet" href="style.css" />
-  </head>
-    <body>
-  <div class="layout-container">
-  <section>
-  <nav class="sidebar"><ul>
-<li><a href="/commitlog/">Home</a></li>
-<li><a href="/commitlog/install">Install</a></li>
-<li><a href="/commitlog/quick-start">Quick Start</a></li>
-<li><a href="/commitlog/usage">Usage</a>
-<ul>
-<li><a href="/commitlog/selective-changelogs">Selective Changelogs</a></li>
-<li><a href="/commitlog/versioning">Version Management</a></li>
-<li><a href="/commitlog/manual">Manual</a></li>
-</ul>
-</li>
-</ul>
-</nav></section><section><h3><a href="/commitlog/">commitlog</a></h3>
-<h2>Version Management</h2>
-<p>There's not much to version management as it's a very simple handler of semver increments.</p>
-<h3>Initialise Versioning</h3>
-<p>To work with <code>commitlog release</code> you'll need a <code>.commitlog.release</code> file in your repo and that can be added using the following command. This will set the initial version to be <code>v0.0.0</code> when starting and you can sync it with you current package version manually by changing the file.
-(We wish to add automatic syncing with major language version management systems but I'll need help due to low bandwidth)</p>
-<pre><code class="language-sh">$ commitlog release init
-</code></pre>
-<h3>Increments</h3>
-<p>You can then run the <code>commitlog release</code> command to initialise the TUI flow for selecting the next version or you can do the same using the flags if you are in a <strong>non-interactive</strong> environment.</p>
-<p><strong>Note</strong>: Increments are of the standard semver spec with the minor change of pre-releases being called <strong>beta</strong> releases</p>
-</section></div>
-  <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
-  <script>
-    hljs.highlightAll();
-  </script>
-  </body>
-  
\ No newline at end of file

From b797382718e82333935ef471a8d86373cf24c052 Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Sun, 26 Jun 2022 11:44:26 +0000
Subject: [PATCH 09/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@2c063e623d1124fa4ab857f53285ce0bd640144a=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 index.html | 127 +++++++++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 109 insertions(+), 18 deletions(-)

diff --git a/index.html b/index.html
index 4094ed7..58cbffa 100644
--- a/index.html
+++ b/index.html
@@ -3,26 +3,117 @@
   </head>
     <body>
   <div class="layout-container">
-  <section><p align="center">
-  <img src="https://raw.githubusercontent.com/barelyhuman/commitlog/main/assets/commitlog.png" height="64">
-<p align="center">commits to changelogs</p>
-<p><a href="https://goreportcard.com/report/github.com/barelyhuman/commitlog"><img src="https://goreportcard.com/badge/github.com/barelyhuman/commitlog" alt="Go Report Card" /></a></p>
-<h2>Philosophy</h2>
+  <section><!-- meta -->
+<title>
+    commitlog
+</title>
+<meta name="description" content="commits to changelog generator">
+<!-- meta end -->
+<h3><a href="/commitlog/">commitlog</a></h3>
+<p><a href="/commitlog/manual">Manual</a><br />
+<a href="/commitlog/download">Download ↓</a></p>
+<h4>Index</h4>
 <ul>
-<li>Work on all major operating systems</li>
-<li>Not platform dependent, not tied to Github, Gitlab, or anything. It's just markdown.</li>
-<li>Ability to generate change logs between version tags</li>
-<li>Handle release versioning of the project</li>
-<li>Stay small</li>
+<li><a href="https://github.com/barelyhuman/commitlog">Source</a></li>
+<li><a href="#quick-start">Quick Start</a></li>
+<li><a href="#about">About</a>
+<ul>
+<li><a href="#philosophy">Philosophy</a></li>
+<li><a href="#installation">Installation</a></li>
+</ul>
+</li>
+<li><a href="#manual">Manual</a></li>
+<li><a href="#license">License</a></li>
+</ul>
+<h4 id="quick-start">Quick Start</h4>
+<p>For the one's who already know the tool and wanna get started quickly.</p>
+<p>You can get the CLI in the following ways</p>
+<ol>
+<li>
+<p>You can get the binaries from the <a href="/commitlog/download">download section</a></p>
+</li>
+<li>
+<p>Using <code>go get</code></p>
+</li>
+</ol>
+<pre><code class="language-sh">go get -u github.com/barelyhuman/commitlog
+</code></pre>
+<ol start="3">
+<li>Using goblin</li>
+</ol>
+<pre><code class="language-sh">curl -sf https://goblin.barelyhuman.xyz/github.com/barelyhuman/commitlog | sh
+</code></pre>
+<p>Once installed you can just run <code>commitlog generate</code> or the shorter version
+<code>commitlog g</code> to get all the changes between the recent tags.</p>
+<h4 id="about">About</h4>
+<h5 id="philosophy">Philosophy</h5>
+<p><strong><em>commitlog</em></strong> simply exists because I wasn't able to find a decent enough tool
+to do this without being bound to a specific programming language and it's
+toolset. The closes one to this is the <code>git</code>'s own <code>shortlog</code> and <code>log</code> commands</p>
+<ul>
+<li>
+<p><strong>Language Agnostic</strong> - No one needs the entire programming toolset or the
+language to be setup on the system to be able to just generate logs</p>
+</li>
+<li>
+<p><strong>Decently Sized</strong> - Not everyone has a powerful system and CI systems are
+still very limited in terms of resources since they give you shared spaces and
+automating generating this is a common practice so it doesn't make sense for
+it to install a runtime worth 100MB to run it.</p>
+<p>The binary itself is around 10-13MB which is fairly big for a tool like this
+but this is due to go's nature of embedding the platform runtime with the
+binary and this might not be ideal for some and so there's another similar
+smaller scoped version <a href="https://github.com/barelyhuman/nimclog">nimclog</a> which
+is in KB's</p>
+</li>
+<li>
+<p><strong>Flexible</strong> - There are no set standards for how you write commit messages.
+Commitlint is a good standard and pretty widely used and also what commitlog
+v1 used as the base for categorizing.</p>
+<p>V2 however, doesn't have a set commit category standard, it accepts regex's
+that you will categorize your commits for you.</p>
+<p>This is more for experienced developers who have a their own pattern of
+writing commits and would like a tool that'd work with their pattern instead
+of creating friction</p>
+</li>
+<li>
+<p><strong>Extensible</strong> - The entire thing is open source and MIT licenses,
+specifically for you to be able to fix and add things as needed. Each command
+has been kept away from the domain logic to be able to use <code>commitlog</code> even as
+a library and build your own tool if you wish to, though if there's something
+you wish the CLI supported, you are free to open issues and I really like
+people helping with the development since that helps keeping the tool alive
+longer.</p>
+</li>
+</ul>
+<h5 id="installation">Installation</h5>
+<p>The installation is pretty straightforwad. You <a href="/commitlog/download">download</a> the binary
+from the download section of this website or use something like
+<a href="https://goblin.barelyhuman.xyz">goblin</a> to build the binary for your specific
+system (rarely needed) since the releases actually accommodate the most used
+operating systems and architectures already.</p>
+<p><strong>Linux/Mac (Unix Systems)</strong></p>
+<p>Once downloaded, you can use the <code>install</code> command on *nix systems to link the
+binary to a location that's already in your PATH variable.</p>
+<p>eg:</p>
+<pre><code class="language-bash"># install commitlog from current directory to the /usr/local/bin directory
+install $(pwd)/commitlog /usr/local/bin
+</code></pre>
+<p>This should give you the ability to use the <code>commitlog</code> command anywhere in your
+system</p>
+<p><strong>Windows</strong></p>
+<p>Similar to the linux setup, you can download the <code>.exe</code> file and add it to a
+location that your environment path already has. An easier thing to do is to
+store the entire thing in your secondary partition and add that location to your
+PATH. You can use this resource from Java docs to help you with modifying the
+PATH variables</p>
+<ul>
+<li><a href="https://www.java.com/en/download/help/path.html">Modifying PATH in Windows</a></li>
 </ul>
-<h2>Why</h2>
-<p>Every language has it's own isolated version of a tool like this, for someone who works with multiple languages, it's easier to
-have the same tool working everywhere, without having to setup something get it working. There's an even tighter scoped version of this, <a href="https://github.com/barelyhuman/nimclog">nimclog</a>.</p>
-<p>The point of the tool is not to create super descriptive changelogs for you but to help your changelogs have enough information for you as a developer to be able to write proper changelogs while having references to the changes in one place.</p>
-<h2>Documentation</h2>
-<p>The documentation can be read from the <code>docs</code> folder of the repository, or on the <a href="https://barelyhuman.github.io/commitlog">website</a></p>
-<h2>License</h2>
-<p><a href="/commitlog/LICENSE">MIT</a></p>
+<h4 id="manual">Manual</h4>
+<p><a href="/commitlog/manual">Read Manual →</a></p>
+<h4 id="license">License</h4>
+<p>commitlog is MIT Licensed and you can read the entire license in the <a href="https://github.com/barelyhuman/commitlog">source code</a></p>
 </section></div>
   <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
   <script>

From 604288b4e0001986f7bc43888370d7234e3c7771 Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Sun, 26 Jun 2022 12:04:35 +0000
Subject: [PATCH 10/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@2c75cecd2eeb643da22f1dd2b643851aec2c9c16=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 styles.html | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 77 insertions(+)
 create mode 100644 styles.html

diff --git a/styles.html b/styles.html
new file mode 100644
index 0000000..035d391
--- /dev/null
+++ b/styles.html
@@ -0,0 +1,77 @@
+  <head>
+    <link rel="stylesheet" href="style.css" />
+  </head>
+    <body>
+  <div class="layout-container">
+  <section><p>@import url(&quot;https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;600;700&amp;display=swap&quot;);</p>
+<p>html {
+font-size: 87.5%;
+/<em>14px</em>/
+}</p>
+<p>body {
+max-width: 100ch;
+margin: 0 auto;
+padding: 1em;</p>
+<pre><code>font-family: &quot;Fira Code&quot;, monospace;
+font-weight: 400;
+line-height: 1.75;
+</code></pre>
+<p>}</p>
+<p>h1,
+h2,
+h3,
+h4,
+h5 {
+margin: 3rem 0 1.38rem;
+font-family: &quot;Fira Code&quot;, monospace;
+font-weight: 400;
+line-height: 1.3;
+}</p>
+<p>h1 {
+margin-top: 0;
+font-size: 3.052rem;
+}</p>
+<p>h2 {
+font-size: 2.441rem;
+}</p>
+<p>h3 {
+font-size: 1.953rem;
+}</p>
+<p>h4 {
+font-size: 1.563rem;
+}</p>
+<p>h5 {
+font-size: 1.25rem;
+}</p>
+<p>small,
+.text_small {
+font-size: 0.8rem;
+}</p>
+<p>pre,
+code {
+font-size: 1rem;
+}</p>
+<p>code {
+padding: 5px;
+border: 1px solid slategray;
+}</p>
+<p>pre {
+padding: 10px;
+border: 1px solid slategray;
+}</p>
+<p>pre&gt;code {
+border: 0px;
+}</p>
+<p>a {
+color: inherit;
+}</p>
+<p>a:hover {
+color: dodgerblue;
+}</p>
+</section></div>
+  <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
+  <script>
+    hljs.highlightAll();
+  </script>
+  </body>
+  
\ No newline at end of file

From dfa815a4f066ccfca54e34c269c59da3dc5f7a07 Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Sun, 26 Jun 2022 12:07:46 +0000
Subject: [PATCH 11/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@9c4b170c88156a20554c0e962a07d5ae82e2ccf4=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 style.css | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 80 insertions(+), 1 deletion(-)

diff --git a/style.css b/style.css
index a0c8300..d795fbc 100644
--- a/style.css
+++ b/style.css
@@ -1 +1,80 @@
-@import "https://rsms.me/inter/inter.css";@import "https://cdn.jsdelivr.net/npm/hack-font@3/build/web/hack.css";@import "https://unpkg.com/highlight.js@11.5.1/styles/base16/one-light.css" screen;@import "https://unpkg.com/highlight.js@11.5.1/styles/base16/onedark.css" screen and (prefers-color-scheme:dark);:root{--zinc-50:#fafafa;--zinc-100:#f4f4f5;--zinc-200:#e4e4e7;--zinc-300:#d4d4d8;--zinc-400:#a1a1aa;--zinc-500:#71717a;--zinc-600:#52525b;--zinc-700:#3f3f46;--zinc-800:#27272a;--zinc-900:#18181b;--base:var(--zinc-50);--surface:var(--zinc-100);--overlay:var(--zinc-200);--text:var(--zinc-700);--subtle:var(--zinc-400);--muted:var(--zinc-300);--font-sans:"Inter",sans-serif;--font-mono:"Hack",monospace}html{font-size:100%}body{background:var(--base);font-family:var(--font-sans);color:var(--text);margin:0 auto;padding:1rem;font-weight:400;line-height:1.75}p{margin-bottom:1rem}h1,h2,h3,h4,h5{margin:3rem 0 1.38rem;font-family:Inter,sans-serif;font-weight:400;line-height:1.3}h1{margin-top:0;font-size:3.052rem}h2{font-size:2.441rem}h3{font-size:1.953rem}h4{font-size:1.563rem}h5{font-size:1.25rem}small,.text_small{font-size:.8rem}pre,code{font-family:var(--font-mono)}code{background:var(--surface);border-radius:4px;padding:2px}pre{white-space:pre-wrap}pre>.hljs{background:var(--base);border-radius:6px;padding:0!important}a{color:var(--subtle);text-decoration:none}a:hover{color:var(--text);text-decoration:underline}.layout-container{align-items:baseline;gap:1em;display:flex}nav.sidebar{min-width:250px;max-width:350px}nav.sidebar li{list-style-type:none}nav.sidebar li:before{content:"→";color:var(--muted)}nav.sidebar li:not(:lang(ae)):not(:lang(ar)):not(:lang(arc)):not(:lang(bcc)):not(:lang(bqi)):not(:lang(ckb)):not(:lang(dv)):not(:lang(fa)):not(:lang(glk)):not(:lang(he)):not(:lang(ku)):not(:lang(mzn)):not(:lang(nqo)):not(:lang(pnb)):not(:lang(ps)):not(:lang(sd)):not(:lang(ug)):not(:lang(ur)):not(:lang(yi)):before{margin-right:1ch}nav.sidebar li:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)):before{margin-left:1ch}nav.sidebar li:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)):before{margin-left:1ch}@media screen and (prefers-color-scheme:dark){:root{--base:var(--zinc-900);--surface:var(--zinc-800);--overlay:var(--zinc-700);--text:var(--zinc-100);--subtle:var(--zinc-400);--muted:var(--zinc-500)}}
\ No newline at end of file
+@import url("https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;600;700&display=swap");
+
+html {
+    font-size: 87.5%;
+    /*14px*/
+}
+
+body {
+    max-width: 100ch;
+    margin: 0 auto;
+    padding: 1em;
+
+    font-family: "Fira Code", monospace;
+    font-weight: 400;
+    line-height: 1.75;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5 {
+    margin: 3rem 0 1.38rem;
+    font-family: "Fira Code", monospace;
+    font-weight: 400;
+    line-height: 1.3;
+}
+
+h1 {
+    margin-top: 0;
+    font-size: 3.052rem;
+}
+
+h2 {
+    font-size: 2.441rem;
+}
+
+h3 {
+    font-size: 1.953rem;
+}
+
+h4 {
+    font-size: 1.563rem;
+}
+
+h5 {
+    font-size: 1.25rem;
+}
+
+small,
+.text_small {
+    font-size: 0.8rem;
+}
+
+pre,
+code {
+    font-size: 1rem;
+}
+
+code {
+    padding: 5px;
+    border: 1px solid slategray;
+}
+
+pre {
+    padding: 10px;
+    border: 1px solid slategray;
+}
+
+pre>code {
+    border: 0px;
+}
+
+a {
+    color: inherit;
+}
+
+a:hover {
+    color: dodgerblue;
+}
\ No newline at end of file

From e046be5b687a00a0b6461341a0295d379d9e725f Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Sun, 26 Jun 2022 12:45:05 +0000
Subject: [PATCH 12/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@61904b7d9003277860d8b60b8e53c90d29aa4bdb=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 manual.html | 156 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 style.css   |  29 ++++++++--
 styles.html |  31 ++++++++---
 3 files changed, 204 insertions(+), 12 deletions(-)

diff --git a/manual.html b/manual.html
index 1d7d65d..df77f9b 100644
--- a/manual.html
+++ b/manual.html
@@ -13,7 +13,161 @@ <h3><a href="/commitlog/">commitlog</a></h3>
 <p><a href="/commitlog/manual">Manual</a><br />
 <a href="/commitlog/download">Download ↓</a></p>
 <h1>Manual</h1>
-<p>TBD</p>
+<ul>
+<li><a href="#basics">Basics</a>
+<ul>
+<li><a href="#generate">generate</a></li>
+<li><a href="#release">release</a></li>
+</ul>
+</li>
+<li><a href="#advanced">Advanced</a></li>
+<li><a href="#cli">CLI</a></li>
+</ul>
+<h3 id="basics">Basics</h3>
+<p><strong><em><code>commitlog</code></em></strong> come with 2 basic functionalities</p>
+<ul>
+<li>Generating commits as changelogs in markdown</li>
+<li>Managing your version and tags</li>
+</ul>
+<p>Both the above are available as sub commands and we'll go through each one by
+one.</p>
+<p>Just running <code>commitlog</code> no longer works as it did in v1, you'll need to specify
+a sub command to get it working.</p>
+<p>This has been done to keep it simpler to keep arbitrary behaviour to a minimum</p>
+<h4 id="generate">generate</h3>
+<p>The first one is <code>generate</code> and in most cases you'll just be using this to
+handle generation of commits as a list of markdown notes</p>
+<p>Here's an example of what it'll look like to run the <code>generate</code> sub-command</p>
+<pre><code class="language-sh">$ commitlog generate
+# or 
+$ commitlog g
+</code></pre>
+<p><strong>Output</strong>:</p>
+<pre><code class="language-md">## All Changes
+87ce3fc76b252908cdd81f9537713f8d67813652 chore: v2.0.0-beta.0
+
+09fc85c0d1d52d770bbbf39ac45907103a53d354 refactor: swap go-git for push with exec
+
+5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation
+
+909fd032facdeb4fb7633a4fad82dced28e8de83 chore: swap debugging logger with stderr printer
+&lt;!-- .... more commits till the end of tag --&gt;
+</code></pre>
+<p>The behaviour of the <code>generate</code> command is like so</p>
+<ul>
+<li>
+<p>go through all commits from the current <code>HEAD</code> (commit with the <code>HEAD</code>
+reference) till the last commit or the most recent tagged commit.</p>
+</li>
+<li>
+<p>the other case is where if the latest commit is also a tagged commit, it'll
+still go till the most recent tagged commit.</p>
+<p>eg: v0.0.2 -&gt; HEAD, v0.0.1 -&gt; SOMEHASH, would give you the commits between
+both the tags.</p>
+</li>
+</ul>
+<p>This is the default behavior of commitlog and can be changed by passing various
+flags which you'll read about soon.</p>
+<h4 id="release">release</h3>
+<p>The <code>release</code> sub-command is a complimentary sub-command added to commitlog to
+help you with managing release versions. I understand that most languages have
+their own package version management and you might want to work with them but
+that's also why the <code>release</code> sub-command isn't something you need, it's there
+for cases where you might wanna use it.</p>
+<p>My primary usecase is when working with repositories that work with multiple
+languages and I'd prefer a unified version.</p>
+<p>The <code>release</code> command doesn't modify your source code files but instead handles
+the version with it's own file named <code>.commitlog.release</code>, which just holds the
+<strong>version</strong> number right now and while this does have the X.X.X format (semantic
+versioning format) the increments or how you handle them doesn't have to be.</p>
+<p>The command is flexible enough for you to combine and create your own way of
+versioning.</p>
+<h5>Initialize</h5>
+<pre><code class="language-sh">$ commitlog release --init
+# or 
+$ commitlog r --init
+</code></pre>
+<p>Once initialized, you'll see a <code>.commitlog.release</code> file in your repo with the
+version <code>v0.0.0</code> to start with.</p>
+<h5>Increments</h5>
+<p>Post that you can use the remaining flags to help you incrementing the version
+as needed.</p>
+<pre><code class="language-sh">$ commitlog r --major # change to v1.0.0
+$ commitlog r --minor # change to v0.1.0
+$ commitlog r --patch # change to v0.0.1
+$ commitlog r --pre # change to v0.0.0-beta.0
+$ commitlog r --pre --pre-tag=&quot;dev&quot; # change to v0.0.0-dev.0
+
+# or go bonkers 
+$ commitlog r --patch --pre --pre-tag=&quot;dev&quot; # change to v0.0.1-dev.0
+$ commitlog r --major --patch --pre --pre-tag=&quot;dev&quot; # change to v1.0.1-dev.0
+</code></pre>
+<h4>Git actions</h4>
+<p>Most times you'd also want a tool like this to create commits and tags for you
+which is fair, so <code>release</code> does come with a few git actions.</p>
+<ul>
+<li><code>--commit</code> (will create a commit and tag it for you)</li>
+<li><code>--push</code> (will push the commits and tags for you)</li>
+</ul>
+<p>The whole command would look a little something like this</p>
+<pre><code class="language-sh">$ commitlog r --patch --commit --push
+</code></pre>
+<h3 id="advanced">Advanced</h3>
+<p><strong>TBD</strong></p>
+<h3 id="cli">CLI</h3>
+<p>This is the entire CLI reference, which you can also access by using the <code>-h</code>
+flag on the downloaded binary.</p>
+<p><strong><code>commitlog -h</code></strong></p>
+<pre><code>NAME:
+   commitlog - commits to changelogs
+
+USAGE:
+   commitlog [global options] command [command options] [arguments...]
+
+COMMANDS:
+   generate, g  commits to changelogs
+   release, r   manage .commitlog.release version
+   help, h      Shows a list of commands or help for one command
+
+GLOBAL OPTIONS:
+   --help, -h  show help (default: false)
+</code></pre>
+<hr />
+<p><strong><code>commitlog g -h</code></strong></p>
+<pre><code>NAME:
+   commitlog generate - commits to changelogs
+
+USAGE:
+   commitlog generate [command options] [arguments...]
+
+OPTIONS:
+   --categories value       categories to use, includes all commits by default. any text you add here will be used to create categories out of the commits
+   --end END, -e END        END reference for the commit to stop including commits at.This is exclusive of the given commit reference
+   --out FILE, -o FILE      path to the output FILE
+   --path PATH, -p PATH     root with the '.git' folder PATH (default: &quot;.&quot;)
+   --promo                  add promo text to the end of output (default: false)
+   --start START, -s START  START reference for the commit to include commits from,This is inclusive of the given commit reference
+   --stdio                  print to the stdout (default: true)
+</code></pre>
+<hr />
+<p><strong><code>commitlog r -h</code></strong></p>
+<pre><code>NAME:
+   commitlog release - manage .commitlog.release version
+
+USAGE:
+   commitlog release [command options] [arguments...]
+
+OPTIONS:
+   --commit              if true will create a commit and tag, of the changed version (default: false)
+   --init                initialise commitlog release (default: false)
+   --major               create a major version (default: false)
+   --minor               create a minor version (default: false)
+   --patch               create a patch version (default: false)
+   --path PATH, -p PATH  PATH to a folder where .commitlog.release exists or is to be created.(note: do not use `--commit` or `--push` if the file isn't in the root) (default: &quot;.&quot;)
+   --pre                 create a pre-release version. will default to patch increment unlessspecified and not already a pre-release (default: false)
+   --pre-tag value       create a pre-release version (default: &quot;beta&quot;)
+   --push                if true will create push the created release commit + tag on origin (default: false)
+</code></pre>
 </section></div>
   <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
   <script>
diff --git a/style.css b/style.css
index d795fbc..3c159a3 100644
--- a/style.css
+++ b/style.css
@@ -1,5 +1,19 @@
 @import url("https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;600;700&display=swap");
 
+
+:root {
+    --base: #fff;
+    --surface: #efefef;
+    --text: #333;
+    --muted: #444;
+    --accent: dodgerblue;
+}
+
+html,
+body {
+    background: var(--base);
+}
+
 html {
     font-size: 87.5%;
     /*14px*/
@@ -9,7 +23,7 @@ body {
     max-width: 100ch;
     margin: 0 auto;
     padding: 1em;
-
+    color: var(--text);
     font-family: "Fira Code", monospace;
     font-weight: 400;
     line-height: 1.75;
@@ -59,15 +73,17 @@ code {
 
 code {
     padding: 5px;
-    border: 1px solid slategray;
+    border: 1px solid var(--surface);
 }
 
 pre {
+    white-space: pre-wrap;
     padding: 10px;
-    border: 1px solid slategray;
+    border: 1px solid var(--surface);
 }
 
 pre>code {
+    padding: 0px;
     border: 0px;
 }
 
@@ -76,5 +92,10 @@ a {
 }
 
 a:hover {
-    color: dodgerblue;
+    color: var(--accent);
+}
+
+hr {
+    border: 0px;
+    border-top: 1px solid var(--surface);
 }
\ No newline at end of file
diff --git a/styles.html b/styles.html
index 035d391..facda46 100644
--- a/styles.html
+++ b/styles.html
@@ -4,6 +4,17 @@
     <body>
   <div class="layout-container">
   <section><p>@import url(&quot;https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;600;700&amp;display=swap&quot;);</p>
+<p>:root {
+--base: #fff;
+--surface: #efefef;
+--text: #333;
+--muted: #444;
+--accent: dodgerblue;
+}</p>
+<p>html,
+body {
+background: var(--base);
+}</p>
 <p>html {
 font-size: 87.5%;
 /<em>14px</em>/
@@ -11,12 +22,12 @@
 <p>body {
 max-width: 100ch;
 margin: 0 auto;
-padding: 1em;</p>
-<pre><code>font-family: &quot;Fira Code&quot;, monospace;
+padding: 1em;
+color: var(--text);
+font-family: &quot;Fira Code&quot;, monospace;
 font-weight: 400;
 line-height: 1.75;
-</code></pre>
-<p>}</p>
+}</p>
 <p>h1,
 h2,
 h3,
@@ -53,20 +64,26 @@
 }</p>
 <p>code {
 padding: 5px;
-border: 1px solid slategray;
+border: 1px solid var(--surface);
 }</p>
 <p>pre {
+white-space: pre-wrap;
 padding: 10px;
-border: 1px solid slategray;
+border: 1px solid var(--surface);
 }</p>
 <p>pre&gt;code {
+padding: 0px;
 border: 0px;
 }</p>
 <p>a {
 color: inherit;
 }</p>
 <p>a:hover {
-color: dodgerblue;
+color: var(--accent);
+}</p>
+<p>hr {
+border: 0px;
+border-top: 1px solid var(--surface);
 }</p>
 </section></div>
   <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>

From e4c22312c96f3dd8588471deed64ea0c597eccd6 Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Sun, 26 Jun 2022 12:45:45 +0000
Subject: [PATCH 13/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@d669db159928420bea185226a5332985cdc124e7=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 download.html | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/download.html b/download.html
index 4d31a71..f8af6b1 100644
--- a/download.html
+++ b/download.html
@@ -13,20 +13,20 @@ <h3><a href="/commitlog/">commitlog</a></h3>
 <p><a href="/commitlog/manual">Manual</a><br />
 <a href="/commitlog/download">Download ↓</a></p>
 <h4>Downloads</h4>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-darwin-amd64.tar.gz%22">commitlog-v2.0.0-beta.0-darwin-amd64.tar.gz</a><br />
-<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-darwin-amd64.tar.gz.md5%22">commitlog-v2.0.0-beta.0-darwin-amd64.tar.gz.md5</a><br />
-<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-darwin-arm64.tar.gz%22">commitlog-v2.0.0-beta.0-darwin-arm64.tar.gz</a><br />
-<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-darwin-arm64.tar.gz.md5%22">commitlog-v2.0.0-beta.0-darwin-arm64.tar.gz.md5</a><br />
-<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-linux-386.tar.gz%22">commitlog-v2.0.0-beta.0-linux-386.tar.gz</a><br />
-<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-linux-386.tar.gz.md5%22">commitlog-v2.0.0-beta.0-linux-386.tar.gz.md5</a><br />
-<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-linux-amd64.tar.gz%22">commitlog-v2.0.0-beta.0-linux-amd64.tar.gz</a><br />
-<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-linux-amd64.tar.gz.md5%22">commitlog-v2.0.0-beta.0-linux-amd64.tar.gz.md5</a><br />
-<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-linux-arm64.tar.gz%22">commitlog-v2.0.0-beta.0-linux-arm64.tar.gz</a><br />
-<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-linux-arm64.tar.gz.md5%22">commitlog-v2.0.0-beta.0-linux-arm64.tar.gz.md5</a><br />
-<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-windows-386.zip%22">commitlog-v2.0.0-beta.0-windows-386.zip</a><br />
-<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-windows-386.zip.md5%22">commitlog-v2.0.0-beta.0-windows-386.zip.md5</a><br />
-<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-windows-amd64.zip%22">commitlog-v2.0.0-beta.0-windows-amd64.zip</a><br />
-<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-windows-amd64.zip.md5%22">commitlog-v2.0.0-beta.0-windows-amd64.zip.md5</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-darwin-amd64.tar.gz%22">commitlog-v2.0.0-beta.0-darwin-amd64.tar.gz</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-darwin-amd64.tar.gz.md5%22">commitlog-v2.0.0-beta.0-darwin-amd64.tar.gz.md5</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-darwin-arm64.tar.gz%22">commitlog-v2.0.0-beta.0-darwin-arm64.tar.gz</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-darwin-arm64.tar.gz.md5%22">commitlog-v2.0.0-beta.0-darwin-arm64.tar.gz.md5</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-linux-386.tar.gz%22">commitlog-v2.0.0-beta.0-linux-386.tar.gz</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-linux-386.tar.gz.md5%22">commitlog-v2.0.0-beta.0-linux-386.tar.gz.md5</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-linux-amd64.tar.gz%22">commitlog-v2.0.0-beta.0-linux-amd64.tar.gz</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-linux-amd64.tar.gz.md5%22">commitlog-v2.0.0-beta.0-linux-amd64.tar.gz.md5</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-linux-arm64.tar.gz%22">commitlog-v2.0.0-beta.0-linux-arm64.tar.gz</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-linux-arm64.tar.gz.md5%22">commitlog-v2.0.0-beta.0-linux-arm64.tar.gz.md5</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-windows-386.zip%22">commitlog-v2.0.0-beta.0-windows-386.zip</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-windows-386.zip.md5%22">commitlog-v2.0.0-beta.0-windows-386.zip.md5</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-windows-amd64.zip%22">commitlog-v2.0.0-beta.0-windows-amd64.zip</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-windows-amd64.zip.md5%22">commitlog-v2.0.0-beta.0-windows-amd64.zip.md5</a></p>
 </section></div>
   <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
   <script>

From 19f6fb39c02a76947b699860a7b5f4567ca183db Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Sun, 26 Jun 2022 12:47:43 +0000
Subject: [PATCH 14/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@51409cc40531d2660bba2660fde827a00f10ac06=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 style.css   | 10 ++++++++++
 styles.html |  9 +++++++++
 2 files changed, 19 insertions(+)

diff --git a/style.css b/style.css
index 3c159a3..650d401 100644
--- a/style.css
+++ b/style.css
@@ -9,6 +9,16 @@
     --accent: dodgerblue;
 }
 
+@media (prefers-color-scheme:dark) {
+    :root {
+        --base: #111;
+        --surface: #333;
+        --text: #eee;
+        --muted: #ddd;
+        --accent: dodgerblue;
+    }
+}
+
 html,
 body {
     background: var(--base);
diff --git a/styles.html b/styles.html
index facda46..e357361 100644
--- a/styles.html
+++ b/styles.html
@@ -11,6 +11,15 @@
 --muted: #444;
 --accent: dodgerblue;
 }</p>
+<p>@media (prefers-color-scheme:dark) {
+:root {
+--base: #111;
+--surface: #333;
+--text: #eee;
+--muted: #ddd;
+--accent: dodgerblue;
+}
+}</p>
 <p>html,
 body {
 background: var(--base);

From 71694faa64f21a56100d5c4d2f22f1cb3fa4c988 Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Sun, 26 Jun 2022 15:57:37 +0000
Subject: [PATCH 15/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@279ba7803143fdc4a453914d269ddb30604e1623=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 index.html  |  2 +-
 manual.html | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++---
 2 files changed, 96 insertions(+), 5 deletions(-)

diff --git a/index.html b/index.html
index 58cbffa..206c31c 100644
--- a/index.html
+++ b/index.html
@@ -22,7 +22,7 @@ <h4>Index</h4>
 <li><a href="#installation">Installation</a></li>
 </ul>
 </li>
-<li><a href="#manual">Manual</a></li>
+<li><a href="/commitlog/manual">Manual</a></li>
 <li><a href="#license">License</a></li>
 </ul>
 <h4 id="quick-start">Quick Start</h4>
diff --git a/manual.html b/manual.html
index df77f9b..6c12e4b 100644
--- a/manual.html
+++ b/manual.html
@@ -20,7 +20,13 @@ <h1>Manual</h1>
 <li><a href="#release">release</a></li>
 </ul>
 </li>
-<li><a href="#advanced">Advanced</a></li>
+<li><a href="#advanced">Advanced</a>
+<ul>
+<li><a href="#selective-log-ranges">Selective Log Ranges</a></li>
+<li><a href="#from-a-different-repo">From a different repo</a></li>
+<li><a href="#categorize">Categorize</a></li>
+</ul>
+</li>
 <li><a href="#cli">CLI</a></li>
 </ul>
 <h3 id="basics">Basics</h3>
@@ -66,8 +72,20 @@ <h4 id="generate">generate</h3>
 both the tags.</p>
 </li>
 </ul>
-<p>This is the default behavior of commitlog and can be changed by passing various
-flags which you'll read about soon.</p>
+<p>The default behaviour of <strong><em>commitlog</em></strong> is to print to the stdout of your
+terminal which might not be what you wish to do.</p>
+<p>So, if you wish to ever write to a file , you can use the <code>--out FILE</code> flag to
+write the output to a file instead.</p>
+<pre><code class="language-sh">$ commitlog g -o ./CHANGELOG.md
+</code></pre>
+<blockquote>
+<p><strong>Note</strong>: commitlog will overwrite the file with the new output, make sure you
+create a backup of the file when working with this.</p>
+</blockquote>
+<blockquote>
+<p><strong>Note</strong>: In coming versions an append mode will be added to the CLI to avoid
+having to deal with this manually</p>
+</blockquote>
 <h4 id="release">release</h3>
 <p>The <code>release</code> sub-command is a complimentary sub-command added to commitlog to
 help you with managing release versions. I understand that most languages have
@@ -113,7 +131,80 @@ <h4>Git actions</h4>
 <pre><code class="language-sh">$ commitlog r --patch --commit --push
 </code></pre>
 <h3 id="advanced">Advanced</h3>
-<p><strong>TBD</strong></p>
+<p>These are not really hard to guess or achieve but are in the advanced section as
+this isn't something a beginner user might need to mess with. If you have other
+use cases that you feel like should be added here, raise a issue.</p>
+<h4 id="selective-log-ranges">Selective Log Ranges</h4>
+There's enough cases where the entire history between the tags makes no sense. You might just want a specific set of commits and this is very easy to do with commitlog
+<pre><code class="language-sh">$ commitlog g --start HEAD --end HEAD~3 
+# would return the last 3 commits
+</code></pre>
+<p>And as you might have understood, commitlog does work with git's revision system
+so you can reuse git's own revision pointers as needed. Though it's mostly
+easier to just use the HASH since, finding the hashes in <code>git log</code> is easier
+than finding the number you have to type after the <code>HEAD~</code></p>
+<h4 id="from-a-different-repo">From a different repo</h4>
+A lot more often you might need to generate logs for a sub-repo when working with a huge multirepo folder which a lot of sub-modules and switching worktree for the changelog might not be something you wish to do.
+<p>In cases like these the <code>-p</code> or <code>--path</code> flag can be used with the <code>generate</code>
+flag</p>
+<pre><code class="language-sh">$ commitlog g -p ./sub/module -s HEAD~3 
+# would return the commits from HEAD~3 to the next tag or end of all commits.
+</code></pre>
+<h4 id="categorize">Categorize</h4>
+You wouldn't be using commitlog otherwise so this obviously has to exist.
+<p>As for why is this turned off by default? I just don't use commit standards and
+mostly just need the commits between tags and very rarely need the categories to
+help me but doesn't change the fact that someone else might need it.</p>
+<p>So, how does commitlog categorize? using regex's , or more like comma seperated
+regex's.</p>
+<p>The implementation approach might bring some issue but I'm going to wait for
+them instead of over fixing something that might never really happen.</p>
+<p>Anyway, a simple example for a non-scoped commitlint styled categorization would
+look something like this .</p>
+<pre><code class="language-sh">$ commitlog g --categories=&quot;feat:,fix:&quot;
+</code></pre>
+<p><strong>Output:</strong></p>
+<pre><code class="language-md">## feat:
+110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment
+
+9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj,min,patch setup
+
+b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation
+
+## fix:
+5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation
+</code></pre>
+<p>This could be made a little more neater using a better regex like so</p>
+<pre><code class="language-sh">$ commitlog g --categories=&quot;^feat,^fix&quot;
+</code></pre>
+<p><strong>Output</strong>:</p>
+<pre><code class="language-md">## ^feat
+e0ce9c693c554158b7b4841b799524164d9c3e83 feat(releaser): add init and pre-tag handlers
+
+110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment
+
+9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj,min,patch setup
+
+b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation
+
+## ^fix
+5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation
+
+540bb3d7419aab314fdb999dd57eeac3c53f5fad fix doc generation
+
+87d40ddbd463ad71b3af8b7edb8ac8176ecbf2f5 fix tests for new param
+</code></pre>
+<p>As visible, you find more commits in the 2nd one since the regex matches more
+cases and gives you more information. You are free to modify these to make them
+work with other patterns that you might follow.</p>
+<p>Also the titles are going to be the regex's you pass. A future version will add
+a way for you to add label's to the regex though that's a little harder to
+achieve without making the flags very verbose so I've avoided it for now.</p>
+<blockquote>
+<p><strong>Note</strong>: This is the initial implementation of this and might change in a
+future major version since this flag feels a little more frictional than the
+other approaches I have in mind. Feel free to recommend other ways to do this.</p>
+</blockquote>
 <h3 id="cli">CLI</h3>
 <p>This is the entire CLI reference, which you can also access by using the <code>-h</code>
 flag on the downloaded binary.</p>

From cd73b300cec1b10ff116497fc0115e10b388b182 Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Mon, 27 Jun 2022 05:45:19 +0000
Subject: [PATCH 16/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@af791af3427a3872c4b92541d436dfcd9d3533b5=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 api.html      | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++
 download.html |  3 +--
 index.html    |  6 ++---
 manual.html   |  4 +--
 style.css     |  4 +--
 styles.html   |  3 ++-
 6 files changed, 85 insertions(+), 10 deletions(-)
 create mode 100644 api.html

diff --git a/api.html b/api.html
new file mode 100644
index 0000000..304c17b
--- /dev/null
+++ b/api.html
@@ -0,0 +1,75 @@
+  <head>
+    <link rel="stylesheet" href="style.css" />
+  </head>
+    <body>
+  <div class="layout-container">
+  <section><!-- meta -->
+<title>
+    commitlog | manual
+</title>
+<meta name="description" content="commits to changelog generator">
+<!-- meta end -->
+<h3><a href="/commitlog/">commitlog</a></h3>
+<p><a href="/commitlog/">Home</a> <a href="/commitlog/manual">Manual</a> <a href="/commitlog/download">Download ↓</a> <a href="/commitlog/api">API</a></p>
+<h1>API</h1>
+<h3>General Guide</h3>
+<p>commitlog also comes as a pkg that you could reuse to modify the behaviour of
+the commands and this is very limited at the moment since I'm still working on
+the best way to get plugins to work with the original CLI instead of having to
+write your own version of commitlog.</p>
+<p>The pkg contains the 2 base command's creators and behaviour modifiers, or more
+commonly known as the golang options pattern.</p>
+<p>Briefly put, You have one function that takes in unlimited amount of functions
+as parameter with each of these parameter functions being able to modify the
+behaviour of the returned instance.</p>
+<p>Easy way to explain this is with an example of the <code>releaser</code> API</p>
+<pre><code class="language-go">package main
+
+import (
+    &quot;log&quot;
+
+    &quot;github.com/barelyhuman/commitlog/pkg&quot;
+)
+
+func main() {
+    versionString := &quot;v0.0.1&quot;
+    releaser, _ := pkg.CreateNewReleaser(
+        versionString,
+        pkg.WithMajorIncrement(),
+    )
+
+    log.Println(releaser.String())
+
+}
+</code></pre>
+<p>here the <code>pkg.CreateNewReleaser</code> takes in one mandatory value which is the
+<code>versionString</code> and the 2nd parameter is optional here.</p>
+<p>Though, since we wish for the releaser to have a custom behaviour everytime the
+flags change, instead of writing entire functionalities inside various releaser
+functions, which would look like so</p>
+<pre><code class="language-go">releaser.IncrementMajor()
+releaser.IncrementMinor()
+</code></pre>
+<p>I'd be unable to expose the builders / option functions out to the public for
+them to write custom behaviours that work directly with the <code>struct</code> being used
+by commitlog itself and instead you'd be writing wrappers around existing
+functions. Thus, adding another layer of abstraction which isn't needed for
+something that wants to be extended.</p>
+<p>This approach gives me the ability to expose a selected few properties for you
+to modify while writing your own builder/option function.</p>
+<p>The only pointer functions that releaser has is the one's that'll help with
+printing or identifying the final version's state.</p>
+<p>Since, you now know how the API is written, the go doc for this module should be
+able to help you with the remaining.</p>
+<p><a href="https://pkg.go.dev/github.com/barelyhuman/commitlog">godoc↗</a></p>
+<blockquote>
+<p><strong>Note</strong>: if the go doc still hasn't been generated for v2.0.0, please go
+through the source code to help you with the implementation details</p>
+</blockquote>
+</section></div>
+  <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
+  <script>
+    hljs.highlightAll();
+  </script>
+  </body>
+  
\ No newline at end of file
diff --git a/download.html b/download.html
index f8af6b1..5af99f8 100644
--- a/download.html
+++ b/download.html
@@ -10,8 +10,7 @@
 <meta name="description" content="commits to changelog generator">
 <!-- meta end -->
 <h3><a href="/commitlog/">commitlog</a></h3>
-<p><a href="/commitlog/manual">Manual</a><br />
-<a href="/commitlog/download">Download ↓</a></p>
+<p><a href="/commitlog/">Home</a> <a href="/commitlog/manual">Manual</a> <a href="/commitlog/download">Download ↓</a> <a href="/commitlog/api">API</a></p>
 <h4>Downloads</h4>
 <p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-darwin-amd64.tar.gz%22">commitlog-v2.0.0-beta.0-darwin-amd64.tar.gz</a></p>
 <p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-darwin-amd64.tar.gz.md5%22">commitlog-v2.0.0-beta.0-darwin-amd64.tar.gz.md5</a></p>
diff --git a/index.html b/index.html
index 206c31c..a8dc2ab 100644
--- a/index.html
+++ b/index.html
@@ -10,8 +10,7 @@
 <meta name="description" content="commits to changelog generator">
 <!-- meta end -->
 <h3><a href="/commitlog/">commitlog</a></h3>
-<p><a href="/commitlog/manual">Manual</a><br />
-<a href="/commitlog/download">Download ↓</a></p>
+<p><a href="/commitlog/">Home</a> <a href="/commitlog/manual">Manual</a> <a href="/commitlog/download">Download ↓</a> <a href="/commitlog/api">API</a></p>
 <h4>Index</h4>
 <ul>
 <li><a href="https://github.com/barelyhuman/commitlog">Source</a></li>
@@ -113,7 +112,8 @@ <h5 id="installation">Installation</h5>
 <h4 id="manual">Manual</h4>
 <p><a href="/commitlog/manual">Read Manual →</a></p>
 <h4 id="license">License</h4>
-<p>commitlog is MIT Licensed and you can read the entire license in the <a href="https://github.com/barelyhuman/commitlog">source code</a></p>
+<p>commitlog is MIT Licensed and you can read the entire license in the
+<a href="https://github.com/barelyhuman/commitlog">source code</a></p>
 </section></div>
   <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
   <script>
diff --git a/manual.html b/manual.html
index 6c12e4b..1809dbd 100644
--- a/manual.html
+++ b/manual.html
@@ -10,8 +10,7 @@
 <meta name="description" content="commits to changelog generator">
 <!-- meta end -->
 <h3><a href="/commitlog/">commitlog</a></h3>
-<p><a href="/commitlog/manual">Manual</a><br />
-<a href="/commitlog/download">Download ↓</a></p>
+<p><a href="/commitlog/">Home</a> <a href="/commitlog/manual">Manual</a> <a href="/commitlog/download">Download ↓</a> <a href="/commitlog/api">API</a></p>
 <h1>Manual</h1>
 <ul>
 <li><a href="#basics">Basics</a>
@@ -28,6 +27,7 @@ <h1>Manual</h1>
 </ul>
 </li>
 <li><a href="#cli">CLI</a></li>
+<li><a href="/commitlog/api">API</a></li>
 </ul>
 <h3 id="basics">Basics</h3>
 <p><strong><em><code>commitlog</code></em></strong> come with 2 basic functionalities</p>
diff --git a/style.css b/style.css
index 650d401..490da3a 100644
--- a/style.css
+++ b/style.css
@@ -1,6 +1,5 @@
 @import url("https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;600;700&display=swap");
 
-
 :root {
     --base: #fff;
     --surface: #efefef;
@@ -9,7 +8,7 @@
     --accent: dodgerblue;
 }
 
-@media (prefers-color-scheme:dark) {
+@media (prefers-color-scheme: dark) {
     :root {
         --base: #111;
         --surface: #333;
@@ -99,6 +98,7 @@ pre>code {
 
 a {
     color: inherit;
+    text-underline-offset: 4px;
 }
 
 a:hover {
diff --git a/styles.html b/styles.html
index e357361..e1df331 100644
--- a/styles.html
+++ b/styles.html
@@ -11,7 +11,7 @@
 --muted: #444;
 --accent: dodgerblue;
 }</p>
-<p>@media (prefers-color-scheme:dark) {
+<p>@media (prefers-color-scheme: dark) {
 :root {
 --base: #111;
 --surface: #333;
@@ -86,6 +86,7 @@
 }</p>
 <p>a {
 color: inherit;
+text-underline-offset: 4px;
 }</p>
 <p>a:hover {
 color: var(--accent);

From d1eb9a126e30ed682590f0310bb4f176499cd8b6 Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Mon, 27 Jun 2022 05:51:04 +0000
Subject: [PATCH 17/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@721588ed24e3cddcc085c89e41b0839d43dd1d1f=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 api.html      | 2 +-
 download.html | 2 +-
 index.html    | 2 +-
 manual.html   | 2 +-
 style.css     | 7 +++++++
 styles.html   | 6 ++++++
 6 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/api.html b/api.html
index 304c17b..fbfc955 100644
--- a/api.html
+++ b/api.html
@@ -10,7 +10,7 @@
 <meta name="description" content="commits to changelog generator">
 <!-- meta end -->
 <h3><a href="/commitlog/">commitlog</a></h3>
-<p><a href="/commitlog/">Home</a> <a href="/commitlog/manual">Manual</a> <a href="/commitlog/download">Download ↓</a> <a href="/commitlog/api">API</a></p>
+<p><a href="/commitlog/">Home</a> <a href="/commitlog/manual">Manual</a> <a href="/commitlog/download">Download</a> <a href="/commitlog/api">API</a></p>
 <h1>API</h1>
 <h3>General Guide</h3>
 <p>commitlog also comes as a pkg that you could reuse to modify the behaviour of
diff --git a/download.html b/download.html
index 5af99f8..e1d7be7 100644
--- a/download.html
+++ b/download.html
@@ -10,7 +10,7 @@
 <meta name="description" content="commits to changelog generator">
 <!-- meta end -->
 <h3><a href="/commitlog/">commitlog</a></h3>
-<p><a href="/commitlog/">Home</a> <a href="/commitlog/manual">Manual</a> <a href="/commitlog/download">Download ↓</a> <a href="/commitlog/api">API</a></p>
+<p><a href="/commitlog/">Home</a> <a href="/commitlog/manual">Manual</a> <a href="/commitlog/download">Download</a> <a href="/commitlog/api">API</a></p>
 <h4>Downloads</h4>
 <p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-darwin-amd64.tar.gz%22">commitlog-v2.0.0-beta.0-darwin-amd64.tar.gz</a></p>
 <p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-darwin-amd64.tar.gz.md5%22">commitlog-v2.0.0-beta.0-darwin-amd64.tar.gz.md5</a></p>
diff --git a/index.html b/index.html
index a8dc2ab..3c55c71 100644
--- a/index.html
+++ b/index.html
@@ -10,7 +10,7 @@
 <meta name="description" content="commits to changelog generator">
 <!-- meta end -->
 <h3><a href="/commitlog/">commitlog</a></h3>
-<p><a href="/commitlog/">Home</a> <a href="/commitlog/manual">Manual</a> <a href="/commitlog/download">Download ↓</a> <a href="/commitlog/api">API</a></p>
+<p><a href="/commitlog/">Home</a> <a href="/commitlog/manual">Manual</a> <a href="/commitlog/download">Download</a> <a href="/commitlog/api">API</a></p>
 <h4>Index</h4>
 <ul>
 <li><a href="https://github.com/barelyhuman/commitlog">Source</a></li>
diff --git a/manual.html b/manual.html
index 1809dbd..e8ba26f 100644
--- a/manual.html
+++ b/manual.html
@@ -10,7 +10,7 @@
 <meta name="description" content="commits to changelog generator">
 <!-- meta end -->
 <h3><a href="/commitlog/">commitlog</a></h3>
-<p><a href="/commitlog/">Home</a> <a href="/commitlog/manual">Manual</a> <a href="/commitlog/download">Download ↓</a> <a href="/commitlog/api">API</a></p>
+<p><a href="/commitlog/">Home</a> <a href="/commitlog/manual">Manual</a> <a href="/commitlog/download">Download</a> <a href="/commitlog/api">API</a></p>
 <h1>Manual</h1>
 <ul>
 <li><a href="#basics">Basics</a>
diff --git a/style.css b/style.css
index 490da3a..8791f50 100644
--- a/style.css
+++ b/style.css
@@ -108,4 +108,11 @@ a:hover {
 hr {
     border: 0px;
     border-top: 1px solid var(--surface);
+}
+
+blockquote {
+    margin: 0px;
+    padding: 0px;
+    border-left: 2px solid var(--muted);
+    padding-left: 10px;
 }
\ No newline at end of file
diff --git a/styles.html b/styles.html
index e1df331..737342b 100644
--- a/styles.html
+++ b/styles.html
@@ -95,6 +95,12 @@
 border: 0px;
 border-top: 1px solid var(--surface);
 }</p>
+<p>blockquote {
+margin: 0px;
+padding: 0px;
+border-left: 2px solid var(--muted);
+padding-left: 10px;
+}</p>
 </section></div>
   <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
   <script>

From 22d5a4f65c945bda1ccb0484f5b3d8a6b01033bd Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Mon, 19 Sep 2022 10:08:37 +0000
Subject: [PATCH 18/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@bb7d5123e68a7ee65842cce8416d5bedc2c452df=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 download.html | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/download.html b/download.html
index e1d7be7..2667da1 100644
--- a/download.html
+++ b/download.html
@@ -12,20 +12,20 @@
 <h3><a href="/commitlog/">commitlog</a></h3>
 <p><a href="/commitlog/">Home</a> <a href="/commitlog/manual">Manual</a> <a href="/commitlog/download">Download</a> <a href="/commitlog/api">API</a></p>
 <h4>Downloads</h4>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-darwin-amd64.tar.gz%22">commitlog-v2.0.0-beta.0-darwin-amd64.tar.gz</a></p>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-darwin-amd64.tar.gz.md5%22">commitlog-v2.0.0-beta.0-darwin-amd64.tar.gz.md5</a></p>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-darwin-arm64.tar.gz%22">commitlog-v2.0.0-beta.0-darwin-arm64.tar.gz</a></p>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-darwin-arm64.tar.gz.md5%22">commitlog-v2.0.0-beta.0-darwin-arm64.tar.gz.md5</a></p>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-linux-386.tar.gz%22">commitlog-v2.0.0-beta.0-linux-386.tar.gz</a></p>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-linux-386.tar.gz.md5%22">commitlog-v2.0.0-beta.0-linux-386.tar.gz.md5</a></p>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-linux-amd64.tar.gz%22">commitlog-v2.0.0-beta.0-linux-amd64.tar.gz</a></p>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-linux-amd64.tar.gz.md5%22">commitlog-v2.0.0-beta.0-linux-amd64.tar.gz.md5</a></p>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-linux-arm64.tar.gz%22">commitlog-v2.0.0-beta.0-linux-arm64.tar.gz</a></p>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-linux-arm64.tar.gz.md5%22">commitlog-v2.0.0-beta.0-linux-arm64.tar.gz.md5</a></p>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-windows-386.zip%22">commitlog-v2.0.0-beta.0-windows-386.zip</a></p>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-windows-386.zip.md5%22">commitlog-v2.0.0-beta.0-windows-386.zip.md5</a></p>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-windows-amd64.zip%22">commitlog-v2.0.0-beta.0-windows-amd64.zip</a></p>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.0-beta.0/commitlog-v2.0.0-beta.0-windows-amd64.zip.md5%22">commitlog-v2.0.0-beta.0-windows-amd64.zip.md5</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-amd64.tar.gz%22">commitlog-v2.0.2-darwin-amd64.tar.gz</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-amd64.tar.gz.md5%22">commitlog-v2.0.2-darwin-amd64.tar.gz.md5</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-arm64.tar.gz%22">commitlog-v2.0.2-darwin-arm64.tar.gz</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-arm64.tar.gz.md5%22">commitlog-v2.0.2-darwin-arm64.tar.gz.md5</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-386.tar.gz%22">commitlog-v2.0.2-linux-386.tar.gz</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-386.tar.gz.md5%22">commitlog-v2.0.2-linux-386.tar.gz.md5</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-amd64.tar.gz%22">commitlog-v2.0.2-linux-amd64.tar.gz</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-amd64.tar.gz.md5%22">commitlog-v2.0.2-linux-amd64.tar.gz.md5</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-arm64.tar.gz%22">commitlog-v2.0.2-linux-arm64.tar.gz</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-arm64.tar.gz.md5%22">commitlog-v2.0.2-linux-arm64.tar.gz.md5</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-386.zip%22">commitlog-v2.0.2-windows-386.zip</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-386.zip.md5%22">commitlog-v2.0.2-windows-386.zip.md5</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-amd64.zip%22">commitlog-v2.0.2-windows-amd64.zip</a></p>
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-amd64.zip.md5%22">commitlog-v2.0.2-windows-amd64.zip.md5</a></p>
 </section></div>
   <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
   <script>

From b9c23b4f95159f4d82f27f988cb24abdadeb6c50 Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Tue, 24 Jan 2023 17:35:30 +0000
Subject: [PATCH 19/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@28cd5f0db8efe0f1edc43e2d5bc41febc416f6b1=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 api.html      |   15 +-
 download.html |   43 +-
 index.html    |   15 +-
 manual.html   |   15 +-
 mudkip.js     | 2751 +++++++++++++++++++++++++++++++++++++++++++++++++
 search.json   |    1 +
 styles.html   |  110 --
 7 files changed, 2774 insertions(+), 176 deletions(-)
 create mode 100644 mudkip.js
 create mode 100644 search.json
 delete mode 100644 styles.html

diff --git a/api.html b/api.html
index fbfc955..76faee5 100644
--- a/api.html
+++ b/api.html
@@ -1,9 +1,4 @@
-  <head>
-    <link rel="stylesheet" href="style.css" />
-  </head>
-    <body>
-  <div class="layout-container">
-  <section><!-- meta -->
+<html><head><link rel="stylesheet" href="style.css" /></head><body><div id="search-container"></div><div class="layout-container"><section><!-- meta -->
 <title>
     commitlog | manual
 </title>
@@ -66,10 +61,4 @@ <h3>General Guide</h3>
 <p><strong>Note</strong>: if the go doc still hasn't been generated for v2.0.0, please go
 through the source code to help you with the implementation details</p>
 </blockquote>
-</section></div>
-  <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
-  <script>
-    hljs.highlightAll();
-  </script>
-  </body>
-  
\ No newline at end of file
+</section></div><script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script><script>hljs.highlightAll()</script><script src="mudkip.js"></script></body></html>
\ No newline at end of file
diff --git a/download.html b/download.html
index 2667da1..bdf18dc 100644
--- a/download.html
+++ b/download.html
@@ -1,9 +1,4 @@
-  <head>
-    <link rel="stylesheet" href="style.css" />
-  </head>
-    <body>
-  <div class="layout-container">
-  <section><!-- meta -->
+<html><head><link rel="stylesheet" href="style.css" /></head><body><div id="search-container"></div><div class="layout-container"><section><!-- meta -->
 <title>
     commitlog | downloads
 </title>
@@ -12,24 +7,18 @@
 <h3><a href="/commitlog/">commitlog</a></h3>
 <p><a href="/commitlog/">Home</a> <a href="/commitlog/manual">Manual</a> <a href="/commitlog/download">Download</a> <a href="/commitlog/api">API</a></p>
 <h4>Downloads</h4>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-amd64.tar.gz%22">commitlog-v2.0.2-darwin-amd64.tar.gz</a></p>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-amd64.tar.gz.md5%22">commitlog-v2.0.2-darwin-amd64.tar.gz.md5</a></p>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-arm64.tar.gz%22">commitlog-v2.0.2-darwin-arm64.tar.gz</a></p>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-arm64.tar.gz.md5%22">commitlog-v2.0.2-darwin-arm64.tar.gz.md5</a></p>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-386.tar.gz%22">commitlog-v2.0.2-linux-386.tar.gz</a></p>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-386.tar.gz.md5%22">commitlog-v2.0.2-linux-386.tar.gz.md5</a></p>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-amd64.tar.gz%22">commitlog-v2.0.2-linux-amd64.tar.gz</a></p>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-amd64.tar.gz.md5%22">commitlog-v2.0.2-linux-amd64.tar.gz.md5</a></p>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-arm64.tar.gz%22">commitlog-v2.0.2-linux-arm64.tar.gz</a></p>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-arm64.tar.gz.md5%22">commitlog-v2.0.2-linux-arm64.tar.gz.md5</a></p>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-386.zip%22">commitlog-v2.0.2-windows-386.zip</a></p>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-386.zip.md5%22">commitlog-v2.0.2-windows-386.zip.md5</a></p>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-amd64.zip%22">commitlog-v2.0.2-windows-amd64.zip</a></p>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-amd64.zip.md5%22">commitlog-v2.0.2-windows-amd64.zip.md5</a></p>
-</section></div>
-  <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
-  <script>
-    hljs.highlightAll();
-  </script>
-  </body>
-  
\ No newline at end of file
+<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-amd64.tar.gz%22">commitlog-v2.0.2-darwin-amd64.tar.gz</a><br />
+<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-amd64.tar.gz.md5%22">commitlog-v2.0.2-darwin-amd64.tar.gz.md5</a><br />
+<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-arm64.tar.gz%22">commitlog-v2.0.2-darwin-arm64.tar.gz</a><br />
+<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-arm64.tar.gz.md5%22">commitlog-v2.0.2-darwin-arm64.tar.gz.md5</a><br />
+<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-386.tar.gz%22">commitlog-v2.0.2-linux-386.tar.gz</a><br />
+<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-386.tar.gz.md5%22">commitlog-v2.0.2-linux-386.tar.gz.md5</a><br />
+<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-amd64.tar.gz%22">commitlog-v2.0.2-linux-amd64.tar.gz</a><br />
+<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-amd64.tar.gz.md5%22">commitlog-v2.0.2-linux-amd64.tar.gz.md5</a><br />
+<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-arm64.tar.gz%22">commitlog-v2.0.2-linux-arm64.tar.gz</a><br />
+<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-arm64.tar.gz.md5%22">commitlog-v2.0.2-linux-arm64.tar.gz.md5</a><br />
+<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-386.zip%22">commitlog-v2.0.2-windows-386.zip</a><br />
+<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-386.zip.md5%22">commitlog-v2.0.2-windows-386.zip.md5</a><br />
+<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-amd64.zip%22">commitlog-v2.0.2-windows-amd64.zip</a><br />
+<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-amd64.zip.md5%22">commitlog-v2.0.2-windows-amd64.zip.md5</a></p>
+</section></div><script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script><script>hljs.highlightAll()</script><script src="mudkip.js"></script></body></html>
\ No newline at end of file
diff --git a/index.html b/index.html
index 3c55c71..b7b88ca 100644
--- a/index.html
+++ b/index.html
@@ -1,9 +1,4 @@
-  <head>
-    <link rel="stylesheet" href="style.css" />
-  </head>
-    <body>
-  <div class="layout-container">
-  <section><!-- meta -->
+<html><head><link rel="stylesheet" href="style.css" /></head><body><div id="search-container"></div><div class="layout-container"><section><!-- meta -->
 <title>
     commitlog
 </title>
@@ -114,10 +109,4 @@ <h4 id="manual">Manual</h4>
 <h4 id="license">License</h4>
 <p>commitlog is MIT Licensed and you can read the entire license in the
 <a href="https://github.com/barelyhuman/commitlog">source code</a></p>
-</section></div>
-  <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
-  <script>
-    hljs.highlightAll();
-  </script>
-  </body>
-  
\ No newline at end of file
+</section></div><script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script><script>hljs.highlightAll()</script><script src="mudkip.js"></script></body></html>
\ No newline at end of file
diff --git a/manual.html b/manual.html
index e8ba26f..da8515c 100644
--- a/manual.html
+++ b/manual.html
@@ -1,9 +1,4 @@
-  <head>
-    <link rel="stylesheet" href="style.css" />
-  </head>
-    <body>
-  <div class="layout-container">
-  <section><!-- meta -->
+<html><head><link rel="stylesheet" href="style.css" /></head><body><div id="search-container"></div><div class="layout-container"><section><!-- meta -->
 <title>
     commitlog | manual
 </title>
@@ -259,10 +254,4 @@ <h3 id="cli">CLI</h3>
    --pre-tag value       create a pre-release version (default: &quot;beta&quot;)
    --push                if true will create push the created release commit + tag on origin (default: false)
 </code></pre>
-</section></div>
-  <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
-  <script>
-    hljs.highlightAll();
-  </script>
-  </body>
-  
\ No newline at end of file
+</section></div><script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script><script>hljs.highlightAll()</script><script src="mudkip.js"></script></body></html>
\ No newline at end of file
diff --git a/mudkip.js b/mudkip.js
new file mode 100644
index 0000000..e690c80
--- /dev/null
+++ b/mudkip.js
@@ -0,0 +1,2751 @@
+/* Generated by the Nim Compiler v1.6.4 */
+var framePtr = null;
+var excHandler = 0;
+var lastJSError = null;
+var NTI1392508934 = {size: 0, kind: 24, base: null, node: null, finalizer: null};
+var NTI1392508932 = {size: 0, kind: 18, base: null, node: null, finalizer: null};
+var NTI1392508933 = {size: 0, kind: 24, base: null, node: null, finalizer: null};
+var NTI704643133 = {size: 0, kind: 18, base: null, node: null, finalizer: null};
+var NTI637534211 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NTI33554438 = {size: 0,kind: 2,base: null,node: null,finalizer: null};
+var NTI637534212 = {size: 0, kind: 19, base: null, node: null, finalizer: null};
+var NTI33555124 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NTI33555114 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NTI33555125 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NTI889192520 = {size: 0,kind: 31,base: null,node: null,finalizer: null};
+var NTI889192527 = {size: 0, kind: 18, base: null, node: null, finalizer: null};
+var NTI33555121 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NTI1392508931 = {size: 0, kind: 18, base: null, node: null, finalizer: null};
+var NTI33554466 = {size: 0,kind: 1,base: null,node: null,finalizer: null};
+var NTI33554456 = {size: 0,kind: 31,base: null,node: null,finalizer: null};
+var NTI620757006 = {size: 0, kind: 18, base: null, node: null, finalizer: null};
+var NTI33555128 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NTI33555130 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NTI33555083 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NTI33555165 = {size: 0, kind: 22, base: null, node: null, finalizer: null};
+var NTI33554439 = {size: 0,kind: 28,base: null,node: null,finalizer: null};
+var NTI33554440 = {size: 0,kind: 29,base: null,node: null,finalizer: null};
+var NTI33555164 = {size: 0, kind: 22, base: null, node: null, finalizer: null};
+var NTI33555112 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NTI33555113 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NTI33555120 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NTI33555122 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NNI33555122 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
+NTI33555122.node = NNI33555122;
+var NNI33555120 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
+NTI33555120.node = NNI33555120;
+var NNI33555113 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
+NTI33555113.node = NNI33555113;
+NTI33555164.base = NTI33555112;
+NTI33555165.base = NTI33555112;
+var NNI33555112 = {kind: 2, len: 5, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "parent", len: 0, typ: NTI33555164, name: "parent", sons: null}, 
+{kind: 1, offset: "name", len: 0, typ: NTI33554440, name: "name", sons: null}, 
+{kind: 1, offset: "message", len: 0, typ: NTI33554439, name: "msg", sons: null}, 
+{kind: 1, offset: "trace", len: 0, typ: NTI33554439, name: "trace", sons: null}, 
+{kind: 1, offset: "up", len: 0, typ: NTI33555165, name: "up", sons: null}]};
+NTI33555112.node = NNI33555112;
+var NNI33555083 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
+NTI33555083.node = NNI33555083;
+NTI33555112.base = NTI33555083;
+NTI33555113.base = NTI33555112;
+NTI33555120.base = NTI33555113;
+NTI33555122.base = NTI33555120;
+var NNI33555130 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
+NTI33555130.node = NNI33555130;
+NTI33555130.base = NTI33555113;
+var NNI33555128 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
+NTI33555128.node = NNI33555128;
+NTI33555128.base = NTI33555113;
+var NNI620757006 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "Field0", len: 0, typ: NTI33554456, name: "Field0", sons: null}, 
+{kind: 1, offset: "Field1", len: 0, typ: NTI33554466, name: "Field1", sons: null}]};
+NTI620757006.node = NNI620757006;
+var NNI1392508931 = {kind: 2, len: 4, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "element", len: 0, typ: NTI33554439, name: "element", sons: null}, 
+{kind: 1, offset: "slug", len: 0, typ: NTI33554439, name: "slug", sons: null}, 
+{kind: 1, offset: "count", len: 0, typ: NTI33554456, name: "count", sons: null}, 
+{kind: 1, offset: "score", len: 0, typ: NTI33554456, name: "score", sons: null}]};
+NTI1392508931.node = NNI1392508931;
+var NNI33555121 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
+NTI33555121.node = NNI33555121;
+NTI33555121.base = NTI33555120;
+var NNI889192527 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "a", len: 0, typ: NTI889192520, name: "a", sons: null}, 
+{kind: 1, offset: "b", len: 0, typ: NTI33554456, name: "b", sons: null}]};
+NTI889192527.node = NNI889192527;
+var NNI33555125 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
+NTI33555125.node = NNI33555125;
+var NNI33555114 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
+NTI33555114.node = NNI33555114;
+NTI33555114.base = NTI33555112;
+NTI33555125.base = NTI33555114;
+var NNI33555124 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
+NTI33555124.node = NNI33555124;
+NTI33555124.base = NTI33555113;
+NTI637534212.base = NTI33554438;
+var NNI637534211 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
+NTI637534211.node = NNI637534211;
+NTI637534211.base = NTI33555125;
+var NNI704643133 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "a", len: 0, typ: NTI33554456, name: "a", sons: null}, 
+{kind: 1, offset: "b", len: 0, typ: NTI33554456, name: "b", sons: null}]};
+NTI704643133.node = NNI704643133;
+NTI1392508933.base = NTI33554439;
+var NNI1392508932 = {kind: 2, len: 3, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "title", len: 0, typ: NTI33554439, name: "title", sons: null}, 
+{kind: 1, offset: "slug", len: 0, typ: NTI33554439, name: "slug", sons: null}, 
+{kind: 1, offset: "contentTokens", len: 0, typ: NTI1392508933, name: "contentTokens", sons: null}]};
+NTI1392508932.node = NNI1392508932;
+NTI1392508934.base = NTI1392508932;
+
+function makeNimstrLit(c_33556802) {
+      var result = [];
+  for (var i = 0; i < c_33556802.length; ++i) {
+    result[i] = c_33556802.charCodeAt(i);
+  }
+  return result;
+  
+
+  
+}
+
+function mnewString(len_33556894) {
+        return new Array(len_33556894);
+  
+
+  
+}
+
+function toJSStr(s_33556808) {
+                    var Temporary5;
+            var Temporary7;
+
+  var result_33556809 = null;
+
+    var res_33556843 = newSeq_33556826((s_33556808).length);
+    var i_33556844 = 0;
+    var j_33556845 = 0;
+    Label1: do {
+        Label2: while (true) {
+        if (!(i_33556844 < (s_33556808).length)) break Label2;
+          var c_33556846 = s_33556808[i_33556844];
+          if ((c_33556846 < 128)) {
+          res_33556843[j_33556845] = String.fromCharCode(c_33556846);
+          i_33556844 += 1;
+          }
+          else {
+            var helper_33556858 = newSeq_33556826(0);
+            Label3: do {
+                Label4: while (true) {
+                if (!true) break Label4;
+                  var code_33556859 = c_33556846.toString(16);
+                  if ((((code_33556859) == null ? 0 : (code_33556859).length) == 1)) {
+                  helper_33556858.push("%0");;
+                  }
+                  else {
+                  helper_33556858.push("%");;
+                  }
+                  
+                  helper_33556858.push(code_33556859);;
+                  i_33556844 += 1;
+                    if (((s_33556808).length <= i_33556844)) Temporary5 = true; else {                      Temporary5 = (s_33556808[i_33556844] < 128);                    }                  if (Temporary5) {
+                  break Label3;
+                  }
+                  
+                  c_33556846 = s_33556808[i_33556844];
+                }
+            } while (false);
+++excHandler;
+            Temporary7 = framePtr;
+            try {
+            res_33556843[j_33556845] = decodeURIComponent(helper_33556858.join(""));
+--excHandler;
+} catch (EXCEPTION) {
+ var prevJSError = lastJSError;
+ lastJSError = EXCEPTION;
+ --excHandler;
+            framePtr = Temporary7;
+            res_33556843[j_33556845] = helper_33556858.join("");
+            lastJSError = prevJSError;
+            } finally {
+            framePtr = Temporary7;
+            }
+          }
+          
+          j_33556845 += 1;
+        }
+    } while (false);
+    if (res_33556843.length < j_33556845) { for (var i = res_33556843.length ; i < j_33556845 ; ++i) res_33556843.push(null); }
+               else { res_33556843.length = j_33556845; };
+    result_33556809 = res_33556843.join("");
+
+  return result_33556809;
+
+}
+
+function raiseException(e_33556668, ename_33556669) {
+    e_33556668.name = ename_33556669;
+    if ((excHandler == 0)) {
+    unhandledException(e_33556668);
+    }
+    
+    throw e_33556668;
+
+  
+}
+
+function addInt(a_33556941, b_33556942) {
+        var result = a_33556941 + b_33556942;
+    checkOverflowInt(result);
+    return result;
+  
+
+  
+}
+
+function chckRange(i_33557190, a_33557191, b_33557192) {
+      var Temporary1;
+
+  var result_33557193 = 0;
+
+  BeforeRet: do {
+      if (!(a_33557191 <= i_33557190)) Temporary1 = false; else {        Temporary1 = (i_33557190 <= b_33557192);      }    if (Temporary1) {
+    result_33557193 = i_33557190;
+    break BeforeRet;
+    }
+    else {
+    raiseRangeError();
+    }
+    
+  } while (false);
+
+  return result_33557193;
+
+}
+
+function setConstr() {
+        var result = {};
+    for (var i = 0; i < arguments.length; ++i) {
+      var x = arguments[i];
+      if (typeof(x) == "object") {
+        for (var j = x[0]; j <= x[1]; ++j) {
+          result[j] = true;
+        }
+      } else {
+        result[x] = true;
+      }
+    }
+    return result;
+  
+
+  
+}
+var ConstSet1 = setConstr(17, 16, 4, 18, 27, 19, 23, 22, 21);
+
+function nimCopy(dest_33557141, src_33557142, ti_33557143) {
+  var result_33557152 = null;
+
+    switch (ti_33557143.kind) {
+    case 21:
+    case 22:
+    case 23:
+    case 5:
+      if (!(isFatPointer_33557132(ti_33557143))) {
+      result_33557152 = src_33557142;
+      }
+      else {
+        result_33557152 = [src_33557142[0], src_33557142[1]];
+      }
+      
+      break;
+    case 19:
+            if (dest_33557141 === null || dest_33557141 === undefined) {
+        dest_33557141 = {};
+      }
+      else {
+        for (var key in dest_33557141) { delete dest_33557141[key]; }
+      }
+      for (var key in src_33557142) { dest_33557141[key] = src_33557142[key]; }
+      result_33557152 = dest_33557141;
+    
+      break;
+    case 18:
+    case 17:
+      if (!((ti_33557143.base == null))) {
+      result_33557152 = nimCopy(dest_33557141, src_33557142, ti_33557143.base);
+      }
+      else {
+      if ((ti_33557143.kind == 17)) {
+      result_33557152 = (dest_33557141 === null || dest_33557141 === undefined) ? {m_type: ti_33557143} : dest_33557141;
+      }
+      else {
+        result_33557152 = (dest_33557141 === null || dest_33557141 === undefined) ? {} : dest_33557141;
+      }
+      }
+      nimCopyAux(result_33557152, src_33557142, ti_33557143.node);
+      break;
+    case 24:
+    case 4:
+    case 27:
+    case 16:
+            if (src_33557142 === null) {
+        result_33557152 = null;
+      }
+      else {
+        if (dest_33557141 === null || dest_33557141 === undefined || dest_33557141.length != src_33557142.length) {
+          dest_33557141 = new Array(src_33557142.length);
+        }
+        result_33557152 = dest_33557141;
+        for (var i = 0; i < src_33557142.length; ++i) {
+          result_33557152[i] = nimCopy(result_33557152[i], src_33557142[i], ti_33557143.base);
+        }
+      }
+    
+      break;
+    case 28:
+            if (src_33557142 !== null) {
+        result_33557152 = src_33557142.slice(0);
+      }
+    
+      break;
+    default: 
+      result_33557152 = src_33557142;
+      break;
+    }
+
+  return result_33557152;
+
+}
+
+function chckIndx(i_33557185, a_33557186, b_33557187) {
+      var Temporary1;
+
+  var result_33557188 = 0;
+
+  BeforeRet: do {
+      if (!(a_33557186 <= i_33557185)) Temporary1 = false; else {        Temporary1 = (i_33557185 <= b_33557187);      }    if (Temporary1) {
+    result_33557188 = i_33557185;
+    break BeforeRet;
+    }
+    else {
+    raiseIndexError(i_33557185, a_33557186, b_33557187);
+    }
+    
+  } while (false);
+
+  return result_33557188;
+
+}
+
+function nimMax(a_33556999, b_33557000) {
+    var Temporary1;
+
+  var result_33557001 = 0;
+
+  BeforeRet: do {
+    if ((b_33557000 <= a_33556999)) {
+    Temporary1 = a_33556999;
+    }
+    else {
+    Temporary1 = b_33557000;
+    }
+    
+    result_33557001 = Temporary1;
+    break BeforeRet;
+  } while (false);
+
+  return result_33557001;
+
+}
+
+function subInt(a_33556945, b_33556946) {
+        var result = a_33556945 - b_33556946;
+    checkOverflowInt(result);
+    return result;
+  
+
+  
+}
+
+function nimMin(a_33556995, b_33556996) {
+    var Temporary1;
+
+  var result_33556997 = 0;
+
+  BeforeRet: do {
+    if ((a_33556995 <= b_33556996)) {
+    Temporary1 = a_33556995;
+    }
+    else {
+    Temporary1 = b_33556996;
+    }
+    
+    result_33556997 = Temporary1;
+    break BeforeRet;
+  } while (false);
+
+  return result_33556997;
+
+}
+var ConstSet2 = setConstr([65, 90]);
+var ConstSet3 = setConstr(95, 32, 46);
+var ConstSet4 = setConstr(95, 32, 46);
+
+function mulInt(a_33556949, b_33556950) {
+        var result = a_33556949 * b_33556950;
+    checkOverflowInt(result);
+    return result;
+  
+
+  
+}
+var ConstSet5 = setConstr([97, 122]);
+var ConstSet6 = setConstr([65, 90], [97, 122]);
+var ConstSet7 = setConstr([97, 122]);
+var ConstSet8 = setConstr([65, 90]);
+var ConstSet9 = setConstr([65, 90], [97, 122]);
+
+function eqStrings(a_33556932, b_33556933) {
+        if (a_33556932 == b_33556933) return true;
+    if (a_33556932 === null && b_33556933.length == 0) return true;
+    if (b_33556933 === null && a_33556932.length == 0) return true;
+    if ((!a_33556932) || (!b_33556933)) return false;
+    var alen = a_33556932.length;
+    if (alen != b_33556933.length) return false;
+    for (var i = 0; i < alen; ++i)
+      if (a_33556932[i] != b_33556933[i]) return false;
+    return true;
+  
+
+  
+}
+var ConstSet10 = setConstr(60, 62, 94);
+var ConstSet11 = setConstr(60, 62, 94);
+var ConstSet12 = setConstr(45, 43, 32);
+var ConstSet13 = setConstr([48, 57]);
+var ConstSet14 = setConstr([48, 57]);
+var ConstSet15 = setConstr([48, 57]);
+
+function divInt(a_33556953, b_33556954) {
+        if (b_33556954 == 0) raiseDivByZero();
+    if (b_33556954 == -1 && a_33556953 == 2147483647) raiseOverflow();
+    return Math.trunc(a_33556953 / b_33556954);
+  
+
+  
+}
+var ConstSet16 = setConstr([65, 90], [97, 122]);
+
+function nimCharToStr(x_33556518) {
+  var result_33556519 = [];
+
+    result_33556519 = nimCopy(null, mnewString(1), NTI33554439);
+    result_33556519[0] = x_33556518;
+
+  return result_33556519;
+
+}
+
+function addChar(x_33557256, c_33557257) {
+    x_33557256.push(c_33557257);
+
+  
+}
+
+function rawEcho() {
+          var buf = "";
+      for (var i = 0; i < arguments.length; ++i) {
+        buf += toJSStr(arguments[i]);
+      }
+      console.log(buf);
+    
+
+  
+}
+
+function cstrToNimstr(c_33556805) {
+      var ln = c_33556805.length;
+  var result = new Array(ln);
+  var r = 0;
+  for (var i = 0; i < ln; ++i) {
+    var ch = c_33556805.charCodeAt(i);
+
+    if (ch < 128) {
+      result[r] = ch;
+    }
+    else {
+      if (ch < 2048) {
+        result[r] = (ch >> 6) | 192;
+      }
+      else {
+        if (ch < 55296 || ch >= 57344) {
+          result[r] = (ch >> 12) | 224;
+        }
+        else {
+            ++i;
+            ch = 65536 + (((ch & 1023) << 10) | (c_33556805.charCodeAt(i) & 1023));
+            result[r] = (ch >> 18) | 240;
+            ++r;
+            result[r] = ((ch >> 12) & 63) | 128;
+        }
+        ++r;
+        result[r] = ((ch >> 6) & 63) | 128;
+      }
+      ++r;
+      result[r] = (ch & 63) | 128;
+    }
+    ++r;
+  }
+  return result;
+  
+
+  
+}
+var ConstSet17 = setConstr(32, 10, 9, 13);
+            var whiteSpace_637534219 = nimCopy(null, ConstSet17, NTI637534212);
+var ConstSet18 = setConstr(120, 88);
+if (!Math.trunc) {
+  Math.trunc = function(v) {
+    v = +v;
+    if (!isFinite(v)) return v;
+    return (v - v % 1) || (v < 0 ? -0 : v === 0 ? v : 0);
+  };
+}
+
+var objectID_1107296418 = [0];
+var searchDB_469762055 = [[]];
+
+function add_33556420(x_33556421, x_33556421_Idx, y_33556422) {
+          if (x_33556421[x_33556421_Idx] === null) { x_33556421[x_33556421_Idx] = []; }
+      var off = x_33556421[x_33556421_Idx].length;
+      x_33556421[x_33556421_Idx].length += y_33556422.length;
+      for (var i = 0; i < y_33556422.length; ++i) {
+        x_33556421[x_33556421_Idx][off+i] = y_33556422.charCodeAt(i);
+      }
+    
+
+  
+}
+
+function newSeq_33556826(len_33556828) {
+  var result_33556829 = [];
+
+    result_33556829 = new Array(len_33556828); for (var i = 0 ; i < len_33556828 ; ++i) { result_33556829[i] = null; }
+  return result_33556829;
+
+}
+
+function unhandledException(e_33556664) {
+    var buf_33556665 = [[]];
+    if (!(((e_33556664.message).length == 0))) {
+    buf_33556665[0].push.apply(buf_33556665[0], makeNimstrLit("Error: unhandled exception: "));;
+    buf_33556665[0].push.apply(buf_33556665[0], e_33556664.message);;
+    }
+    else {
+    buf_33556665[0].push.apply(buf_33556665[0], makeNimstrLit("Error: unhandled exception"));;
+    }
+    
+    buf_33556665[0].push.apply(buf_33556665[0], makeNimstrLit(" ["));;
+    add_33556420(buf_33556665, 0, e_33556664.name);
+    buf_33556665[0].push.apply(buf_33556665[0], makeNimstrLit("]\x0A"));;
+    var cbuf_33556666 = toJSStr(buf_33556665[0]);
+    framePtr = null;
+      if (typeof(Error) !== "undefined") {
+    throw new Error(cbuf_33556666);
+  }
+  else {
+    throw cbuf_33556666;
+  }
+  
+
+  
+}
+
+function raiseOverflow() {
+    raiseException({message: makeNimstrLit("over- or underflow"), parent: null, m_type: NTI33555122, name: null, trace: [], up: null}, "OverflowDefect");
+
+  
+}
+
+function checkOverflowInt(a_33556939) {
+        if (a_33556939 > 2147483647 || a_33556939 < -2147483648) raiseOverflow();
+  
+
+  
+}
+
+function raiseRangeError() {
+    raiseException({message: makeNimstrLit("value out of range"), parent: null, m_type: NTI33555130, name: null, trace: [], up: null}, "RangeDefect");
+
+  
+}
+
+function addChars_251658415(result_251658417, result_251658417_Idx, x_251658418, start_251658419, n_251658420) {
+    var old_251658421 = (result_251658417[result_251658417_Idx]).length;
+    (result_251658417[result_251658417_Idx].length = chckRange(addInt(old_251658421, n_251658420), 0, 2147483647));
+    Label1: do {
+      var iHEX60gensym4_251658435 = 0;
+      var i_469762373 = 0;
+      Label2: do {
+          Label3: while (true) {
+          if (!(i_469762373 < n_251658420)) break Label3;
+            iHEX60gensym4_251658435 = i_469762373;
+            result_251658417[result_251658417_Idx][chckIndx(addInt(old_251658421, iHEX60gensym4_251658435), 0, (result_251658417[result_251658417_Idx]).length - 1)] = x_251658418.charCodeAt(chckIndx(addInt(start_251658419, iHEX60gensym4_251658435), 0, (x_251658418).length - 1));
+            i_469762373 = addInt(i_469762373, 1);
+          }
+      } while (false);
+    } while (false);
+
+  
+}
+
+function addChars_251658411(result_251658413, result_251658413_Idx, x_251658414) {
+    addChars_251658415(result_251658413, result_251658413_Idx, x_251658414, 0, ((x_251658414) == null ? 0 : (x_251658414).length));
+
+  
+}
+
+function addInt_251658436(result_251658437, result_251658437_Idx, x_251658438) {
+    addChars_251658411(result_251658437, result_251658437_Idx, ((x_251658438) + ""));
+
+  
+}
+
+function addInt_251658457(result_251658458, result_251658458_Idx, x_251658459) {
+    addInt_251658436(result_251658458, result_251658458_Idx, x_251658459);
+
+  
+}
+
+function HEX24_335544323(x_335544324) {
+  var result_335544325 = [[]];
+
+    addInt_251658457(result_335544325, 0, x_335544324);
+
+  return result_335544325[0];
+
+}
+
+function isFatPointer_33557132(ti_33557133) {
+  var result_33557134 = false;
+
+  BeforeRet: do {
+    result_33557134 = !((ConstSet1[ti_33557133.base.kind] != undefined));
+    break BeforeRet;
+  } while (false);
+
+  return result_33557134;
+
+}
+
+function nimCopyAux(dest_33557145, src_33557146, n_33557147) {
+    switch (n_33557147.kind) {
+    case 0:
+      break;
+    case 1:
+            dest_33557145[n_33557147.offset] = nimCopy(dest_33557145[n_33557147.offset], src_33557146[n_33557147.offset], n_33557147.typ);
+    
+      break;
+    case 2:
+          for (var i = 0; i < n_33557147.sons.length; i++) {
+      nimCopyAux(dest_33557145, src_33557146, n_33557147.sons[i]);
+    }
+    
+      break;
+    case 3:
+            dest_33557145[n_33557147.offset] = nimCopy(dest_33557145[n_33557147.offset], src_33557146[n_33557147.offset], n_33557147.typ);
+      for (var i = 0; i < n_33557147.sons.length; ++i) {
+        nimCopyAux(dest_33557145, src_33557146, n_33557147.sons[i][1]);
+      }
+    
+      break;
+    }
+
+  
+}
+
+function raiseIndexError(i_33556755, a_33556756, b_33556757) {
+    var Temporary1;
+
+    if ((b_33556757 < a_33556756)) {
+    Temporary1 = makeNimstrLit("index out of bounds, the container is empty");
+    }
+    else {
+    Temporary1 = (makeNimstrLit("index ") || []).concat(HEX24_335544323(i_33556755) || [],makeNimstrLit(" not in ") || [],HEX24_335544323(a_33556756) || [],makeNimstrLit(" .. ") || [],HEX24_335544323(b_33556757) || []);
+    }
+    
+    raiseException({message: nimCopy(null, Temporary1, NTI33554439), parent: null, m_type: NTI33555128, name: null, trace: [], up: null}, "IndexDefect");
+
+  
+}
+
+function nsuFindChar(s_654312949, sub_654312950, start_654312951, last_654312952) {
+    var Temporary1;
+
+  var result_654312953 = 0;
+
+  BeforeRet: do {
+    if ((last_654312952 == 0)) {
+    Temporary1 = (s_654312949).length - 1;
+    }
+    else {
+    Temporary1 = last_654312952;
+    }
+    
+    var last_654312954 = Temporary1;
+    Label2: do {
+      var i_654312964 = 0;
+      var colontmp__469762384 = 0;
+      colontmp__469762384 = start_654312951;
+      var res_469762385 = colontmp__469762384;
+      Label3: do {
+          Label4: while (true) {
+          if (!(res_469762385 <= last_654312954)) break Label4;
+            i_654312964 = res_469762385;
+            if ((sub_654312950 == s_654312949[chckIndx(i_654312964, 0, (s_654312949).length - 1)])) {
+            result_654312953 = i_654312964;
+            break BeforeRet;
+            }
+            
+            res_469762385 = addInt(res_469762385, 1);
+          }
+      } while (false);
+    } while (false);
+    result_654312953 = -1;
+    break BeforeRet;
+  } while (false);
+
+  return result_654312953;
+
+}
+
+function substr_33557907(s_33557908, first_33557909, last_33557910) {
+  var result_33557911 = [];
+
+    var first_33557912 = nimMax(first_33557909, 0);
+    var L_33557913 = nimMax(addInt(subInt(nimMin(last_33557910, (s_33557908).length - 1), first_33557912), 1), 0);
+    result_33557911 = nimCopy(null, mnewString(chckRange(L_33557913, 0, 2147483647)), NTI33554439);
+    Label1: do {
+      var i_33557918 = 0;
+      var colontmp__469762388 = 0;
+      colontmp__469762388 = subInt(L_33557913, 1);
+      var res_469762389 = 0;
+      Label2: do {
+          Label3: while (true) {
+          if (!(res_469762389 <= colontmp__469762388)) break Label3;
+            i_33557918 = res_469762389;
+            result_33557911[chckIndx(i_33557918, 0, (result_33557911).length - 1)] = s_33557908[chckIndx(addInt(i_33557918, first_33557912), 0, (s_33557908).length - 1)];
+            res_469762389 = addInt(res_469762389, 1);
+          }
+      } while (false);
+    } while (false);
+
+  return result_33557911;
+
+}
+
+function substr_33557919(s_33557920, first_33557921) {
+  var result_33557922 = [];
+
+    result_33557922 = nimCopy(null, substr_33557907(s_33557920, first_33557921, (s_33557920).length - 1), NTI33554439);
+
+  return result_33557922;
+
+}
+
+function fill_654312891(a_654312893, value_654312894) {
+    var xHEX60gensym166_654312900 = 0;
+    Label1: do {
+        Label2: while (true) {
+        if (!(xHEX60gensym166_654312900 <= (a_654312893).length - 1)) break Label2;
+          a_654312893[chckIndx(xHEX60gensym166_654312900, 0, (a_654312893).length - 1)] = value_654312894;
+          xHEX60gensym166_654312900 = addInt(xHEX60gensym166_654312900, 1);
+        }
+    } while (false);
+
+  
+}
+
+function nsuInitSkipTable(a_654312888, sub_654312889) {
+    var m_654312890 = (sub_654312889).length;
+    fill_654312891(a_654312888, m_654312890);
+    Label1: do {
+      var i_654312909 = 0;
+      var colontmp__469762392 = 0;
+      colontmp__469762392 = subInt(m_654312890, 1);
+      var i_469762393 = 0;
+      Label2: do {
+          Label3: while (true) {
+          if (!(i_469762393 < colontmp__469762392)) break Label3;
+            i_654312909 = i_469762393;
+            a_654312888[chckIndx(sub_654312889[chckIndx(i_654312909, 0, (sub_654312889).length - 1)], 0, (a_654312888).length - 1)] = subInt(subInt(m_654312890, 1), i_654312909);
+            i_469762393 = addInt(i_469762393, 1);
+          }
+      } while (false);
+    } while (false);
+
+  
+}
+
+function nsuFindStrA(a_654312929, s_654312930, sub_654312931, start_654312932, last_654312933) {
+    var Temporary1;
+
+  var result_654312934 = 0;
+
+  BeforeRet: do {
+    if ((last_654312933 == 0)) {
+    Temporary1 = (s_654312930).length - 1;
+    }
+    else {
+    Temporary1 = last_654312933;
+    }
+    
+    var last_654312935 = Temporary1;
+    var subLast_654312936 = subInt((sub_654312931).length, 1);
+    if ((subLast_654312936 == -1)) {
+    result_654312934 = start_654312932;
+    break BeforeRet;
+    }
+    
+    var skip_654312937 = start_654312932;
+    Label2: do {
+        Label3: while (true) {
+        if (!(subLast_654312936 <= subInt(last_654312935, skip_654312937))) break Label3;
+          var i_654312938 = subLast_654312936;
+          Label4: do {
+              Label5: while (true) {
+              if (!(s_654312930[chckIndx(addInt(skip_654312937, i_654312938), 0, (s_654312930).length - 1)] == sub_654312931[chckIndx(i_654312938, 0, (sub_654312931).length - 1)])) break Label5;
+                if ((i_654312938 == 0)) {
+                result_654312934 = skip_654312937;
+                break BeforeRet;
+                }
+                
+                i_654312938 = subInt(i_654312938, 1);
+              }
+          } while (false);
+          skip_654312937 = addInt(skip_654312937, a_654312929[chckIndx(s_654312930[chckIndx(addInt(skip_654312937, subLast_654312936), 0, (s_654312930).length - 1)], 0, (a_654312929).length - 1)]);
+        }
+    } while (false);
+    result_654312934 = -1;
+    break BeforeRet;
+  } while (false);
+
+  return result_654312934;
+
+}
+
+function nsuReplaceStr(s_654313120, sub_654313121, by_654313122) {
+  var result_654313123 = [];
+
+    result_654313123 = nimCopy(null, [], NTI33554439);
+    var subLen_654313124 = (sub_654313121).length;
+    if ((subLen_654313124 == 0)) {
+    result_654313123 = nimCopy(null, s_654313120, NTI33554439);
+    }
+    else {
+    if ((subLen_654313124 == 1)) {
+    var c_654313125 = sub_654313121[chckIndx(0, 0, (sub_654313121).length - 1)];
+    var last_654313126 = (s_654313120).length - 1;
+    var i_654313127 = 0;
+    Label1: do {
+        Label2: while (true) {
+        if (!true) break Label2;
+          var j_654313128 = nsuFindChar(s_654313120, c_654313125, chckRange(i_654313127, 0, 2147483647), last_654313126);
+          if ((j_654313128 < 0)) {
+          break Label1;
+          }
+          
+          result_654313123.push.apply(result_654313123, substr_33557907(s_654313120, i_654313127, subInt(j_654313128, 1)));;
+          result_654313123.push.apply(result_654313123, by_654313122);;
+          i_654313127 = addInt(j_654313128, subLen_654313124);
+        }
+    } while (false);
+    result_654313123.push.apply(result_654313123, substr_33557919(s_654313120, i_654313127));;
+    }
+    else {
+      var a_654313129 = [new Int32Array(256)];
+      nsuInitSkipTable(a_654313129[0], sub_654313121);
+      var last_654313130 = (s_654313120).length - 1;
+      var i_654313131 = 0;
+      Label3: do {
+          Label4: while (true) {
+          if (!true) break Label4;
+            var j_654313132 = nsuFindStrA(a_654313129[0], s_654313120, sub_654313121, chckRange(i_654313131, 0, 2147483647), last_654313130);
+            if ((j_654313132 < 0)) {
+            break Label3;
+            }
+            
+            result_654313123.push.apply(result_654313123, substr_33557907(s_654313120, i_654313131, subInt(j_654313132, 1)));;
+            result_654313123.push.apply(result_654313123, by_654313122);;
+            i_654313131 = addInt(j_654313132, subLen_654313124);
+          }
+      } while (false);
+      result_654313123.push.apply(result_654313123, substr_33557919(s_654313120, i_654313131));;
+    }
+    }
+
+  return result_654313123;
+
+}
+
+function nsuToLowerAsciiChar(c_654311492) {
+  var result_654311493 = 0;
+
+    if ((ConstSet2[c_654311492] != undefined)) {
+    result_654311493 = (c_654311492 ^ 32);
+    }
+    else {
+      result_654311493 = c_654311492;
+    }
+    
+
+  return result_654311493;
+
+}
+
+function fuzzyMatch_620757008(pattern_620757009, str_620757010) {
+              var Temporary4;
+              var Temporary5;
+                var Temporary6;
+      var Temporary7;
+        var Temporary8;
+
+  var result_620757013 = {Field0: 0, Field1: false};
+
+    var scoreState_620757014 = -100;
+    var headerMatched_620757015 = false;
+    var unmatchedLeadingCharCount_620757016 = 0;
+    var consecutiveMatchCount_620757017 = 0;
+    var strIndex_620757018 = 0;
+    var patIndex_620757019 = 0;
+    var score_620757020 = 0;
+    Label1: do {
+        Label2: while (true) {
+        if (!((strIndex_620757018 < ((str_620757010) == null ? 0 : (str_620757010).length)) && (patIndex_620757019 < ((pattern_620757009) == null ? 0 : (pattern_620757009).length)))) break Label2;
+          Label3: do {
+            var patternChar_620757023 = nsuToLowerAsciiChar(pattern_620757009.charCodeAt(chckIndx(patIndex_620757019, 0, (pattern_620757009).length - 1)));
+            var strChar_620757024 = nsuToLowerAsciiChar(str_620757010.charCodeAt(chckIndx(strIndex_620757018, 0, (str_620757010).length - 1)));
+            if ((ConstSet3[patternChar_620757023] != undefined)) {
+            patIndex_620757019 = addInt(patIndex_620757019, 1);
+            break Label3;
+            }
+            
+            if ((ConstSet4[strChar_620757024] != undefined)) {
+            strIndex_620757018 = addInt(strIndex_620757018, 1);
+            break Label3;
+            }
+            
+            if ((!(headerMatched_620757015) && (strChar_620757024 == 58))) {
+            headerMatched_620757015 = true;
+            scoreState_620757014 = -100;
+            score_620757020 = ((Math.floor((0.5 * score_620757020))) | 0);
+            patIndex_620757019 = 0;
+            strIndex_620757018 = addInt(strIndex_620757018, 1);
+            break Label3;
+            }
+            
+            if ((strChar_620757024 == patternChar_620757023)) {
+            switch (scoreState_620757014) {
+            case -100:
+            case 20:
+              scoreState_620757014 = 10;
+              break;
+            case 0:
+              scoreState_620757014 = 5;
+              score_620757020 = addInt(score_620757020, scoreState_620757014);
+              break;
+            case 10:
+            case 5:
+              consecutiveMatchCount_620757017 = addInt(consecutiveMatchCount_620757017, 1);
+              scoreState_620757014 = 5;
+              score_620757020 = addInt(score_620757020, mulInt(5, consecutiveMatchCount_620757017));
+              if ((scoreState_620757014 == 10)) {
+              score_620757020 = addInt(score_620757020, 10);
+              }
+              
+              var onBoundary_620757076 = (patIndex_620757019 == ((pattern_620757009) == null ? -1 : (pattern_620757009).length - 1));
+              if ((!(onBoundary_620757076) && (strIndex_620757018 < ((str_620757010) == null ? -1 : (str_620757010).length - 1)))) {
+              var nextPatternChar_620757077 = nsuToLowerAsciiChar(pattern_620757009.charCodeAt(chckIndx(addInt(patIndex_620757019, 1), 0, (pattern_620757009).length - 1)));
+              var nextStrChar_620757078 = nsuToLowerAsciiChar(str_620757010.charCodeAt(chckIndx(addInt(strIndex_620757018, 1), 0, (str_620757010).length - 1)));
+              if (!!((ConstSet5[nextStrChar_620757078] != undefined))) Temporary4 = false; else {                Temporary4 = !((nextStrChar_620757078 == nextPatternChar_620757077));              }              onBoundary_620757076 = Temporary4;
+              }
+              
+              if (onBoundary_620757076) {
+              scoreState_620757014 = 20;
+              score_620757020 = addInt(score_620757020, scoreState_620757014);
+              }
+              
+              break;
+            case -1:
+            case -3:
+              if (!((ConstSet6[str_620757010.charCodeAt(chckIndx(subInt(strIndex_620757018, 1), 0, (str_620757010).length - 1))] != undefined))) Temporary5 = true; else {                if (!(ConstSet7[str_620757010.charCodeAt(chckIndx(subInt(strIndex_620757018, 1), 0, (str_620757010).length - 1))] != undefined)) Temporary6 = false; else {                  Temporary6 = (ConstSet8[str_620757010.charCodeAt(chckIndx(strIndex_620757018, 0, (str_620757010).length - 1))] != undefined);                }                Temporary5 = Temporary6;              }              var isLeadingChar_620757102 = Temporary5;
+              if (isLeadingChar_620757102) {
+              scoreState_620757014 = 10;
+              }
+              else {
+                scoreState_620757014 = 0;
+                score_620757020 = addInt(score_620757020, scoreState_620757014);
+              }
+              
+              break;
+            }
+            patIndex_620757019 = addInt(patIndex_620757019, 1);
+            }
+            else {
+              switch (scoreState_620757014) {
+              case -100:
+                scoreState_620757014 = -3;
+                score_620757020 = addInt(score_620757020, scoreState_620757014);
+                break;
+              case 5:
+                scoreState_620757014 = -1;
+                score_620757020 = addInt(score_620757020, scoreState_620757014);
+                consecutiveMatchCount_620757017 = 0;
+                break;
+              case -3:
+                if ((unmatchedLeadingCharCount_620757016 < 3)) {
+                scoreState_620757014 = -3;
+                score_620757020 = addInt(score_620757020, scoreState_620757014);
+                }
+                
+                unmatchedLeadingCharCount_620757016 = addInt(unmatchedLeadingCharCount_620757016, 1);
+                break;
+              default: 
+                scoreState_620757014 = -1;
+                score_620757020 = addInt(score_620757020, scoreState_620757014);
+                break;
+              }
+            }
+            
+            strIndex_620757018 = addInt(strIndex_620757018, 1);
+          } while (false);
+        }
+    } while (false);
+      if (!(patIndex_620757019 == ((pattern_620757009) == null ? 0 : (pattern_620757009).length))) Temporary7 = false; else {        if ((strIndex_620757018 == ((str_620757010) == null ? 0 : (str_620757010).length))) Temporary8 = true; else {          Temporary8 = !((ConstSet9[str_620757010.charCodeAt(chckIndx(strIndex_620757018, 0, (str_620757010).length - 1))] != undefined));        }        Temporary7 = Temporary8;      }    if (Temporary7) {
+    score_620757020 = addInt(score_620757020, 10);
+    }
+    
+    var colontmp__469762401 = nimMax(0, score_620757020);
+    var colontmp__469762402 = (0 < score_620757020);
+    result_620757013 = nimCopy(result_620757013, {Field0: colontmp__469762401, Field1: colontmp__469762402}, NTI620757006);
+
+  return result_620757013;
+
+}
+
+function raiseDivByZero() {
+    raiseException({message: makeNimstrLit("division by zero"), parent: null, m_type: NTI33555121, name: null, trace: [], up: null}, "DivByZeroDefect");
+
+  
+}
+
+function parseSaturatedNatural_671088974(s_671088975, b_671088976, b_671088976_Idx, start_671088977) {
+      var Temporary1;
+          var Temporary4;
+
+  var result_671088978 = 0;
+
+    var i_671088979 = start_671088977;
+    if (((i_671088979 < (s_671088975).length) && (s_671088975[chckIndx(i_671088979, 0, (s_671088975).length - 1)] == 43))) {
+    i_671088979 = addInt(i_671088979, 1);
+    }
+    
+      if (!(i_671088979 < (s_671088975).length)) Temporary1 = false; else {        Temporary1 = (ConstSet14[s_671088975[chckIndx(i_671088979, 0, (s_671088975).length - 1)]] != undefined);      }    if (Temporary1) {
+    b_671088976[b_671088976_Idx] = 0;
+    Label2: do {
+        Label3: while (true) {
+          if (!(i_671088979 < (s_671088975).length)) Temporary4 = false; else {            Temporary4 = (ConstSet15[s_671088975[chckIndx(i_671088979, 0, (s_671088975).length - 1)]] != undefined);          }        if (!Temporary4) break Label3;
+          var c_671088998 = subInt(s_671088975[chckIndx(i_671088979, 0, (s_671088975).length - 1)], 48);
+          if ((b_671088976[b_671088976_Idx] <= divInt(subInt(2147483647, c_671088998), 10))) {
+          b_671088976[b_671088976_Idx] = addInt(mulInt(b_671088976[b_671088976_Idx], 10), c_671088998);
+          }
+          else {
+            b_671088976[b_671088976_Idx] = 2147483647;
+          }
+          
+          i_671088979 = addInt(i_671088979, 1);
+          Label5: do {
+              Label6: while (true) {
+              if (!((i_671088979 < (s_671088975).length) && (s_671088975[chckIndx(i_671088979, 0, (s_671088975).length - 1)] == 95))) break Label6;
+                i_671088979 = addInt(i_671088979, 1);
+              }
+          } while (false);
+        }
+    } while (false);
+    result_671088978 = subInt(i_671088979, start_671088977);
+    }
+    
+
+  return result_671088978;
+
+}
+
+function HEX5BHEX5D_956304538(s_956304541, x_956304542) {
+  var result_956304543 = [];
+
+    var a_956304545 = x_956304542.a;
+    var L_956304547 = addInt(subInt(subInt((s_956304541).length, x_956304542.b), a_956304545), 1);
+    result_956304543 = nimCopy(null, mnewString(chckRange(L_956304547, 0, 2147483647)), NTI33554439);
+    Label1: do {
+      var i_956304552 = 0;
+      var i_469762406 = 0;
+      Label2: do {
+          Label3: while (true) {
+          if (!(i_469762406 < L_956304547)) break Label3;
+            i_956304552 = i_469762406;
+            result_956304543[chckIndx(i_956304552, 0, (result_956304543).length - 1)] = s_956304541[chckIndx(addInt(i_956304552, a_956304545), 0, (s_956304541).length - 1)];
+            i_469762406 = addInt(i_469762406, 1);
+          }
+      } while (false);
+    } while (false);
+
+  return result_956304543;
+
+}
+
+function HEX2EHEX2E_889192528(a_889192531, b_889192532) {
+  var result_889192535 = ({a: 0, b: 0});
+
+    result_889192535 = nimCopy(result_889192535, {a: a_889192531, b: b_889192532}, NTI889192527);
+
+  return result_889192535;
+
+}
+
+function parseStandardFormatSpecifier_1358954554(s_1358954555, start_1358954556, ignoreUnknownSuffix_1358954557) {
+      var Temporary1;
+      var Temporary2;
+      var Temporary3;
+
+  var result_1358954558 = ({fill: 0, align: 0, sign: 0, alternateForm: false, padWithZero: false, minimumWidth: 0, precision: 0, typ: 0, endPosition: 0});
+
+    result_1358954558.fill = 32;
+    result_1358954558.align = 0;
+    result_1358954558.sign = 45;
+    var i_1358954560 = start_1358954556;
+    if (((addInt(i_1358954560, 1) < (s_1358954555).length) && (ConstSet10[s_1358954555[chckIndx(addInt(i_1358954560, 1), 0, (s_1358954555).length - 1)]] != undefined))) {
+    result_1358954558.fill = s_1358954555[chckIndx(i_1358954560, 0, (s_1358954555).length - 1)];
+    result_1358954558.align = s_1358954555[chckIndx(addInt(i_1358954560, 1), 0, (s_1358954555).length - 1)];
+    i_1358954560 = addInt(i_1358954560, 2);
+    }
+    else {
+    if (((i_1358954560 < (s_1358954555).length) && (ConstSet11[s_1358954555[chckIndx(i_1358954560, 0, (s_1358954555).length - 1)]] != undefined))) {
+    result_1358954558.align = s_1358954555[chckIndx(i_1358954560, 0, (s_1358954555).length - 1)];
+    i_1358954560 = addInt(i_1358954560, 1);
+    }
+    }
+    if (((i_1358954560 < (s_1358954555).length) && (ConstSet12[s_1358954555[chckIndx(i_1358954560, 0, (s_1358954555).length - 1)]] != undefined))) {
+    result_1358954558.sign = s_1358954555[chckIndx(i_1358954560, 0, (s_1358954555).length - 1)];
+    i_1358954560 = addInt(i_1358954560, 1);
+    }
+    
+    if (((i_1358954560 < (s_1358954555).length) && (s_1358954555[chckIndx(i_1358954560, 0, (s_1358954555).length - 1)] == 35))) {
+    result_1358954558.alternateForm = true;
+    i_1358954560 = addInt(i_1358954560, 1);
+    }
+    
+      if (!((addInt(i_1358954560, 1) < (s_1358954555).length) && (s_1358954555[chckIndx(i_1358954560, 0, (s_1358954555).length - 1)] == 48))) Temporary1 = false; else {        Temporary1 = (ConstSet13[s_1358954555[chckIndx(addInt(i_1358954560, 1), 0, (s_1358954555).length - 1)]] != undefined);      }    if (Temporary1) {
+    result_1358954558.padWithZero = true;
+    i_1358954560 = addInt(i_1358954560, 1);
+    }
+    
+    var parsedLength_1358954597 = parseSaturatedNatural_671088974(s_1358954555, result_1358954558, "minimumWidth", i_1358954560);
+    i_1358954560 = addInt(i_1358954560, parsedLength_1358954597);
+    if (((i_1358954560 < (s_1358954555).length) && (s_1358954555[chckIndx(i_1358954560, 0, (s_1358954555).length - 1)] == 46))) {
+    i_1358954560 = addInt(i_1358954560, 1);
+    var parsedLengthB_1358954606 = parseSaturatedNatural_671088974(s_1358954555, result_1358954558, "precision", i_1358954560);
+    i_1358954560 = addInt(i_1358954560, parsedLengthB_1358954606);
+    }
+    else {
+      result_1358954558.precision = -1;
+    }
+    
+      if (!(i_1358954560 < (s_1358954555).length)) Temporary2 = false; else {        Temporary2 = (ConstSet16[s_1358954555[chckIndx(i_1358954560, 0, (s_1358954555).length - 1)]] != undefined);      }    if (Temporary2) {
+    result_1358954558.typ = s_1358954555[chckIndx(i_1358954560, 0, (s_1358954555).length - 1)];
+    i_1358954560 = addInt(i_1358954560, 1);
+    }
+    
+    result_1358954558.endPosition = i_1358954560;
+      if (!!((i_1358954560 == (s_1358954555).length))) Temporary3 = false; else {        Temporary3 = !(ignoreUnknownSuffix_1358954557);      }    if (Temporary3) {
+    raiseException({message: (makeNimstrLit("invalid format string, cannot parse: ") || []).concat(HEX5BHEX5D_956304538(s_1358954555, HEX2EHEX2E_889192528(i_1358954560, 1)) || []), parent: null, m_type: NTI33555125, name: null, trace: [], up: null}, "ValueError");
+    }
+    
+
+  return result_1358954558;
+
+}
+
+function nucruneLen(s_956301322) {
+  var result_956301323 = 0;
+
+    result_956301323 = 0;
+    var i_956301324 = 0;
+    Label1: do {
+        Label2: while (true) {
+        if (!(i_956301324 < (s_956301322).length)) break Label2;
+          if ((s_956301322[chckIndx(i_956301324, 0, (s_956301322).length - 1)] <= 127)) {
+          i_956301324 = addInt(i_956301324, 1);
+          }
+          else {
+          if (((s_956301322[chckIndx(i_956301324, 0, (s_956301322).length - 1)] >>> 5) == 6)) {
+          i_956301324 = addInt(i_956301324, 2);
+          }
+          else {
+          if (((s_956301322[chckIndx(i_956301324, 0, (s_956301322).length - 1)] >>> 4) == 14)) {
+          i_956301324 = addInt(i_956301324, 3);
+          }
+          else {
+          if (((s_956301322[chckIndx(i_956301324, 0, (s_956301322).length - 1)] >>> 3) == 30)) {
+          i_956301324 = addInt(i_956301324, 4);
+          }
+          else {
+          if (((s_956301322[chckIndx(i_956301324, 0, (s_956301322).length - 1)] >>> 2) == 62)) {
+          i_956301324 = addInt(i_956301324, 5);
+          }
+          else {
+          if (((s_956301322[chckIndx(i_956301324, 0, (s_956301322).length - 1)] >>> 1) == 126)) {
+          i_956301324 = addInt(i_956301324, 6);
+          }
+          else {
+          i_956301324 = addInt(i_956301324, 1);
+          }
+          }}}}}
+          result_956301323 = addInt(result_956301323, 1);
+        }
+    } while (false);
+
+  return result_956301323;
+
+}
+
+function runeLenAt_956301377(s_956301378, i_956301379) {
+  var result_956301380 = 0;
+
+    if ((s_956301378[chckIndx(i_956301379, 0, (s_956301378).length - 1)] <= 127)) {
+    result_956301380 = 1;
+    }
+    else {
+    if (((s_956301378[chckIndx(i_956301379, 0, (s_956301378).length - 1)] >>> 5) == 6)) {
+    result_956301380 = 2;
+    }
+    else {
+    if (((s_956301378[chckIndx(i_956301379, 0, (s_956301378).length - 1)] >>> 4) == 14)) {
+    result_956301380 = 3;
+    }
+    else {
+    if (((s_956301378[chckIndx(i_956301379, 0, (s_956301378).length - 1)] >>> 3) == 30)) {
+    result_956301380 = 4;
+    }
+    else {
+    if (((s_956301378[chckIndx(i_956301379, 0, (s_956301378).length - 1)] >>> 2) == 62)) {
+    result_956301380 = 5;
+    }
+    else {
+    if (((s_956301378[chckIndx(i_956301379, 0, (s_956301378).length - 1)] >>> 1) == 126)) {
+    result_956301380 = 6;
+    }
+    else {
+      result_956301380 = 1;
+    }
+    }}}}}
+
+  return result_956301380;
+
+}
+
+function runeOffset_956301949(s_956301950, pos_956301951, start_956301952) {
+  var result_956301953 = 0;
+
+  BeforeRet: do {
+    var i_956301954 = 0;
+    var o_956301955 = start_956301952;
+    Label1: do {
+        Label2: while (true) {
+        if (!(i_956301954 < pos_956301951)) break Label2;
+          o_956301955 = addInt(o_956301955, chckRange(runeLenAt_956301377(s_956301950, o_956301955), 0, 2147483647));
+          if (((s_956301950).length <= o_956301955)) {
+          result_956301953 = -1;
+          break BeforeRet;
+          }
+          
+          i_956301954 = addInt(i_956301954, 1);
+        }
+    } while (false);
+    result_956301953 = o_956301955;
+    break BeforeRet;
+  } while (false);
+
+  return result_956301953;
+
+}
+
+function validateUtf8_956301589(s_956301590) {
+            var Temporary3;
+            var Temporary4;
+            var Temporary5;
+            var Temporary6;
+            var Temporary7;
+            var Temporary8;
+
+  var result_956301591 = 0;
+
+  BeforeRet: do {
+    var i_956301592 = 0;
+    var L_956301593 = (s_956301590).length;
+    Label1: do {
+        Label2: while (true) {
+        if (!(i_956301592 < L_956301593)) break Label2;
+          if ((s_956301590[chckIndx(i_956301592, 0, (s_956301590).length - 1)] <= 127)) {
+          i_956301592 = addInt(i_956301592, 1);
+          }
+          else {
+          if (((s_956301590[chckIndx(i_956301592, 0, (s_956301590).length - 1)] >>> 5) == 6)) {
+          if ((s_956301590[chckIndx(i_956301592, 0, (s_956301590).length - 1)] < 194)) {
+          result_956301591 = i_956301592;
+          break BeforeRet;
+          }
+          
+            if (!(addInt(i_956301592, 1) < L_956301593)) Temporary3 = false; else {              Temporary3 = ((s_956301590[chckIndx(addInt(i_956301592, 1), 0, (s_956301590).length - 1)] >>> 6) == 2);            }          if (Temporary3) {
+          i_956301592 = addInt(i_956301592, 2);
+          }
+          else {
+            result_956301591 = i_956301592;
+            break BeforeRet;
+          }
+          
+          }
+          else {
+          if (((s_956301590[chckIndx(i_956301592, 0, (s_956301590).length - 1)] >>> 4) == 14)) {
+            if (!(addInt(i_956301592, 2) < L_956301593)) Temporary5 = false; else {              Temporary5 = ((s_956301590[chckIndx(addInt(i_956301592, 1), 0, (s_956301590).length - 1)] >>> 6) == 2);            }            if (!Temporary5) Temporary4 = false; else {              Temporary4 = ((s_956301590[chckIndx(addInt(i_956301592, 2), 0, (s_956301590).length - 1)] >>> 6) == 2);            }          if (Temporary4) {
+          i_956301592 = addInt(i_956301592, 3);
+          }
+          else {
+            result_956301591 = i_956301592;
+            break BeforeRet;
+          }
+          
+          }
+          else {
+          if (((s_956301590[chckIndx(i_956301592, 0, (s_956301590).length - 1)] >>> 3) == 30)) {
+            if (!(addInt(i_956301592, 3) < L_956301593)) Temporary8 = false; else {              Temporary8 = ((s_956301590[chckIndx(addInt(i_956301592, 1), 0, (s_956301590).length - 1)] >>> 6) == 2);            }            if (!Temporary8) Temporary7 = false; else {              Temporary7 = ((s_956301590[chckIndx(addInt(i_956301592, 2), 0, (s_956301590).length - 1)] >>> 6) == 2);            }            if (!Temporary7) Temporary6 = false; else {              Temporary6 = ((s_956301590[chckIndx(addInt(i_956301592, 3), 0, (s_956301590).length - 1)] >>> 6) == 2);            }          if (Temporary6) {
+          i_956301592 = addInt(i_956301592, 4);
+          }
+          else {
+            result_956301591 = i_956301592;
+            break BeforeRet;
+          }
+          
+          }
+          else {
+            result_956301591 = i_956301592;
+            break BeforeRet;
+          }
+          }}}
+        }
+    } while (false);
+    result_956301591 = -1;
+    break BeforeRet;
+  } while (false);
+
+  return result_956301591;
+
+}
+
+function nsuRepeatChar(c_654312443, count_654312444) {
+  var result_654312445 = [];
+
+    result_654312445 = nimCopy(null, mnewString(count_654312444), NTI33554439);
+    Label1: do {
+      var i_654312450 = 0;
+      var colontmp__469762412 = 0;
+      colontmp__469762412 = subInt(count_654312444, 1);
+      var res_469762413 = 0;
+      Label2: do {
+          Label3: while (true) {
+          if (!(res_469762413 <= colontmp__469762412)) break Label3;
+            i_654312450 = res_469762413;
+            result_654312445[chckIndx(i_654312450, 0, (result_654312445).length - 1)] = c_654312443;
+            res_469762413 = addInt(res_469762413, 1);
+          }
+      } while (false);
+    } while (false);
+
+  return result_654312445;
+
+}
+
+function alignString_1358954516(s_1358954517, minimumWidth_1358954518, align_1358954519, fill_1358954520) {
+      var Temporary1;
+
+  var result_1358954521 = [];
+
+    if ((minimumWidth_1358954518 == 0)) {
+    result_1358954521 = nimCopy(null, s_1358954517, NTI33554439);
+    }
+    else {
+      if ((validateUtf8_956301589(s_1358954517) == -1)) {
+      Temporary1 = nucruneLen(s_1358954517);
+      }
+      else {
+      Temporary1 = (s_1358954517).length;
+      }
+      
+      var sRuneLen_1358954522 = Temporary1;
+      var toFill_1358954523 = subInt(minimumWidth_1358954518, sRuneLen_1358954522);
+      if ((toFill_1358954523 <= 0)) {
+      result_1358954521 = nimCopy(null, s_1358954517, NTI33554439);
+      }
+      else {
+      if (((align_1358954519 == 60) || (align_1358954519 == 0))) {
+      result_1358954521 = nimCopy(null, (s_1358954517 || []).concat(nsuRepeatChar(fill_1358954520, chckRange(toFill_1358954523, 0, 2147483647)) || []), NTI33554439);
+      }
+      else {
+      if ((align_1358954519 == 94)) {
+      var half_1358954524 = divInt(toFill_1358954523, 2);
+      result_1358954521 = nimCopy(null, (nsuRepeatChar(fill_1358954520, chckRange(half_1358954524, 0, 2147483647)) || []).concat(s_1358954517 || [],nsuRepeatChar(fill_1358954520, chckRange(subInt(toFill_1358954523, half_1358954524), 0, 2147483647)) || []), NTI33554439);
+      }
+      else {
+        result_1358954521 = nimCopy(null, (nsuRepeatChar(fill_1358954520, chckRange(toFill_1358954523, 0, 2147483647)) || []).concat(s_1358954517 || []), NTI33554439);
+      }
+      }}
+    }
+    
+
+  return result_1358954521;
+
+}
+
+function formatValue_1358954658(result_1358954659, result_1358954659_Idx, value_1358954660, specifier_1358954661) {
+    var spec_1358954662 = parseStandardFormatSpecifier_1358954554(specifier_1358954661, 0, false);
+    var value_1358954663 = nimCopy(null, value_1358954660, NTI33554439);
+    switch (spec_1358954662.typ) {
+    case 115:
+    case 0:
+      break;
+    default: 
+      raiseException({message: (makeNimstrLit("invalid type in format string for string, expected \'s\', but got ") || []).concat([spec_1358954662.typ]), parent: null, m_type: NTI33555125, name: null, trace: [], up: null}, "ValueError");
+      break;
+    }
+    if (!((spec_1358954662.precision == -1))) {
+    if ((spec_1358954662.precision < nucruneLen(value_1358954663))) {
+    (value_1358954663.length = chckRange(runeOffset_956301949(value_1358954663, chckRange(spec_1358954662.precision, 0, 2147483647), 0), 0, 2147483647));
+    }
+    
+    }
+    
+    result_1358954659[result_1358954659_Idx].push.apply(result_1358954659[result_1358954659_Idx], alignString_1358954516(value_1358954663, spec_1358954662.minimumWidth, spec_1358954662.align, spec_1358954662.fill));;
+
+  
+}
+
+function sysFatal_218103842(message_218103845) {
+    raiseException({message: nimCopy(null, message_218103845, NTI33554439), m_type: NTI33555124, parent: null, name: null, trace: [], up: null}, "AssertionDefect");
+
+  
+}
+
+function raiseAssert_218103840(msg_218103841) {
+    sysFatal_218103842(msg_218103841);
+
+  
+}
+
+function failedAssertImpl_218103864(msg_218103865) {
+    raiseAssert_218103840(msg_218103865);
+
+  
+}
+
+function mkDigit_1358954501(v_1358954502, typ_1358954503) {
+      var Temporary1;
+
+  var result_1358954504 = [];
+
+    if (!((v_1358954502 < 26))) {
+    failedAssertImpl_218103864(makeNimstrLit("strformat.nim(320, 9) `v < 26` "));
+    }
+    
+    if ((v_1358954502 < 10)) {
+    result_1358954504 = nimCopy(null, nimCharToStr(chckRange(addInt(48, v_1358954502), 0, 255)), NTI33554439);
+    }
+    else {
+      if ((typ_1358954503 == 120)) {
+      Temporary1 = 97;
+      }
+      else {
+      Temporary1 = 65;
+      }
+      
+      result_1358954504 = nimCopy(null, nimCharToStr(chckRange(subInt(addInt(Temporary1, v_1358954502), 10), 0, 255)), NTI33554439);
+    }
+    
+
+  return result_1358954504;
+
+}
+
+function formatInt_469762189(n_469762191, radix_469762192, spec_469762193) {
+    var Temporary1;
+    var Temporary8;
+
+  var result_469762194 = [];
+
+    var n_469762197 = n_469762191;
+    var negative_469762198 = (n_469762197 < 0);
+    if (negative_469762198) {
+    Temporary1 = ((~(n_469762197) + 1) );
+    }
+    else {
+    Temporary1 = n_469762197;
+    }
+    
+    var v_469762199 = Temporary1;
+    var xx_469762200 = [];
+    if (spec_469762193.alternateForm) {
+    switch (spec_469762193.typ) {
+    case 88:
+      xx_469762200 = nimCopy(null, makeNimstrLit("0x"), NTI33554439);
+      break;
+    case 120:
+      xx_469762200 = nimCopy(null, makeNimstrLit("0x"), NTI33554439);
+      break;
+    case 98:
+      xx_469762200 = nimCopy(null, makeNimstrLit("0b"), NTI33554439);
+      break;
+    case 111:
+      xx_469762200 = nimCopy(null, makeNimstrLit("0o"), NTI33554439);
+      break;
+    default: 
+      break;
+    }
+    }
+    
+    if ((v_469762199 == 0)) {
+    result_469762194 = nimCopy(null, makeNimstrLit("0"), NTI33554439);
+    }
+    else {
+      result_469762194 = nimCopy(null, [], NTI33554439);
+      Label2: do {
+          Label3: while (true) {
+          if (!(0 < v_469762199)) break Label3;
+            var d_469762201 = (v_469762199 % radix_469762192);
+            v_469762199 = Math.trunc(((v_469762199 / radix_469762192) ));
+            result_469762194.push.apply(result_469762194, mkDigit_1358954501(chckRange(d_469762201, -2147483648, 2147483647), spec_469762193.typ));;
+          }
+      } while (false);
+      Label4: do {
+        var idx_469762206 = 0;
+        var colontmp__469762417 = 0;
+        colontmp__469762417 = divInt((result_469762194).length, 2);
+        var i_469762418 = 0;
+        Label5: do {
+            Label6: while (true) {
+            if (!(i_469762418 < colontmp__469762417)) break Label6;
+              idx_469762206 = i_469762418;
+              var Temporary7 = result_469762194[chckIndx(idx_469762206, 0, (result_469762194).length - 1)]; result_469762194[chckIndx(idx_469762206, 0, (result_469762194).length - 1)] = result_469762194[chckIndx(subInt(subInt((result_469762194).length, idx_469762206), 1), 0, (result_469762194).length - 1)]; result_469762194[chckIndx(subInt(subInt((result_469762194).length, idx_469762206), 1), 0, (result_469762194).length - 1)] = Temporary7;              i_469762418 = addInt(i_469762418, 1);
+            }
+        } while (false);
+      } while (false);
+    }
+    
+    if (spec_469762193.padWithZero) {
+    if (negative_469762198) Temporary8 = true; else {      Temporary8 = !((spec_469762193.sign == 45));    }    var sign_469762211 = Temporary8;
+    var toFill_469762215 = subInt(subInt(subInt(spec_469762193.minimumWidth, (result_469762194).length), (xx_469762200).length), (sign_469762211 ? 1 : 0));
+    if ((0 < toFill_469762215)) {
+    result_469762194 = nimCopy(null, (nsuRepeatChar(48, chckRange(toFill_469762215, 0, 2147483647)) || []).concat(result_469762194 || []), NTI33554439);
+    }
+    
+    }
+    
+    if (negative_469762198) {
+    result_469762194 = nimCopy(null, (makeNimstrLit("-") || []).concat(xx_469762200 || [],result_469762194 || []), NTI33554439);
+    }
+    else {
+    if (!((spec_469762193.sign == 45))) {
+    result_469762194 = nimCopy(null, [spec_469762193.sign].concat(xx_469762200 || [],result_469762194 || []), NTI33554439);
+    }
+    else {
+      result_469762194 = nimCopy(null, (xx_469762200 || []).concat(result_469762194 || []), NTI33554439);
+    }
+    }
+    if ((spec_469762193.align == 60)) {
+    Label9: do {
+      var i_469762220 = 0;
+      var colontmp__469762421 = 0;
+      colontmp__469762421 = (result_469762194).length;
+      var i_469762422 = colontmp__469762421;
+      Label10: do {
+          Label11: while (true) {
+          if (!(i_469762422 < spec_469762193.minimumWidth)) break Label11;
+            i_469762220 = i_469762422;
+            addChar(result_469762194, spec_469762193.fill);;
+            i_469762422 = addInt(i_469762422, 1);
+          }
+      } while (false);
+    } while (false);
+    }
+    else {
+      var toFill_469762221 = subInt(spec_469762193.minimumWidth, (result_469762194).length);
+      if ((spec_469762193.align == 94)) {
+      var half_469762222 = divInt(toFill_469762221, 2);
+      result_469762194 = nimCopy(null, (nsuRepeatChar(spec_469762193.fill, chckRange(half_469762222, 0, 2147483647)) || []).concat(result_469762194 || [],nsuRepeatChar(spec_469762193.fill, chckRange(subInt(toFill_469762221, half_469762222), 0, 2147483647)) || []), NTI33554439);
+      }
+      else {
+        if ((0 < toFill_469762221)) {
+        result_469762194 = nimCopy(null, (nsuRepeatChar(spec_469762193.fill, chckRange(toFill_469762221, 0, 2147483647)) || []).concat(result_469762194 || []), NTI33554439);
+        }
+        
+      }
+      
+    }
+    
+
+  return result_469762194;
+
+}
+
+function formatValue_469762181(result_469762183, result_469762183_Idx, value_469762184, specifier_469762185) {
+  BeforeRet: do {
+    if (((specifier_469762185).length == 0)) {
+    result_469762183[result_469762183_Idx].push.apply(result_469762183[result_469762183_Idx], HEX24_335544323(value_469762184));;
+    break BeforeRet;
+    }
+    
+    var spec_469762186 = parseStandardFormatSpecifier_1358954554(specifier_469762185, 0, false);
+    var radix_469762187 = 10;
+    switch (spec_469762186.typ) {
+    case 120:
+    case 88:
+      radix_469762187 = 16;
+      break;
+    case 100:
+    case 0:
+      break;
+    case 98:
+      radix_469762187 = 2;
+      break;
+    case 111:
+      radix_469762187 = 8;
+      break;
+    default: 
+      raiseException({message: (makeNimstrLit("invalid type in format string for number, expected one  of \'x\', \'X\', \'b\', \'d\', \'o\' but got: ") || []).concat([spec_469762186.typ]), parent: null, m_type: NTI33555125, name: null, trace: [], up: null}, "ValueError");
+      break;
+    }
+    result_469762183[result_469762183_Idx].push.apply(result_469762183[result_469762183_Idx], formatInt_469762189(value_469762184, radix_469762187, spec_469762186));;
+  } while (false);
+
+  
+}
+
+function onInput(e_469762073) {
+    
+function HEX3Aanonymous_469762235(a_469762240, b_469762241) {
+      var result_469762246 = 0;
+
+        result_469762246 = subInt(b_469762241.score, a_469762240.score);
+
+      return result_469762246;
+
+    }
+
+  BeforeRet: do {
+    var searchContainer_469762074 = document.getElementById("search-results");
+    var matches_469762075 = [];
+    searchContainer_469762074.innerHTML = "";
+    var input_469762076 = e_469762073.target.value;
+    if ((input_469762076 == "")) {
+    break BeforeRet;
+    }
+    
+    Label1: do {
+      var item_469762098 = ({title: [], slug: [], contentTokens: []});
+      var i_469762361 = 0;
+      var L_469762362 = (searchDB_469762055[0]).length;
+      Label2: do {
+          Label3: while (true) {
+          if (!(i_469762361 < L_469762362)) break Label3;
+            item_469762098 = searchDB_469762055[0][chckIndx(i_469762361, 0, (searchDB_469762055[0]).length - 1)];
+            var title_469762099 = nsuReplaceStr(item_469762098.slug, makeNimstrLit(".html"), []);
+            Label4: do {
+              var token_469762120 = [];
+              var i_469762357 = 0;
+              var L_469762358 = (item_469762098.contentTokens).length;
+              Label5: do {
+                  Label6: while (true) {
+                  if (!(i_469762357 < L_469762358)) break Label6;
+                    token_469762120 = item_469762098.contentTokens[chckIndx(i_469762357, 0, (item_469762098.contentTokens).length - 1)];
+                    var colontmp__469762398 = fuzzyMatch_620757008(input_469762076, toJSStr(token_469762120));
+                    var score_469762121 = colontmp__469762398["Field0"];
+                    var match_469762122 = colontmp__469762398["Field1"];
+                    if (match_469762122) {
+                    var exists_469762123 = false;
+                    Label7: do {
+                      var i_469762165 = 0;
+                      var m_469762166 = ({element: [], slug: [], count: 0, score: 0});
+                      var i_469762353 = 0;
+                      var L_469762354 = (matches_469762075).length;
+                      Label8: do {
+                          Label9: while (true) {
+                          if (!(i_469762353 < L_469762354)) break Label9;
+                            i_469762165 = i_469762353;
+                            m_469762166 = nimCopy(m_469762166, matches_469762075[chckIndx(i_469762353, 0, (matches_469762075).length - 1)], NTI1392508931);
+                            if (eqStrings(m_469762166.slug, item_469762098.slug)) {
+                            exists_469762123 = true;
+                            matches_469762075[chckIndx(i_469762165, 0, (matches_469762075).length - 1)].count = addInt(m_469762166.count, 1);
+                            var fmtRes_469762175 = [mnewString(0)];
+                            fmtRes_469762175[0].push.apply(fmtRes_469762175[0], makeNimstrLit("<a href=\'"));;
+                            formatValue_1358954658(fmtRes_469762175, 0, item_469762098.slug, []);
+                            fmtRes_469762175[0].push.apply(fmtRes_469762175[0], makeNimstrLit("\'>"));;
+                            formatValue_1358954658(fmtRes_469762175, 0, title_469762099, []);
+                            fmtRes_469762175[0].push.apply(fmtRes_469762175[0], makeNimstrLit("("));;
+                            formatValue_469762181(fmtRes_469762175, 0, matches_469762075[chckIndx(i_469762165, 0, (matches_469762075).length - 1)].count, []);
+                            fmtRes_469762175[0].push.apply(fmtRes_469762175[0], makeNimstrLit(" matches)</a>"));;
+                            var webNode_469762223 = nimCopy(null, fmtRes_469762175[0], NTI33554439);
+                            matches_469762075[chckIndx(i_469762165, 0, (matches_469762075).length - 1)].element = nimCopy(null, webNode_469762223, NTI33554439);
+                            }
+                            
+                            i_469762353 = addInt(i_469762353, 1);
+                            if (!(((matches_469762075).length == L_469762354))) {
+                            failedAssertImpl_218103864(makeNimstrLit("iterators.nim(173, 11) `len(a) == L` the length of the seq changed while iterating over it"));
+                            }
+                            
+                          }
+                      } while (false);
+                    } while (false);
+                    if (!(exists_469762123)) {
+                    var fmtRes_469762228 = [mnewString(0)];
+                    fmtRes_469762228[0].push.apply(fmtRes_469762228[0], makeNimstrLit("<a href=\'"));;
+                    formatValue_1358954658(fmtRes_469762228, 0, item_469762098.slug, []);
+                    fmtRes_469762228[0].push.apply(fmtRes_469762228[0], makeNimstrLit("\'>"));;
+                    formatValue_1358954658(fmtRes_469762228, 0, title_469762099, []);
+                    fmtRes_469762228[0].push.apply(fmtRes_469762228[0], makeNimstrLit("(1 match)</a>"));;
+                    var webNode_469762229 = nimCopy(null, fmtRes_469762228[0], NTI33554439);
+                    var sResult_469762230 = ({element: [], slug: [], count: 0, score: 0});
+                    sResult_469762230.slug = nimCopy(null, item_469762098.slug, NTI33554439);
+                    sResult_469762230.element = nimCopy(null, webNode_469762229, NTI33554439);
+                    sResult_469762230.score = score_469762121;
+                    sResult_469762230.count = 0;
+                    var Temporary10 = nimCopy(null, sResult_469762230, NTI1392508931);
+                    matches_469762075.push(Temporary10);;
+                    }
+                    
+                    }
+                    
+                    i_469762357 = addInt(i_469762357, 1);
+                    if (!(((item_469762098.contentTokens).length == L_469762358))) {
+                    failedAssertImpl_218103864(makeNimstrLit("iterators.nim(240, 11) `len(a) == L` the length of the seq changed while iterating over it"));
+                    }
+                    
+                  }
+              } while (false);
+            } while (false);
+            i_469762361 = addInt(i_469762361, 1);
+            if (!(((searchDB_469762055[0]).length == L_469762362))) {
+            failedAssertImpl_218103864(makeNimstrLit("iterators.nim(240, 11) `len(a) == L` the length of the seq changed while iterating over it"));
+            }
+            
+          }
+      } while (false);
+    } while (false);
+    matches_469762075.sort(HEX3Aanonymous_469762235);
+    Label11: do {
+      var m_469762275 = ({element: [], slug: [], count: 0, score: 0});
+      var i_469762366 = 0;
+      var L_469762367 = (matches_469762075).length;
+      Label12: do {
+          Label13: while (true) {
+          if (!(i_469762366 < L_469762367)) break Label13;
+            m_469762275 = matches_469762075[chckIndx(i_469762366, 0, (matches_469762075).length - 1)];
+            var container_469762276 = document.createElement("div");
+            container_469762276.classList.add("mudkip-search-item");
+            container_469762276.innerHTML = toJSStr(m_469762275.element);
+            searchContainer_469762074.appendChild(container_469762276);
+            i_469762366 = addInt(i_469762366, 1);
+            if (!(((matches_469762075).length == L_469762367))) {
+            failedAssertImpl_218103864(makeNimstrLit("iterators.nim(240, 11) `len(a) == L` the length of the seq changed while iterating over it"));
+            }
+            
+          }
+      } while (false);
+    } while (false);
+  } while (false);
+
+  
+}
+
+function parseHex_654312325(s_654312327, number_654312328, number_654312328_Idx, start_654312329, maxLen_654312330) {
+    var Temporary1;
+
+  var result_654312331 = 0;
+
+    var i_654312332 = start_654312329;
+    var output_654312333 = 0;
+    var foundDigit_654312334 = false;
+    if ((maxLen_654312330 == 0)) {
+    Temporary1 = (s_654312327).length;
+    }
+    else {
+    Temporary1 = addInt(i_654312332, maxLen_654312330);
+    }
+    
+    var last_654312335 = nimMin((s_654312327).length, Temporary1);
+    if ((((addInt(i_654312332, 1) < last_654312335) && (s_654312327[chckIndx(i_654312332, 0, (s_654312327).length - 1)] == 48)) && (ConstSet18[s_654312327[chckIndx(addInt(i_654312332, 1), 0, (s_654312327).length - 1)]] != undefined))) {
+    i_654312332 = addInt(i_654312332, 2);
+    }
+    else {
+    if (((i_654312332 < last_654312335) && (s_654312327[chckIndx(i_654312332, 0, (s_654312327).length - 1)] == 35))) {
+    i_654312332 = addInt(i_654312332, 1);
+    }
+    }
+    Label2: do {
+        Label3: while (true) {
+        if (!(i_654312332 < last_654312335)) break Label3;
+          switch (s_654312327[chckIndx(i_654312332, 0, (s_654312327).length - 1)]) {
+          case 95:
+            break;
+          case 48:
+          case 49:
+          case 50:
+          case 51:
+          case 52:
+          case 53:
+          case 54:
+          case 55:
+          case 56:
+          case 57:
+            output_654312333 = ((output_654312333 << 4) | subInt(s_654312327[chckIndx(i_654312332, 0, (s_654312327).length - 1)], 48));
+            foundDigit_654312334 = true;
+            break;
+          case 97:
+          case 98:
+          case 99:
+          case 100:
+          case 101:
+          case 102:
+            output_654312333 = ((output_654312333 << 4) | addInt(subInt(s_654312327[chckIndx(i_654312332, 0, (s_654312327).length - 1)], 97), 10));
+            foundDigit_654312334 = true;
+            break;
+          case 65:
+          case 66:
+          case 67:
+          case 68:
+          case 69:
+          case 70:
+            output_654312333 = ((output_654312333 << 4) | addInt(subInt(s_654312327[chckIndx(i_654312332, 0, (s_654312327).length - 1)], 65), 10));
+            foundDigit_654312334 = true;
+            break;
+          default: 
+            break Label2;
+            break;
+          }
+          i_654312332 = addInt(i_654312332, 1);
+        }
+    } while (false);
+    if (foundDigit_654312334) {
+    number_654312328[number_654312328_Idx] = output_654312333;
+    result_654312331 = subInt(i_654312332, start_654312329);
+    }
+    
+
+  return result_654312331;
+
+}
+
+function nsuParseHexInt(s_654312323) {
+      var Temporary1;
+
+  var result_654312324 = [0];
+
+    result_654312324[0] = 0;
+    var L_654312382 = parseHex_654312325(s_654312323, result_654312324, 0, 0, 0);
+      if (!((L_654312382 == (s_654312323).length))) Temporary1 = true; else {        Temporary1 = (L_654312382 == 0);      }    if (Temporary1) {
+    raiseException({message: (makeNimstrLit("invalid hex integer: ") || []).concat(s_654312323 || []), parent: null, m_type: NTI33555125, name: null, trace: [], up: null}, "ValueError");
+    }
+    
+
+  return result_654312324[0];
+
+}
+
+function HEX5BHEX5D_956302188(s_956302191, x_956302192) {
+  var result_956302193 = [];
+
+    var a_956302195 = x_956302192.a;
+    var L_956302197 = addInt(subInt(x_956302192.b, a_956302195), 1);
+    result_956302193 = nimCopy(null, mnewString(chckRange(L_956302197, 0, 2147483647)), NTI33554439);
+    Label1: do {
+      var i_956302202 = 0;
+      var i_469762749 = 0;
+      Label2: do {
+          Label3: while (true) {
+          if (!(i_469762749 < L_956302197)) break Label3;
+            i_956302202 = i_469762749;
+            result_956302193[chckIndx(i_956302202, 0, (result_956302193).length - 1)] = s_956302191[chckIndx(addInt(i_956302202, a_956302195), 0, (s_956302191).length - 1)];
+            i_469762749 = addInt(i_469762749, 1);
+          }
+      } while (false);
+    } while (false);
+
+  return result_956302193;
+
+}
+
+function HEX2EHEX2E_956302163(a_956302166, b_956302167) {
+  var result_956302168 = ({a: 0, b: 0});
+
+    result_956302168 = nimCopy(result_956302168, {a: a_956302166, b: b_956302167}, NTI704643133);
+
+  return result_956302168;
+
+}
+
+function HEX3CHEX3DHEX25_33555429(x_33555430, y_33555431) {
+  var result_33555432 = false;
+
+    result_33555432 = ((x_33555430 >>> 0) <= (y_33555431 >>> 0));
+
+  return result_33555432;
+
+}
+
+function nuctoUTF8(c_956301653) {
+  var result_956301654 = [];
+
+    result_956301654 = nimCopy(null, [], NTI33554439);
+    var iHEX60gensym49_956301656 = c_956301653;
+    if (HEX3CHEX3DHEX25_33555429(iHEX60gensym49_956301656, 127)) {
+    (result_956301654.length = 1);
+    result_956301654[chckIndx(0, 0, (result_956301654).length - 1)] = chckRange(iHEX60gensym49_956301656, 0, 255);
+    }
+    else {
+    if (HEX3CHEX3DHEX25_33555429(iHEX60gensym49_956301656, 2047)) {
+    (result_956301654.length = 2);
+    result_956301654[chckIndx(0, 0, (result_956301654).length - 1)] = chckRange(((iHEX60gensym49_956301656 >> 6) | 192), 0, 255);
+    result_956301654[chckIndx(1, 0, (result_956301654).length - 1)] = chckRange(((iHEX60gensym49_956301656 & 63) | 128), 0, 255);
+    }
+    else {
+    if (HEX3CHEX3DHEX25_33555429(iHEX60gensym49_956301656, 65535)) {
+    (result_956301654.length = 3);
+    result_956301654[chckIndx(0, 0, (result_956301654).length - 1)] = chckRange(((iHEX60gensym49_956301656 >> 12) | 224), 0, 255);
+    result_956301654[chckIndx(1, 0, (result_956301654).length - 1)] = chckRange((((iHEX60gensym49_956301656 >> 6) & 63) | 128), 0, 255);
+    result_956301654[chckIndx(2, 0, (result_956301654).length - 1)] = chckRange(((iHEX60gensym49_956301656 & 63) | 128), 0, 255);
+    }
+    else {
+    if (HEX3CHEX3DHEX25_33555429(iHEX60gensym49_956301656, 2097151)) {
+    (result_956301654.length = 4);
+    result_956301654[chckIndx(0, 0, (result_956301654).length - 1)] = chckRange(((iHEX60gensym49_956301656 >> 18) | 240), 0, 255);
+    result_956301654[chckIndx(1, 0, (result_956301654).length - 1)] = chckRange((((iHEX60gensym49_956301656 >> 12) & 63) | 128), 0, 255);
+    result_956301654[chckIndx(2, 0, (result_956301654).length - 1)] = chckRange((((iHEX60gensym49_956301656 >> 6) & 63) | 128), 0, 255);
+    result_956301654[chckIndx(3, 0, (result_956301654).length - 1)] = chckRange(((iHEX60gensym49_956301656 & 63) | 128), 0, 255);
+    }
+    else {
+    if (HEX3CHEX3DHEX25_33555429(iHEX60gensym49_956301656, 67108863)) {
+    (result_956301654.length = 5);
+    result_956301654[chckIndx(0, 0, (result_956301654).length - 1)] = chckRange(((iHEX60gensym49_956301656 >> 24) | 248), 0, 255);
+    result_956301654[chckIndx(1, 0, (result_956301654).length - 1)] = chckRange((((iHEX60gensym49_956301656 >> 18) & 63) | 128), 0, 255);
+    result_956301654[chckIndx(2, 0, (result_956301654).length - 1)] = chckRange((((iHEX60gensym49_956301656 >> 12) & 63) | 128), 0, 255);
+    result_956301654[chckIndx(3, 0, (result_956301654).length - 1)] = chckRange((((iHEX60gensym49_956301656 >> 6) & 63) | 128), 0, 255);
+    result_956301654[chckIndx(4, 0, (result_956301654).length - 1)] = chckRange(((iHEX60gensym49_956301656 & 63) | 128), 0, 255);
+    }
+    else {
+    if (HEX3CHEX3DHEX25_33555429(iHEX60gensym49_956301656, 2147483647)) {
+    (result_956301654.length = 6);
+    result_956301654[chckIndx(0, 0, (result_956301654).length - 1)] = chckRange(((iHEX60gensym49_956301656 >> 30) | 252), 0, 255);
+    result_956301654[chckIndx(1, 0, (result_956301654).length - 1)] = chckRange((((iHEX60gensym49_956301656 >> 24) & 63) | 128), 0, 255);
+    result_956301654[chckIndx(2, 0, (result_956301654).length - 1)] = chckRange((((iHEX60gensym49_956301656 >> 18) & 63) | 128), 0, 255);
+    result_956301654[chckIndx(3, 0, (result_956301654).length - 1)] = chckRange((((iHEX60gensym49_956301656 >> 12) & 63) | 128), 0, 255);
+    result_956301654[chckIndx(4, 0, (result_956301654).length - 1)] = chckRange((((iHEX60gensym49_956301656 >> 6) & 63) | 128), 0, 255);
+    result_956301654[chckIndx(5, 0, (result_956301654).length - 1)] = chckRange(((iHEX60gensym49_956301656 & 63) | 128), 0, 255);
+    }
+    else {
+    }
+    }}}}}
+
+  return result_956301654;
+
+}
+
+function parseStringSlow_637534393(s_637534394, i_637534395, i_637534395_Idx, v_637534396, v_637534396_Idx) {
+    Label1: do {
+        Label2: while (true) {
+        if (!(i_637534395[i_637534395_Idx] < (s_637534394).length)) break Label2;
+          var c_637534397 = s_637534394[i_637534395[i_637534395_Idx]];
+          switch (c_637534397) {
+          case 34:
+            break Label1;
+            break;
+          case 92:
+            i_637534395[i_637534395_Idx] += 1;
+            var c_637534402 = s_637534394[i_637534395[i_637534395_Idx]];
+            switch (c_637534402) {
+            case 34:
+            case 92:
+            case 47:
+              addChar(v_637534396[v_637534396_Idx], c_637534402);;
+              break;
+            case 98:
+              addChar(v_637534396[v_637534396_Idx], 8);;
+              break;
+            case 102:
+              addChar(v_637534396[v_637534396_Idx], 12);;
+              break;
+            case 110:
+              addChar(v_637534396[v_637534396_Idx], 10);;
+              break;
+            case 114:
+              addChar(v_637534396[v_637534396_Idx], 13);;
+              break;
+            case 116:
+              addChar(v_637534396[v_637534396_Idx], 9);;
+              break;
+            case 117:
+              i_637534395[i_637534395_Idx] += 1;
+              var u_637534430 = nsuParseHexInt(HEX5BHEX5D_956302188(s_637534394, HEX2EHEX2E_956302163(i_637534395[i_637534395_Idx], ((i_637534395[i_637534395_Idx] + 4) - 1))));
+              i_637534395[i_637534395_Idx] += 3;
+              v_637534396[v_637534396_Idx].push.apply(v_637534396[v_637534396_Idx], nuctoUTF8(((u_637534430) | 0)));;
+              break;
+            default: 
+              addChar(v_637534396[v_637534396_Idx], c_637534402);;
+              break;
+            }
+            break;
+          default: 
+            addChar(v_637534396[v_637534396_Idx], c_637534397);;
+            break;
+          }
+          i_637534395[i_637534395_Idx] += 1;
+        }
+    } while (false);
+    Label3: do {
+        Label4: while (true) {
+        if (!(i_637534395[i_637534395_Idx] < (s_637534394).length)) break Label4;
+          var cHEX60gensym14_637534440 = s_637534394[i_637534395[i_637534395_Idx]];
+          if (!((whiteSpace_637534219[cHEX60gensym14_637534440] != undefined))) {
+          break Label3;
+          }
+          
+          i_637534395[i_637534395_Idx] += 1;
+        }
+    } while (false);
+    if (((s_637534394).length <= i_637534395[i_637534395_Idx])) {
+    raiseException({message: (makeNimstrLit("Expected \" but end reached. At offset: ") || []).concat(HEX24_335544323(i_637534395[i_637534395_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    }
+    
+    if ((s_637534394[i_637534395[i_637534395_Idx]] == 34)) {
+    i_637534395[i_637534395_Idx] += 1;
+    }
+    else {
+      raiseException({message: (makeNimstrLit("Expected \" but got ") || []).concat([s_637534394[i_637534395[i_637534395_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_637534395[i_637534395_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    }
+    
+
+  
+}
+
+function parseHook_637534624(s_637534625, i_637534626, i_637534626_Idx, v_637534627, v_637534627_Idx) {
+      var Temporary3;
+      var Temporary4;
+      var Temporary5;
+      var Temporary6;
+
+  BeforeRet: do {
+    Label1: do {
+        Label2: while (true) {
+        if (!(i_637534626[i_637534626_Idx] < (s_637534625).length)) break Label2;
+          var cHEX60gensym47_637534629 = s_637534625[i_637534626[i_637534626_Idx]];
+          if (!((whiteSpace_637534219[cHEX60gensym47_637534629] != undefined))) {
+          break Label1;
+          }
+          
+          i_637534626[i_637534626_Idx] += 1;
+        }
+    } while (false);
+      if (!((i_637534626[i_637534626_Idx] + 3) < (s_637534625).length)) Temporary6 = false; else {        Temporary6 = (s_637534625[(i_637534626[i_637534626_Idx] + 0)] == 110);      }      if (!Temporary6) Temporary5 = false; else {        Temporary5 = (s_637534625[(i_637534626[i_637534626_Idx] + 1)] == 117);      }      if (!Temporary5) Temporary4 = false; else {        Temporary4 = (s_637534625[(i_637534626[i_637534626_Idx] + 2)] == 108);      }      if (!Temporary4) Temporary3 = false; else {        Temporary3 = (s_637534625[(i_637534626[i_637534626_Idx] + 3)] == 108);      }    if (Temporary3) {
+    i_637534626[i_637534626_Idx] += 4;
+    break BeforeRet;
+    }
+    
+    Label7: do {
+        Label8: while (true) {
+        if (!(i_637534626[i_637534626_Idx] < (s_637534625).length)) break Label8;
+          var cHEX60gensym51_637534643 = s_637534625[i_637534626[i_637534626_Idx]];
+          if (!((whiteSpace_637534219[cHEX60gensym51_637534643] != undefined))) {
+          break Label7;
+          }
+          
+          i_637534626[i_637534626_Idx] += 1;
+        }
+    } while (false);
+    if (((s_637534625).length <= i_637534626[i_637534626_Idx])) {
+    raiseException({message: (makeNimstrLit("Expected \" but end reached. At offset: ") || []).concat(HEX24_335544323(i_637534626[i_637534626_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    }
+    
+    if ((s_637534625[i_637534626[i_637534626_Idx]] == 34)) {
+    i_637534626[i_637534626_Idx] += 1;
+    }
+    else {
+      raiseException({message: (makeNimstrLit("Expected \" but got ") || []).concat([s_637534625[i_637534626[i_637534626_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_637534626[i_637534626_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    }
+    
+    parseStringSlow_637534393(s_637534625, i_637534626, i_637534626_Idx, v_637534627, v_637534627_Idx);
+  } while (false);
+
+  
+}
+
+function parseHook_469762571(s_469762573, i_469762574, i_469762574_Idx, v_469762575, v_469762575_Idx) {
+            var Temporary7;
+            var Temporary11;
+
+    Label1: do {
+        Label2: while (true) {
+        if (!(i_469762574[i_469762574_Idx] < (s_469762573).length)) break Label2;
+          var cHEX60gensym65_469762577 = s_469762573[i_469762574[i_469762574_Idx]];
+          if (!((whiteSpace_637534219[cHEX60gensym65_469762577] != undefined))) {
+          break Label1;
+          }
+          
+          i_469762574[i_469762574_Idx] += 1;
+        }
+    } while (false);
+    if (((s_469762573).length <= i_469762574[i_469762574_Idx])) {
+    raiseException({message: (makeNimstrLit("Expected [ but end reached. At offset: ") || []).concat(HEX24_335544323(i_469762574[i_469762574_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    }
+    
+    if ((s_469762573[i_469762574[i_469762574_Idx]] == 91)) {
+    i_469762574[i_469762574_Idx] += 1;
+    }
+    else {
+      raiseException({message: (makeNimstrLit("Expected [ but got ") || []).concat([s_469762573[i_469762574[i_469762574_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_469762574[i_469762574_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    }
+    
+    Label3: do {
+        Label4: while (true) {
+        if (!(i_469762574[i_469762574_Idx] < (s_469762573).length)) break Label4;
+          Label5: do {
+              Label6: while (true) {
+              if (!(i_469762574[i_469762574_Idx] < (s_469762573).length)) break Label6;
+                var cHEX60gensym75_469762593 = s_469762573[i_469762574[i_469762574_Idx]];
+                if (!((whiteSpace_637534219[cHEX60gensym75_469762593] != undefined))) {
+                break Label5;
+                }
+                
+                i_469762574[i_469762574_Idx] += 1;
+              }
+          } while (false);
+            if (!(i_469762574[i_469762574_Idx] < (s_469762573).length)) Temporary7 = false; else {              Temporary7 = (s_469762573[i_469762574[i_469762574_Idx]] == 93);            }          if (Temporary7) {
+          break Label3;
+          }
+          
+          var element_469762602 = [[]];
+          parseHook_637534624(s_469762573, i_469762574, i_469762574_Idx, element_469762602, 0);
+          var Temporary8 = nimCopy(null, element_469762602[0], NTI33554439);
+          v_469762575[v_469762575_Idx].push(Temporary8);;
+          Label9: do {
+              Label10: while (true) {
+              if (!(i_469762574[i_469762574_Idx] < (s_469762573).length)) break Label10;
+                var cHEX60gensym79_469762608 = s_469762573[i_469762574[i_469762574_Idx]];
+                if (!((whiteSpace_637534219[cHEX60gensym79_469762608] != undefined))) {
+                break Label9;
+                }
+                
+                i_469762574[i_469762574_Idx] += 1;
+              }
+          } while (false);
+            if (!(i_469762574[i_469762574_Idx] < (s_469762573).length)) Temporary11 = false; else {              Temporary11 = (s_469762573[i_469762574[i_469762574_Idx]] == 44);            }          if (Temporary11) {
+          i_469762574[i_469762574_Idx] += 1;
+          }
+          else {
+            break Label3;
+          }
+          
+        }
+    } while (false);
+    Label12: do {
+        Label13: while (true) {
+        if (!(i_469762574[i_469762574_Idx] < (s_469762573).length)) break Label13;
+          var cHEX60gensym84_469762622 = s_469762573[i_469762574[i_469762574_Idx]];
+          if (!((whiteSpace_637534219[cHEX60gensym84_469762622] != undefined))) {
+          break Label12;
+          }
+          
+          i_469762574[i_469762574_Idx] += 1;
+        }
+    } while (false);
+    if (((s_469762573).length <= i_469762574[i_469762574_Idx])) {
+    raiseException({message: (makeNimstrLit("Expected ] but end reached. At offset: ") || []).concat(HEX24_335544323(i_469762574[i_469762574_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    }
+    
+    if ((s_469762573[i_469762574[i_469762574_Idx]] == 93)) {
+    i_469762574[i_469762574_Idx] += 1;
+    }
+    else {
+      raiseException({message: (makeNimstrLit("Expected ] but got ") || []).concat([s_469762573[i_469762574[i_469762574_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_469762574[i_469762574_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    }
+    
+
+  
+}
+
+function parseSymbol_637534288(s_637534289, i_637534290, i_637534290_Idx) {
+  var result_637534291 = [];
+
+  BeforeRet: do {
+    Label1: do {
+        Label2: while (true) {
+        if (!(i_637534290[i_637534290_Idx] < (s_637534289).length)) break Label2;
+          var cHEX60gensym0_637534293 = s_637534289[i_637534290[i_637534290_Idx]];
+          if (!((whiteSpace_637534219[cHEX60gensym0_637534293] != undefined))) {
+          break Label1;
+          }
+          
+          i_637534290[i_637534290_Idx] += 1;
+        }
+    } while (false);
+    var j_637534302 = i_637534290[i_637534290_Idx];
+    Label3: do {
+        Label4: while (true) {
+        if (!(i_637534290[i_637534290_Idx] < (s_637534289).length)) break Label4;
+          switch (s_637534289[i_637534290[i_637534290_Idx]]) {
+          case 44:
+          case 125:
+          case 93:
+          case 9:
+          case 10:
+          case 13:
+          case 32:
+            break Label3;
+            break;
+          default: 
+            break;
+          }
+          i_637534290[i_637534290_Idx] += 1;
+        }
+    } while (false);
+    result_637534291 = nimCopy(null, HEX5BHEX5D_956302188(s_637534289, HEX2EHEX2E_956302163(j_637534302, (i_637534290[i_637534290_Idx] - 1))), NTI33554439);
+    break BeforeRet;
+  } while (false);
+
+  return result_637534291;
+
+}
+
+function skipValue_637534681(s_637534682, i_637534683, i_637534683_Idx) {
+      var Temporary3;
+            var Temporary10;
+            var Temporary15;
+      var Temporary18;
+            var Temporary25;
+            var Temporary28;
+      var Temporary31;
+
+    Label1: do {
+        Label2: while (true) {
+        if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) break Label2;
+          var cHEX60gensym64_637534685 = s_637534682[i_637534683[i_637534683_Idx]];
+          if (!((whiteSpace_637534219[cHEX60gensym64_637534685] != undefined))) {
+          break Label1;
+          }
+          
+          i_637534683[i_637534683_Idx] += 1;
+        }
+    } while (false);
+      if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) Temporary3 = false; else {        Temporary3 = (s_637534682[i_637534683[i_637534683_Idx]] == 123);      }    if (Temporary3) {
+    Label4: do {
+        Label5: while (true) {
+        if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) break Label5;
+          var cHEX60gensym68_637534695 = s_637534682[i_637534683[i_637534683_Idx]];
+          if (!((whiteSpace_637534219[cHEX60gensym68_637534695] != undefined))) {
+          break Label4;
+          }
+          
+          i_637534683[i_637534683_Idx] += 1;
+        }
+    } while (false);
+    if (((s_637534682).length <= i_637534683[i_637534683_Idx])) {
+    raiseException({message: (makeNimstrLit("Expected { but end reached. At offset: ") || []).concat(HEX24_335544323(i_637534683[i_637534683_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    }
+    
+    if ((s_637534682[i_637534683[i_637534683_Idx]] == 123)) {
+    i_637534683[i_637534683_Idx] += 1;
+    }
+    else {
+      raiseException({message: (makeNimstrLit("Expected { but got ") || []).concat([s_637534682[i_637534683[i_637534683_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_637534683[i_637534683_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    }
+    
+    Label6: do {
+        Label7: while (true) {
+        if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) break Label7;
+          Label8: do {
+              Label9: while (true) {
+              if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) break Label9;
+                var cHEX60gensym78_637534711 = s_637534682[i_637534683[i_637534683_Idx]];
+                if (!((whiteSpace_637534219[cHEX60gensym78_637534711] != undefined))) {
+                break Label8;
+                }
+                
+                i_637534683[i_637534683_Idx] += 1;
+              }
+          } while (false);
+            if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) Temporary10 = false; else {              Temporary10 = (s_637534682[i_637534683[i_637534683_Idx]] == 125);            }          if (Temporary10) {
+          break Label6;
+          }
+          
+          skipValue_637534681(s_637534682, i_637534683, i_637534683_Idx);
+          Label11: do {
+              Label12: while (true) {
+              if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) break Label12;
+                var cHEX60gensym82_637534721 = s_637534682[i_637534683[i_637534683_Idx]];
+                if (!((whiteSpace_637534219[cHEX60gensym82_637534721] != undefined))) {
+                break Label11;
+                }
+                
+                i_637534683[i_637534683_Idx] += 1;
+              }
+          } while (false);
+          if (((s_637534682).length <= i_637534683[i_637534683_Idx])) {
+          raiseException({message: (makeNimstrLit("Expected : but end reached. At offset: ") || []).concat(HEX24_335544323(i_637534683[i_637534683_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+          }
+          
+          if ((s_637534682[i_637534683[i_637534683_Idx]] == 58)) {
+          i_637534683[i_637534683_Idx] += 1;
+          }
+          else {
+            raiseException({message: (makeNimstrLit("Expected : but got ") || []).concat([s_637534682[i_637534683[i_637534683_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_637534683[i_637534683_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+          }
+          
+          skipValue_637534681(s_637534682, i_637534683, i_637534683_Idx);
+          Label13: do {
+              Label14: while (true) {
+              if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) break Label14;
+                var cHEX60gensym92_637534737 = s_637534682[i_637534683[i_637534683_Idx]];
+                if (!((whiteSpace_637534219[cHEX60gensym92_637534737] != undefined))) {
+                break Label13;
+                }
+                
+                i_637534683[i_637534683_Idx] += 1;
+              }
+          } while (false);
+            if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) Temporary15 = false; else {              Temporary15 = (s_637534682[i_637534683[i_637534683_Idx]] == 44);            }          if (Temporary15) {
+          i_637534683[i_637534683_Idx] += 1;
+          }
+          
+        }
+    } while (false);
+    Label16: do {
+        Label17: while (true) {
+        if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) break Label17;
+          var cHEX60gensym96_637534751 = s_637534682[i_637534683[i_637534683_Idx]];
+          if (!((whiteSpace_637534219[cHEX60gensym96_637534751] != undefined))) {
+          break Label16;
+          }
+          
+          i_637534683[i_637534683_Idx] += 1;
+        }
+    } while (false);
+    if (((s_637534682).length <= i_637534683[i_637534683_Idx])) {
+    raiseException({message: (makeNimstrLit("Expected } but end reached. At offset: ") || []).concat(HEX24_335544323(i_637534683[i_637534683_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    }
+    
+    if ((s_637534682[i_637534683[i_637534683_Idx]] == 125)) {
+    i_637534683[i_637534683_Idx] += 1;
+    }
+    else {
+      raiseException({message: (makeNimstrLit("Expected } but got ") || []).concat([s_637534682[i_637534683[i_637534683_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_637534683[i_637534683_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    }
+    
+    }
+    else {
+      if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) Temporary18 = false; else {        Temporary18 = (s_637534682[i_637534683[i_637534683_Idx]] == 91);      }    if (Temporary18) {
+    Label19: do {
+        Label20: while (true) {
+        if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) break Label20;
+          var cHEX60gensym107_637534767 = s_637534682[i_637534683[i_637534683_Idx]];
+          if (!((whiteSpace_637534219[cHEX60gensym107_637534767] != undefined))) {
+          break Label19;
+          }
+          
+          i_637534683[i_637534683_Idx] += 1;
+        }
+    } while (false);
+    if (((s_637534682).length <= i_637534683[i_637534683_Idx])) {
+    raiseException({message: (makeNimstrLit("Expected [ but end reached. At offset: ") || []).concat(HEX24_335544323(i_637534683[i_637534683_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    }
+    
+    if ((s_637534682[i_637534683[i_637534683_Idx]] == 91)) {
+    i_637534683[i_637534683_Idx] += 1;
+    }
+    else {
+      raiseException({message: (makeNimstrLit("Expected [ but got ") || []).concat([s_637534682[i_637534683[i_637534683_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_637534683[i_637534683_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    }
+    
+    Label21: do {
+        Label22: while (true) {
+        if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) break Label22;
+          Label23: do {
+              Label24: while (true) {
+              if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) break Label24;
+                var cHEX60gensym117_637534783 = s_637534682[i_637534683[i_637534683_Idx]];
+                if (!((whiteSpace_637534219[cHEX60gensym117_637534783] != undefined))) {
+                break Label23;
+                }
+                
+                i_637534683[i_637534683_Idx] += 1;
+              }
+          } while (false);
+            if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) Temporary25 = false; else {              Temporary25 = (s_637534682[i_637534683[i_637534683_Idx]] == 93);            }          if (Temporary25) {
+          break Label21;
+          }
+          
+          skipValue_637534681(s_637534682, i_637534683, i_637534683_Idx);
+          Label26: do {
+              Label27: while (true) {
+              if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) break Label27;
+                var cHEX60gensym120_637534793 = s_637534682[i_637534683[i_637534683_Idx]];
+                if (!((whiteSpace_637534219[cHEX60gensym120_637534793] != undefined))) {
+                break Label26;
+                }
+                
+                i_637534683[i_637534683_Idx] += 1;
+              }
+          } while (false);
+            if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) Temporary28 = false; else {              Temporary28 = (s_637534682[i_637534683[i_637534683_Idx]] == 44);            }          if (Temporary28) {
+          i_637534683[i_637534683_Idx] += 1;
+          }
+          
+        }
+    } while (false);
+    Label29: do {
+        Label30: while (true) {
+        if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) break Label30;
+          var cHEX60gensym124_637534807 = s_637534682[i_637534683[i_637534683_Idx]];
+          if (!((whiteSpace_637534219[cHEX60gensym124_637534807] != undefined))) {
+          break Label29;
+          }
+          
+          i_637534683[i_637534683_Idx] += 1;
+        }
+    } while (false);
+    if (((s_637534682).length <= i_637534683[i_637534683_Idx])) {
+    raiseException({message: (makeNimstrLit("Expected ] but end reached. At offset: ") || []).concat(HEX24_335544323(i_637534683[i_637534683_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    }
+    
+    if ((s_637534682[i_637534683[i_637534683_Idx]] == 93)) {
+    i_637534683[i_637534683_Idx] += 1;
+    }
+    else {
+      raiseException({message: (makeNimstrLit("Expected ] but got ") || []).concat([s_637534682[i_637534683[i_637534683_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_637534683[i_637534683_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    }
+    
+    }
+    else {
+      if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) Temporary31 = false; else {        Temporary31 = (s_637534682[i_637534683[i_637534683_Idx]] == 34);      }    if (Temporary31) {
+    var str_637534822 = [[]];
+    parseHook_637534624(s_637534682, i_637534683, i_637534683_Idx, str_637534822, 0);
+    }
+    else {
+    var _ = parseSymbol_637534288(s_637534682, i_637534683, i_637534683_Idx);
+    }
+    }}
+
+  
+}
+
+function parseObjectInner_469762519(s_469762521, i_469762522, i_469762522_Idx, v_469762523) {
+            var Temporary5;
+                    var Temporary11;
+                    var Temporary12;
+                    var Temporary13;
+            var Temporary16;
+
+    Label1: do {
+        Label2: while (true) {
+        if (!(i_469762522[i_469762522_Idx] < (s_469762521).length)) break Label2;
+          Label3: do {
+              Label4: while (true) {
+              if (!(i_469762522[i_469762522_Idx] < (s_469762521).length)) break Label4;
+                var cHEX60gensym46_469762525 = s_469762521[i_469762522[i_469762522_Idx]];
+                if (!((whiteSpace_637534219[cHEX60gensym46_469762525] != undefined))) {
+                break Label3;
+                }
+                
+                i_469762522[i_469762522_Idx] += 1;
+              }
+          } while (false);
+            if (!(i_469762522[i_469762522_Idx] < (s_469762521).length)) Temporary5 = false; else {              Temporary5 = (s_469762521[i_469762522[i_469762522_Idx]] == 125);            }          if (Temporary5) {
+          break Label1;
+          }
+          
+          var key_469762534 = [[]];
+          parseHook_637534624(s_469762521, i_469762522, i_469762522_Idx, key_469762534, 0);
+          Label6: do {
+              Label7: while (true) {
+              if (!(i_469762522[i_469762522_Idx] < (s_469762521).length)) break Label7;
+                var cHEX60gensym51_469762536 = s_469762521[i_469762522[i_469762522_Idx]];
+                if (!((whiteSpace_637534219[cHEX60gensym51_469762536] != undefined))) {
+                break Label6;
+                }
+                
+                i_469762522[i_469762522_Idx] += 1;
+              }
+          } while (false);
+          if (((s_469762521).length <= i_469762522[i_469762522_Idx])) {
+          raiseException({message: (makeNimstrLit("Expected : but end reached. At offset: ") || []).concat(HEX24_335544323(i_469762522[i_469762522_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+          }
+          
+          if ((s_469762521[i_469762522[i_469762522_Idx]] == 58)) {
+          i_469762522[i_469762522_Idx] += 1;
+          }
+          else {
+            raiseException({message: (makeNimstrLit("Expected : but got ") || []).concat([s_469762521[i_469762522[i_469762522_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_469762522[i_469762522_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+          }
+          
+          Label8: do {
+            Label9: do {
+                Label10: while (true) {
+                if (!true) break Label10;
+                    if (eqStrings(makeNimstrLit("title"), key_469762534[0])) Temporary11 = true; else {                      Temporary11 = eqStrings(makeNimstrLit("title"), key_469762534[0]);                    }                  if (Temporary11) {
+                  var v2_469762564 = [[]];
+                  parseHook_637534624(s_469762521, i_469762522, i_469762522_Idx, v2_469762564, 0);
+                  v_469762523.title = nimCopy(null, v2_469762564[0], NTI33554439);
+                  break Label8;
+                  }
+                  
+                    if (eqStrings(makeNimstrLit("slug"), key_469762534[0])) Temporary12 = true; else {                      Temporary12 = eqStrings(makeNimstrLit("slug"), key_469762534[0]);                    }                  if (Temporary12) {
+                  var v2_469762567 = [[]];
+                  parseHook_637534624(s_469762521, i_469762522, i_469762522_Idx, v2_469762567, 0);
+                  v_469762523.slug = nimCopy(null, v2_469762567[0], NTI33554439);
+                  break Label8;
+                  }
+                  
+                    if (eqStrings(makeNimstrLit("contentTokens"), key_469762534[0])) Temporary13 = true; else {                      Temporary13 = eqStrings(makeNimstrLit("content_tokens"), key_469762534[0]);                    }                  if (Temporary13) {
+                  var v2_469762570 = [[]];
+                  parseHook_469762571(s_469762521, i_469762522, i_469762522_Idx, v2_469762570, 0);
+                  v_469762523.contentTokens = nimCopy(null, v2_469762570[0], NTI1392508933);
+                  break Label8;
+                  }
+                  
+                  break Label9;
+                }
+            } while (false);
+            skipValue_637534681(s_469762521, i_469762522, i_469762522_Idx);
+          } while (false);
+          Label14: do {
+              Label15: while (true) {
+              if (!(i_469762522[i_469762522_Idx] < (s_469762521).length)) break Label15;
+                var cHEX60gensym94_469762638 = s_469762521[i_469762522[i_469762522_Idx]];
+                if (!((whiteSpace_637534219[cHEX60gensym94_469762638] != undefined))) {
+                break Label14;
+                }
+                
+                i_469762522[i_469762522_Idx] += 1;
+              }
+          } while (false);
+            if (!(i_469762522[i_469762522_Idx] < (s_469762521).length)) Temporary16 = false; else {              Temporary16 = (s_469762521[i_469762522[i_469762522_Idx]] == 44);            }          if (Temporary16) {
+          i_469762522[i_469762522_Idx] += 1;
+          }
+          else {
+            break Label1;
+          }
+          
+        }
+    } while (false);
+
+  
+}
+
+function parseHook_469762470(s_469762472, i_469762473, i_469762473_Idx, v_469762474) {
+      var Temporary3;
+      var Temporary4;
+      var Temporary5;
+      var Temporary6;
+
+  BeforeRet: do {
+    Label1: do {
+        Label2: while (true) {
+        if (!(i_469762473[i_469762473_Idx] < (s_469762472).length)) break Label2;
+          var cHEX60gensym28_469762476 = s_469762472[i_469762473[i_469762473_Idx]];
+          if (!((whiteSpace_637534219[cHEX60gensym28_469762476] != undefined))) {
+          break Label1;
+          }
+          
+          i_469762473[i_469762473_Idx] += 1;
+        }
+    } while (false);
+      if (!((i_469762473[i_469762473_Idx] + 3) < (s_469762472).length)) Temporary6 = false; else {        Temporary6 = (s_469762472[(i_469762473[i_469762473_Idx] + 0)] == 110);      }      if (!Temporary6) Temporary5 = false; else {        Temporary5 = (s_469762472[(i_469762473[i_469762473_Idx] + 1)] == 117);      }      if (!Temporary5) Temporary4 = false; else {        Temporary4 = (s_469762472[(i_469762473[i_469762473_Idx] + 2)] == 108);      }      if (!Temporary4) Temporary3 = false; else {        Temporary3 = (s_469762472[(i_469762473[i_469762473_Idx] + 3)] == 108);      }    if (Temporary3) {
+    i_469762473[i_469762473_Idx] += 4;
+    break BeforeRet;
+    }
+    
+    Label7: do {
+        Label8: while (true) {
+        if (!(i_469762473[i_469762473_Idx] < (s_469762472).length)) break Label8;
+          var cHEX60gensym36_469762490 = s_469762472[i_469762473[i_469762473_Idx]];
+          if (!((whiteSpace_637534219[cHEX60gensym36_469762490] != undefined))) {
+          break Label7;
+          }
+          
+          i_469762473[i_469762473_Idx] += 1;
+        }
+    } while (false);
+    if (((s_469762472).length <= i_469762473[i_469762473_Idx])) {
+    raiseException({message: (makeNimstrLit("Expected { but end reached. At offset: ") || []).concat(HEX24_335544323(i_469762473[i_469762473_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    }
+    
+    if ((s_469762472[i_469762473[i_469762473_Idx]] == 123)) {
+    i_469762473[i_469762473_Idx] += 1;
+    }
+    else {
+      raiseException({message: (makeNimstrLit("Expected { but got ") || []).concat([s_469762472[i_469762473[i_469762473_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_469762473[i_469762473_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    }
+    
+    parseObjectInner_469762519(s_469762472, i_469762473, i_469762473_Idx, v_469762474);
+    Label9: do {
+        Label10: while (true) {
+        if (!(i_469762473[i_469762473_Idx] < (s_469762472).length)) break Label10;
+          var cHEX60gensym99_469762654 = s_469762472[i_469762473[i_469762473_Idx]];
+          if (!((whiteSpace_637534219[cHEX60gensym99_469762654] != undefined))) {
+          break Label9;
+          }
+          
+          i_469762473[i_469762473_Idx] += 1;
+        }
+    } while (false);
+    if (((s_469762472).length <= i_469762473[i_469762473_Idx])) {
+    raiseException({message: (makeNimstrLit("Expected } but end reached. At offset: ") || []).concat(HEX24_335544323(i_469762473[i_469762473_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    }
+    
+    if ((s_469762472[i_469762473[i_469762473_Idx]] == 125)) {
+    i_469762473[i_469762473_Idx] += 1;
+    }
+    else {
+      raiseException({message: (makeNimstrLit("Expected } but got ") || []).concat([s_469762472[i_469762473[i_469762473_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_469762473[i_469762473_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    }
+    
+  } while (false);
+
+  
+}
+
+function parseHook_469762438(s_469762440, i_469762441, i_469762441_Idx, v_469762442, v_469762442_Idx) {
+            var Temporary7;
+            var Temporary11;
+
+    Label1: do {
+        Label2: while (true) {
+        if (!(i_469762441[i_469762441_Idx] < (s_469762440).length)) break Label2;
+          var cHEX60gensym14_469762444 = s_469762440[i_469762441[i_469762441_Idx]];
+          if (!((whiteSpace_637534219[cHEX60gensym14_469762444] != undefined))) {
+          break Label1;
+          }
+          
+          i_469762441[i_469762441_Idx] += 1;
+        }
+    } while (false);
+    if (((s_469762440).length <= i_469762441[i_469762441_Idx])) {
+    raiseException({message: (makeNimstrLit("Expected [ but end reached. At offset: ") || []).concat(HEX24_335544323(i_469762441[i_469762441_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    }
+    
+    if ((s_469762440[i_469762441[i_469762441_Idx]] == 91)) {
+    i_469762441[i_469762441_Idx] += 1;
+    }
+    else {
+      raiseException({message: (makeNimstrLit("Expected [ but got ") || []).concat([s_469762440[i_469762441[i_469762441_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_469762441[i_469762441_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    }
+    
+    Label3: do {
+        Label4: while (true) {
+        if (!(i_469762441[i_469762441_Idx] < (s_469762440).length)) break Label4;
+          Label5: do {
+              Label6: while (true) {
+              if (!(i_469762441[i_469762441_Idx] < (s_469762440).length)) break Label6;
+                var cHEX60gensym24_469762460 = s_469762440[i_469762441[i_469762441_Idx]];
+                if (!((whiteSpace_637534219[cHEX60gensym24_469762460] != undefined))) {
+                break Label5;
+                }
+                
+                i_469762441[i_469762441_Idx] += 1;
+              }
+          } while (false);
+            if (!(i_469762441[i_469762441_Idx] < (s_469762440).length)) Temporary7 = false; else {              Temporary7 = (s_469762440[i_469762441[i_469762441_Idx]] == 93);            }          if (Temporary7) {
+          break Label3;
+          }
+          
+          var element_469762469 = [({title: [], slug: [], contentTokens: []})];
+          parseHook_469762470(s_469762440, i_469762441, i_469762441_Idx, element_469762469[0]);
+          var Temporary8 = nimCopy(null, element_469762469[0], NTI1392508932);
+          v_469762442[v_469762442_Idx].push(Temporary8);;
+          Label9: do {
+              Label10: while (true) {
+              if (!(i_469762441[i_469762441_Idx] < (s_469762440).length)) break Label10;
+                var cHEX60gensym109_469762674 = s_469762440[i_469762441[i_469762441_Idx]];
+                if (!((whiteSpace_637534219[cHEX60gensym109_469762674] != undefined))) {
+                break Label9;
+                }
+                
+                i_469762441[i_469762441_Idx] += 1;
+              }
+          } while (false);
+            if (!(i_469762441[i_469762441_Idx] < (s_469762440).length)) Temporary11 = false; else {              Temporary11 = (s_469762440[i_469762441[i_469762441_Idx]] == 44);            }          if (Temporary11) {
+          i_469762441[i_469762441_Idx] += 1;
+          }
+          else {
+            break Label3;
+          }
+          
+        }
+    } while (false);
+    Label12: do {
+        Label13: while (true) {
+        if (!(i_469762441[i_469762441_Idx] < (s_469762440).length)) break Label13;
+          var cHEX60gensym114_469762688 = s_469762440[i_469762441[i_469762441_Idx]];
+          if (!((whiteSpace_637534219[cHEX60gensym114_469762688] != undefined))) {
+          break Label12;
+          }
+          
+          i_469762441[i_469762441_Idx] += 1;
+        }
+    } while (false);
+    if (((s_469762440).length <= i_469762441[i_469762441_Idx])) {
+    raiseException({message: (makeNimstrLit("Expected ] but end reached. At offset: ") || []).concat(HEX24_335544323(i_469762441[i_469762441_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    }
+    
+    if ((s_469762440[i_469762441[i_469762441_Idx]] == 93)) {
+    i_469762441[i_469762441_Idx] += 1;
+    }
+    else {
+      raiseException({message: (makeNimstrLit("Expected ] but got ") || []).concat([s_469762440[i_469762441[i_469762441_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_469762441[i_469762441_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    }
+    
+
+  
+}
+
+function fromJson_469762431(s_469762434) {
+  var result_469762436 = [[]];
+
+    var i_469762437 = [0];
+    parseHook_469762438(s_469762434, i_469762437, 0, result_469762436, 0);
+
+  return result_469762436[0];
+
+}
+
+function onDOMLoaded(e_469762425) {
+    rawEcho(makeNimstrLit("loaded"));
+    var seachContainer_469762426 = document.getElementById("search-container");
+    var searchResults_469762427 = document.createElement("div");
+    searchResults_469762427.id = "search-results";
+    var seachInp_469762428 = document.createElement("input");
+    seachInp_469762428.setAttribute("type", "text");
+    seachInp_469762428.setAttribute("placeholder", "Search");
+    var dbString_469762429 = null;
+        var request = new XMLHttpRequest();
+    request.open("GET", "search.json", false);
+    request.send(null);
+    dbString_469762429 = request.responseText
+  
+    var s_469762430 = cstrToNimstr(dbString_469762429);
+    searchDB_469762055[0] = nimCopy(null, fromJson_469762431(s_469762430), NTI1392508934);
+    seachInp_469762428.addEventListener("keyup", onInput, false);
+    seachContainer_469762426.appendChild(seachInp_469762428);
+    seachContainer_469762426.appendChild(searchResults_469762427);
+
+  
+}
+window.addEventListener("DOMContentLoaded", onDOMLoaded, false);
diff --git a/search.json b/search.json
new file mode 100644
index 0000000..82dbaaa
--- /dev/null
+++ b/search.json
@@ -0,0 +1 @@
+[{"title": "docs/api.md", "slug": "api.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# API", "", "### General Guide", "", "commitlog also comes as a pkg that you could reuse to modify the behaviour of", "the commands and this is very limited at the moment since I'm still working on", "the best way to get plugins to work with the original CLI instead of having to", "write your own version of commitlog.", "", "The pkg contains the 2 base command's creators and behaviour modifiers", " or more", "commonly known as the golang options pattern.", "", "Briefly put", " You have one function that takes in unlimited amount of functions", "as parameter with each of these parameter functions being able to modify the", "behaviour of the returned instance.", "", "Easy way to explain this is with an example of the `releaser` API", "", "```go", "package main", "", "import (", "", "\"log\"", "", "", "\"github.com/barelyhuman/commitlog/pkg\"", ")", "", "func main() {", "", "versionString := \"v0.0.1\"", "", "releaser", " _ := pkg.CreateNewReleaser(", "", "", "versionString", "", "", "", "pkg.WithMajorIncrement()", "", "", ")", "", "", "log.Println(releaser.String())", "", "}", "```", "", "here the `pkg.CreateNewReleaser` takes in one mandatory value which is the", "`versionString` and the 2nd parameter is optional here.", "", "Though", " since we wish for the releaser to have a custom behaviour everytime the", "flags change", " instead of writing entire functionalities inside various releaser", "functions", " which would look like so", "", "```go", "releaser.IncrementMajor()", "releaser.IncrementMinor()", "```", "", "I'd be unable to expose the builders / option functions out to the public for", "them to write custom behaviours that work directly with the `struct` being used", "by commitlog itself and instead you'd be writing wrappers around existing", "functions. Thus", " adding another layer of abstraction which isn't needed for", "something that wants to be extended.", "", "This approach gives me the ability to expose a selected few properties for you", "to modify while writing your own builder/option function.", "", "The only pointer functions that releaser has is the one's that'll help with", "printing or identifying the final version's state.", "", "Since", " you now know how the API is written", " the go doc for this module should be", "able to help you with the remaining.", "", "[godoc&nearr;](https://pkg.go.dev/github.com/barelyhuman/commitlog)", "", "> **Note**: if the go doc still hasn't been generated for v2.0.0", " please go", "> through the source code to help you with the implementation details", ""]}, {"title": "docs/index.md", "slug": "index.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Index", "", "- [Source](https://github.com/barelyhuman/commitlog)", "- [Quick Start](#quick-start)", "- [About](#about)", "  - [Philosophy](#philosophy)", "  - [Installation](#installation)", "- [Manual](/commitlog/manual)", "- [License](#license)", "", "<h4 id=\"quick-start\">Quick Start</h4>", "", "For the one's who already know the tool and wanna get started quickly.", "", "You can get the CLI in the following ways", "", "1. You can get the binaries from the [download section](/commitlog/download)", "", "2. Using `go get`", "", "```sh", "go get -u github.com/barelyhuman/commitlog", "```", "", "3. Using goblin", "", "```sh", "curl -sf https://goblin.barelyhuman.xyz/github.com/barelyhuman/commitlog | sh", "```", "", "Once installed you can just run `commitlog generate` or the shorter version", "`commitlog g` to get all the changes between the recent tags.", "", "<h4 id=\"about\">About</h4>", "", "<h5 id=\"philosophy\">Philosophy</h5>", "", "**_commitlog_** simply exists because I wasn't able to find a decent enough tool", "to do this without being bound to a specific programming language and it's", "toolset. The closes one to this is the `git`'s own `shortlog` and `log` commands", "", "- **Language Agnostic** - No one needs the entire programming toolset or the", "  language to be setup on the system to be able to just generate logs", "", "- **Decently Sized** - Not everyone has a powerful system and CI systems are", "  still very limited in terms of resources since they give you shared spaces and", "  automating generating this is a common practice so it doesn't make sense for", "  it to install a runtime worth 100MB to run it.", "", "  The binary itself is around 10-13MB which is fairly big for a tool like this", "  but this is due to go's nature of embedding the platform runtime with the", "  binary and this might not be ideal for some and so there's another similar", "  smaller scoped version [nimclog](https://github.com/barelyhuman/nimclog) which", "  is in KB's", "", "- **Flexible** - There are no set standards for how you write commit messages.", "  Commitlint is a good standard and pretty widely used and also what commitlog", "  v1 used as the base for categorizing.", "", "  V2 however", " doesn't have a set commit category standard", " it accepts regex's", "  that you will categorize your commits for you.", "", "  This is more for experienced developers who have a their own pattern of", "  writing commits and would like a tool that'd work with their pattern instead", "  of creating friction", "", "- **Extensible** - The entire thing is open source and MIT licenses", "", "  specifically for you to be able to fix and add things as needed. Each command", "  has been kept away from the domain logic to be able to use `commitlog` even as", "  a library and build your own tool if you wish to", " though if there's something", "  you wish the CLI supported", " you are free to open issues and I really like", "  people helping with the development since that helps keeping the tool alive", "  longer.", "", "<h5 id=\"installation\">Installation</h5>", "", "The installation is pretty straightforwad. You [download](/commitlog/download) the binary", "from the download section of this website or use something like", "[goblin](https://goblin.barelyhuman.xyz) to build the binary for your specific", "system (rarely needed) since the releases actually accommodate the most used", "operating systems and architectures already.", "", "**Linux/Mac (Unix Systems)**", "", "Once downloaded", " you can use the `install` command on *nix systems to link the", "binary to a location that's already in your PATH variable.", "", "eg:", "", "```bash", "# install commitlog from current directory to the /usr/local/bin directory", "install $(pwd)/commitlog /usr/local/bin", "```", "", "This should give you the ability to use the `commitlog` command anywhere in your", "system", "", "**Windows**", "", "Similar to the linux setup", " you can download the `.exe` file and add it to a", "location that your environment path already has. An easier thing to do is to", "store the entire thing in your secondary partition and add that location to your", "PATH. You can use this resource from Java docs to help you with modifying the", "PATH variables", "", "- [Modifying PATH in Windows](https://www.java.com/en/download/help/path.html)", "", "<h4 id=\"manual\">Manual</h4>", "", "[Read Manual &rarr;](/commitlog/manual)", "", "<h4 id=\"license\">License</h4>", "", "commitlog is MIT Licensed and you can read the entire license in the", "[source code](https://github.com/barelyhuman/commitlog)", ""]}, {"title": "docs/download.md", "slug": "download.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | downloads", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Downloads", "", "[commitlog-v2.0.2-darwin-amd64.tar.gz](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-amd64.tar.gz\")    ", "[commitlog-v2.0.2-darwin-amd64.tar.gz.md5](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-amd64.tar.gz.md5\")    ", "[commitlog-v2.0.2-darwin-arm64.tar.gz](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-arm64.tar.gz\")    ", "[commitlog-v2.0.2-darwin-arm64.tar.gz.md5](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-arm64.tar.gz.md5\")    ", "[commitlog-v2.0.2-linux-386.tar.gz](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-386.tar.gz\")    ", "[commitlog-v2.0.2-linux-386.tar.gz.md5](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-386.tar.gz.md5\")    ", "[commitlog-v2.0.2-linux-amd64.tar.gz](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-amd64.tar.gz\")    ", "[commitlog-v2.0.2-linux-amd64.tar.gz.md5](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-amd64.tar.gz.md5\")    ", "[commitlog-v2.0.2-linux-arm64.tar.gz](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-arm64.tar.gz\")    ", "[commitlog-v2.0.2-linux-arm64.tar.gz.md5](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-arm64.tar.gz.md5\")    ", "[commitlog-v2.0.2-windows-386.zip](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-386.zip\")    ", "[commitlog-v2.0.2-windows-386.zip.md5](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-386.zip.md5\")    ", "[commitlog-v2.0.2-windows-amd64.zip](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-amd64.zip\")    ", "[commitlog-v2.0.2-windows-amd64.zip.md5](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-amd64.zip.md5\")    ", ""]}, {"title": "docs/manual.md", "slug": "manual.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# Manual", "", "- [Basics](#basics)", "  - [generate](#generate)", "  - [release](#release)", "- [Advanced](#advanced)", "  - [Selective Log Ranges](#selective-log-ranges)", "  - [From a different repo](#from-a-different-repo)", "  - [Categorize](#categorize)", "- [CLI](#cli)", "- [API](/commitlog/api)", "", "<h3 id=\"basics\">Basics</h3>", "", "**_`commitlog`_** come with 2 basic functionalities", "", "- Generating commits as changelogs in markdown", "- Managing your version and tags", "", "Both the above are available as sub commands and we'll go through each one by", "one.", "", "Just running `commitlog` no longer works as it did in v1", " you'll need to specify", "a sub command to get it working.", "", "This has been done to keep it simpler to keep arbitrary behaviour to a minimum", "", "<h4 id=\"generate\">generate</h3>", "", "The first one is `generate` and in most cases you'll just be using this to", "handle generation of commits as a list of markdown notes", "", "Here's an example of what it'll look like to run the `generate` sub-command", "", "```sh", "$ commitlog generate", "# or ", "$ commitlog g", "```", "", "**Output**:", "", "```md", "## All Changes", "87ce3fc76b252908cdd81f9537713f8d67813652 chore: v2.0.0-beta.0", "", "09fc85c0d1d52d770bbbf39ac45907103a53d354 refactor: swap go-git for push with exec", "", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "909fd032facdeb4fb7633a4fad82dced28e8de83 chore: swap debugging logger with stderr printer", "<!-- .... more commits till the end of tag -->", "```", "", "The behaviour of the `generate` command is like so", "", "- go through all commits from the current `HEAD` (commit with the `HEAD`", "  reference) till the last commit or the most recent tagged commit.", "- the other case is where if the latest commit is also a tagged commit", " it'll", "  still go till the most recent tagged commit.", "", "  eg: v0.0.2 -> HEAD", " v0.0.1 -> SOMEHASH", " would give you the commits between", "  both the tags.", "", "The default behaviour of **_commitlog_** is to print to the stdout of your", "terminal which might not be what you wish to do.", "", "So", " if you wish to ever write to a file ", " you can use the `--out FILE` flag to", "write the output to a file instead.", "", "```sh", "$ commitlog g -o ./CHANGELOG.md", "```", "", "> **Note**: commitlog will overwrite the file with the new output", " make sure you", "> create a backup of the file when working with this.", "", "> **Note**: In coming versions an append mode will be added to the CLI to avoid", "> having to deal with this manually", "", "<h4 id=\"release\">release</h3>", "", "The `release` sub-command is a complimentary sub-command added to commitlog to", "help you with managing release versions. I understand that most languages have", "their own package version management and you might want to work with them but", "that's also why the `release` sub-command isn't something you need", " it's there", "for cases where you might wanna use it.", "", "My primary usecase is when working with repositories that work with multiple", "languages and I'd prefer a unified version.", "", "The `release` command doesn't modify your source code files but instead handles", "the version with it's own file named `.commitlog.release`", " which just holds the", "**version** number right now and while this does have the X.X.X format (semantic", "versioning format) the increments or how you handle them doesn't have to be.", "", "The command is flexible enough for you to combine and create your own way of", "versioning.", "", "##### Initialize", "", "```sh", "$ commitlog release --init", "# or ", "$ commitlog r --init", "```", "", "Once initialized", " you'll see a `.commitlog.release` file in your repo with the", "version `v0.0.0` to start with.", "", "##### Increments", "", "Post that you can use the remaining flags to help you incrementing the version", "as needed.", "", "```sh", "$ commitlog r --major # change to v1.0.0", "$ commitlog r --minor # change to v0.1.0", "$ commitlog r --patch # change to v0.0.1", "$ commitlog r --pre # change to v0.0.0-beta.0", "$ commitlog r --pre --pre-tag=\"dev\" # change to v0.0.0-dev.0", "", "# or go bonkers ", "$ commitlog r --patch --pre --pre-tag=\"dev\" # change to v0.0.1-dev.0", "$ commitlog r --major --patch --pre --pre-tag=\"dev\" # change to v1.0.1-dev.0", "```", "", "#### Git actions", "", "Most times you'd also want a tool like this to create commits and tags for you", "which is fair", " so `release` does come with a few git actions.", "", "- `--commit` (will create a commit and tag it for you)", "- `--push` (will push the commits and tags for you)", "", "The whole command would look a little something like this", "", "```sh", "$ commitlog r --patch --commit --push", "```", "", "<h3 id=\"advanced\">Advanced</h3>", "", "These are not really hard to guess or achieve but are in the advanced section as", "this isn't something a beginner user might need to mess with. If you have other", "use cases that you feel like should be added here", " raise a issue.", "", "<h4 id=\"selective-log-ranges\">Selective Log Ranges</h4>", "There's enough cases where the entire history between the tags makes no sense. You might just want a specific set of commits and this is very easy to do with commitlog", "", "```sh", "$ commitlog g --start HEAD --end HEAD~3 ", "# would return the last 3 commits", "```", "", "And as you might have understood", " commitlog does work with git's revision system", "so you can reuse git's own revision pointers as needed. Though it's mostly", "easier to just use the HASH since", " finding the hashes in `git log` is easier", "than finding the number you have to type after the `HEAD~`", "", "<h4 id=\"from-a-different-repo\">From a different repo</h4>", "A lot more often you might need to generate logs for a sub-repo when working with a huge multirepo folder which a lot of sub-modules and switching worktree for the changelog might not be something you wish to do.", "", "In cases like these the `-p` or `--path` flag can be used with the `generate`", "flag", "", "```sh", "$ commitlog g -p ./sub/module -s HEAD~3 ", "# would return the commits from HEAD~3 to the next tag or end of all commits.", "```", "", "<h4 id=\"categorize\">Categorize</h4>", "You wouldn't be using commitlog otherwise so this obviously has to exist.", "", "As for why is this turned off by default? I just don't use commit standards and", "mostly just need the commits between tags and very rarely need the categories to", "help me but doesn't change the fact that someone else might need it.", "", "So", " how does commitlog categorize? using regex's ", " or more like comma seperated", "regex's.", "", "The implementation approach might bring some issue but I'm going to wait for", "them instead of over fixing something that might never really happen.", "", "Anyway", " a simple example for a non-scoped commitlint styled categorization would", "look something like this .", "", "```sh", "$ commitlog g --categories=\"feat:", "fix:\"", "```", "", "**Output:**", "", "```md", "## feat:", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## fix:", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "```", "", "This could be made a little more neater using a better regex like so", "", "```sh", "$ commitlog g --categories=\"^feat", "^fix\"", "```", "", "**Output**:", "", "```md", "## ^feat", "e0ce9c693c554158b7b4841b799524164d9c3e83 feat(releaser): add init and pre-tag handlers", "", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## ^fix", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "540bb3d7419aab314fdb999dd57eeac3c53f5fad fix doc generation", "", "87d40ddbd463ad71b3af8b7edb8ac8176ecbf2f5 fix tests for new param", "```", "", "As visible", " you find more commits in the 2nd one since the regex matches more", "cases and gives you more information. You are free to modify these to make them", "work with other patterns that you might follow.", "", "Also the titles are going to be the regex's you pass. A future version will add", "a way for you to add label's to the regex though that's a little harder to", "achieve without making the flags very verbose so I've avoided it for now.", "", "> **Note**: This is the initial implementation of this and might change in a", "> future major version since this flag feels a little more frictional than the", "> other approaches I have in mind. Feel free to recommend other ways to do this.", "", "<h3 id=\"cli\">CLI</h3>", "", "This is the entire CLI reference", " which you can also access by using the `-h`", "flag on the downloaded binary.", "", "**`commitlog -h`**", "", "```", "NAME:", "   commitlog - commits to changelogs", "", "USAGE:", "   commitlog [global options] command [command options] [arguments...]", "", "COMMANDS:", "   generate", " g  commits to changelogs", "   release", " r   manage .commitlog.release version", "   help", " h      Shows a list of commands or help for one command", "", "GLOBAL OPTIONS:", "   --help", " -h  show help (default: false)", "```", "", "---", "", "**`commitlog g -h`**", "", "```", "NAME:", "   commitlog generate - commits to changelogs", "", "USAGE:", "   commitlog generate [command options] [arguments...]", "", "OPTIONS:", "   --categories value       categories to use", " includes all commits by default. any text you add here will be used to create categories out of the commits", "   --end END", " -e END        END reference for the commit to stop including commits at.This is exclusive of the given commit reference", "   --out FILE", " -o FILE      path to the output FILE", "   --path PATH", " -p PATH     root with the '.git' folder PATH (default: \".\")", "   --promo                  add promo text to the end of output (default: false)", "   --start START", " -s START  START reference for the commit to include commits from", "This is inclusive of the given commit reference", "   --stdio                  print to the stdout (default: true)", "```", "", "---", "", "**`commitlog r -h`**", "", "```", "NAME:", "   commitlog release - manage .commitlog.release version", "", "USAGE:", "   commitlog release [command options] [arguments...]", "", "OPTIONS:", "   --commit              if true will create a commit and tag", " of the changed version (default: false)", "   --init                initialise commitlog release (default: false)", "   --major               create a major version (default: false)", "   --minor               create a minor version (default: false)", "   --patch               create a patch version (default: false)", "   --path PATH", " -p PATH  PATH to a folder where .commitlog.release exists or is to be created.(note: do not use `--commit` or `--push` if the file isn't in the root) (default: \".\")", "   --pre                 create a pre-release version. will default to patch increment unlessspecified and not already a pre-release (default: false)", "   --pre-tag value       create a pre-release version (default: \"beta\")", "   --push                if true will create push the created release commit + tag on origin (default: false)", "```", ""]}]
\ No newline at end of file
diff --git a/styles.html b/styles.html
deleted file mode 100644
index 737342b..0000000
--- a/styles.html
+++ /dev/null
@@ -1,110 +0,0 @@
-  <head>
-    <link rel="stylesheet" href="style.css" />
-  </head>
-    <body>
-  <div class="layout-container">
-  <section><p>@import url(&quot;https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;600;700&amp;display=swap&quot;);</p>
-<p>:root {
---base: #fff;
---surface: #efefef;
---text: #333;
---muted: #444;
---accent: dodgerblue;
-}</p>
-<p>@media (prefers-color-scheme: dark) {
-:root {
---base: #111;
---surface: #333;
---text: #eee;
---muted: #ddd;
---accent: dodgerblue;
-}
-}</p>
-<p>html,
-body {
-background: var(--base);
-}</p>
-<p>html {
-font-size: 87.5%;
-/<em>14px</em>/
-}</p>
-<p>body {
-max-width: 100ch;
-margin: 0 auto;
-padding: 1em;
-color: var(--text);
-font-family: &quot;Fira Code&quot;, monospace;
-font-weight: 400;
-line-height: 1.75;
-}</p>
-<p>h1,
-h2,
-h3,
-h4,
-h5 {
-margin: 3rem 0 1.38rem;
-font-family: &quot;Fira Code&quot;, monospace;
-font-weight: 400;
-line-height: 1.3;
-}</p>
-<p>h1 {
-margin-top: 0;
-font-size: 3.052rem;
-}</p>
-<p>h2 {
-font-size: 2.441rem;
-}</p>
-<p>h3 {
-font-size: 1.953rem;
-}</p>
-<p>h4 {
-font-size: 1.563rem;
-}</p>
-<p>h5 {
-font-size: 1.25rem;
-}</p>
-<p>small,
-.text_small {
-font-size: 0.8rem;
-}</p>
-<p>pre,
-code {
-font-size: 1rem;
-}</p>
-<p>code {
-padding: 5px;
-border: 1px solid var(--surface);
-}</p>
-<p>pre {
-white-space: pre-wrap;
-padding: 10px;
-border: 1px solid var(--surface);
-}</p>
-<p>pre&gt;code {
-padding: 0px;
-border: 0px;
-}</p>
-<p>a {
-color: inherit;
-text-underline-offset: 4px;
-}</p>
-<p>a:hover {
-color: var(--accent);
-}</p>
-<p>hr {
-border: 0px;
-border-top: 1px solid var(--surface);
-}</p>
-<p>blockquote {
-margin: 0px;
-padding: 0px;
-border-left: 2px solid var(--muted);
-padding-left: 10px;
-}</p>
-</section></div>
-  <script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
-  <script>
-    hljs.highlightAll();
-  </script>
-  </body>
-  
\ No newline at end of file

From 9b6220a0c5513677ec2a48517780a41ab424ab5a Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Tue, 24 Jan 2023 17:37:40 +0000
Subject: [PATCH 20/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@d43b5f170e1e8de7ec197fe934163d72e4134fdc=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 download.html | 28 ++++++++++++++--------------
 search.json   |  2 +-
 2 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/download.html b/download.html
index bdf18dc..6004f56 100644
--- a/download.html
+++ b/download.html
@@ -7,18 +7,18 @@
 <h3><a href="/commitlog/">commitlog</a></h3>
 <p><a href="/commitlog/">Home</a> <a href="/commitlog/manual">Manual</a> <a href="/commitlog/download">Download</a> <a href="/commitlog/api">API</a></p>
 <h4>Downloads</h4>
-<p><a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-amd64.tar.gz%22">commitlog-v2.0.2-darwin-amd64.tar.gz</a><br />
-<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-amd64.tar.gz.md5%22">commitlog-v2.0.2-darwin-amd64.tar.gz.md5</a><br />
-<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-arm64.tar.gz%22">commitlog-v2.0.2-darwin-arm64.tar.gz</a><br />
-<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-arm64.tar.gz.md5%22">commitlog-v2.0.2-darwin-arm64.tar.gz.md5</a><br />
-<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-386.tar.gz%22">commitlog-v2.0.2-linux-386.tar.gz</a><br />
-<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-386.tar.gz.md5%22">commitlog-v2.0.2-linux-386.tar.gz.md5</a><br />
-<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-amd64.tar.gz%22">commitlog-v2.0.2-linux-amd64.tar.gz</a><br />
-<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-amd64.tar.gz.md5%22">commitlog-v2.0.2-linux-amd64.tar.gz.md5</a><br />
-<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-arm64.tar.gz%22">commitlog-v2.0.2-linux-arm64.tar.gz</a><br />
-<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-arm64.tar.gz.md5%22">commitlog-v2.0.2-linux-arm64.tar.gz.md5</a><br />
-<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-386.zip%22">commitlog-v2.0.2-windows-386.zip</a><br />
-<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-386.zip.md5%22">commitlog-v2.0.2-windows-386.zip.md5</a><br />
-<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-amd64.zip%22">commitlog-v2.0.2-windows-amd64.zip</a><br />
-<a href="%22https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-amd64.zip.md5%22">commitlog-v2.0.2-windows-amd64.zip.md5</a></p>
+<p><a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-amd64.tar.gz">commitlog-v2.0.2-darwin-amd64.tar.gz</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-amd64.tar.gz.md5">commitlog-v2.0.2-darwin-amd64.tar.gz.md5</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-arm64.tar.gz">commitlog-v2.0.2-darwin-arm64.tar.gz</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-arm64.tar.gz.md5">commitlog-v2.0.2-darwin-arm64.tar.gz.md5</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-386.tar.gz">commitlog-v2.0.2-linux-386.tar.gz</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-386.tar.gz.md5">commitlog-v2.0.2-linux-386.tar.gz.md5</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-amd64.tar.gz">commitlog-v2.0.2-linux-amd64.tar.gz</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-amd64.tar.gz.md5">commitlog-v2.0.2-linux-amd64.tar.gz.md5</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-arm64.tar.gz">commitlog-v2.0.2-linux-arm64.tar.gz</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-arm64.tar.gz.md5">commitlog-v2.0.2-linux-arm64.tar.gz.md5</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-386.zip">commitlog-v2.0.2-windows-386.zip</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-386.zip.md5">commitlog-v2.0.2-windows-386.zip.md5</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-amd64.zip">commitlog-v2.0.2-windows-amd64.zip</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-amd64.zip.md5">commitlog-v2.0.2-windows-amd64.zip.md5</a></p>
 </section></div><script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script><script>hljs.highlightAll()</script><script src="mudkip.js"></script></body></html>
\ No newline at end of file
diff --git a/search.json b/search.json
index 82dbaaa..e7196a9 100644
--- a/search.json
+++ b/search.json
@@ -1 +1 @@
-[{"title": "docs/api.md", "slug": "api.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# API", "", "### General Guide", "", "commitlog also comes as a pkg that you could reuse to modify the behaviour of", "the commands and this is very limited at the moment since I'm still working on", "the best way to get plugins to work with the original CLI instead of having to", "write your own version of commitlog.", "", "The pkg contains the 2 base command's creators and behaviour modifiers", " or more", "commonly known as the golang options pattern.", "", "Briefly put", " You have one function that takes in unlimited amount of functions", "as parameter with each of these parameter functions being able to modify the", "behaviour of the returned instance.", "", "Easy way to explain this is with an example of the `releaser` API", "", "```go", "package main", "", "import (", "", "\"log\"", "", "", "\"github.com/barelyhuman/commitlog/pkg\"", ")", "", "func main() {", "", "versionString := \"v0.0.1\"", "", "releaser", " _ := pkg.CreateNewReleaser(", "", "", "versionString", "", "", "", "pkg.WithMajorIncrement()", "", "", ")", "", "", "log.Println(releaser.String())", "", "}", "```", "", "here the `pkg.CreateNewReleaser` takes in one mandatory value which is the", "`versionString` and the 2nd parameter is optional here.", "", "Though", " since we wish for the releaser to have a custom behaviour everytime the", "flags change", " instead of writing entire functionalities inside various releaser", "functions", " which would look like so", "", "```go", "releaser.IncrementMajor()", "releaser.IncrementMinor()", "```", "", "I'd be unable to expose the builders / option functions out to the public for", "them to write custom behaviours that work directly with the `struct` being used", "by commitlog itself and instead you'd be writing wrappers around existing", "functions. Thus", " adding another layer of abstraction which isn't needed for", "something that wants to be extended.", "", "This approach gives me the ability to expose a selected few properties for you", "to modify while writing your own builder/option function.", "", "The only pointer functions that releaser has is the one's that'll help with", "printing or identifying the final version's state.", "", "Since", " you now know how the API is written", " the go doc for this module should be", "able to help you with the remaining.", "", "[godoc&nearr;](https://pkg.go.dev/github.com/barelyhuman/commitlog)", "", "> **Note**: if the go doc still hasn't been generated for v2.0.0", " please go", "> through the source code to help you with the implementation details", ""]}, {"title": "docs/index.md", "slug": "index.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Index", "", "- [Source](https://github.com/barelyhuman/commitlog)", "- [Quick Start](#quick-start)", "- [About](#about)", "  - [Philosophy](#philosophy)", "  - [Installation](#installation)", "- [Manual](/commitlog/manual)", "- [License](#license)", "", "<h4 id=\"quick-start\">Quick Start</h4>", "", "For the one's who already know the tool and wanna get started quickly.", "", "You can get the CLI in the following ways", "", "1. You can get the binaries from the [download section](/commitlog/download)", "", "2. Using `go get`", "", "```sh", "go get -u github.com/barelyhuman/commitlog", "```", "", "3. Using goblin", "", "```sh", "curl -sf https://goblin.barelyhuman.xyz/github.com/barelyhuman/commitlog | sh", "```", "", "Once installed you can just run `commitlog generate` or the shorter version", "`commitlog g` to get all the changes between the recent tags.", "", "<h4 id=\"about\">About</h4>", "", "<h5 id=\"philosophy\">Philosophy</h5>", "", "**_commitlog_** simply exists because I wasn't able to find a decent enough tool", "to do this without being bound to a specific programming language and it's", "toolset. The closes one to this is the `git`'s own `shortlog` and `log` commands", "", "- **Language Agnostic** - No one needs the entire programming toolset or the", "  language to be setup on the system to be able to just generate logs", "", "- **Decently Sized** - Not everyone has a powerful system and CI systems are", "  still very limited in terms of resources since they give you shared spaces and", "  automating generating this is a common practice so it doesn't make sense for", "  it to install a runtime worth 100MB to run it.", "", "  The binary itself is around 10-13MB which is fairly big for a tool like this", "  but this is due to go's nature of embedding the platform runtime with the", "  binary and this might not be ideal for some and so there's another similar", "  smaller scoped version [nimclog](https://github.com/barelyhuman/nimclog) which", "  is in KB's", "", "- **Flexible** - There are no set standards for how you write commit messages.", "  Commitlint is a good standard and pretty widely used and also what commitlog", "  v1 used as the base for categorizing.", "", "  V2 however", " doesn't have a set commit category standard", " it accepts regex's", "  that you will categorize your commits for you.", "", "  This is more for experienced developers who have a their own pattern of", "  writing commits and would like a tool that'd work with their pattern instead", "  of creating friction", "", "- **Extensible** - The entire thing is open source and MIT licenses", "", "  specifically for you to be able to fix and add things as needed. Each command", "  has been kept away from the domain logic to be able to use `commitlog` even as", "  a library and build your own tool if you wish to", " though if there's something", "  you wish the CLI supported", " you are free to open issues and I really like", "  people helping with the development since that helps keeping the tool alive", "  longer.", "", "<h5 id=\"installation\">Installation</h5>", "", "The installation is pretty straightforwad. You [download](/commitlog/download) the binary", "from the download section of this website or use something like", "[goblin](https://goblin.barelyhuman.xyz) to build the binary for your specific", "system (rarely needed) since the releases actually accommodate the most used", "operating systems and architectures already.", "", "**Linux/Mac (Unix Systems)**", "", "Once downloaded", " you can use the `install` command on *nix systems to link the", "binary to a location that's already in your PATH variable.", "", "eg:", "", "```bash", "# install commitlog from current directory to the /usr/local/bin directory", "install $(pwd)/commitlog /usr/local/bin", "```", "", "This should give you the ability to use the `commitlog` command anywhere in your", "system", "", "**Windows**", "", "Similar to the linux setup", " you can download the `.exe` file and add it to a", "location that your environment path already has. An easier thing to do is to", "store the entire thing in your secondary partition and add that location to your", "PATH. You can use this resource from Java docs to help you with modifying the", "PATH variables", "", "- [Modifying PATH in Windows](https://www.java.com/en/download/help/path.html)", "", "<h4 id=\"manual\">Manual</h4>", "", "[Read Manual &rarr;](/commitlog/manual)", "", "<h4 id=\"license\">License</h4>", "", "commitlog is MIT Licensed and you can read the entire license in the", "[source code](https://github.com/barelyhuman/commitlog)", ""]}, {"title": "docs/download.md", "slug": "download.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | downloads", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Downloads", "", "[commitlog-v2.0.2-darwin-amd64.tar.gz](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-amd64.tar.gz\")    ", "[commitlog-v2.0.2-darwin-amd64.tar.gz.md5](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-amd64.tar.gz.md5\")    ", "[commitlog-v2.0.2-darwin-arm64.tar.gz](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-arm64.tar.gz\")    ", "[commitlog-v2.0.2-darwin-arm64.tar.gz.md5](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-arm64.tar.gz.md5\")    ", "[commitlog-v2.0.2-linux-386.tar.gz](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-386.tar.gz\")    ", "[commitlog-v2.0.2-linux-386.tar.gz.md5](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-386.tar.gz.md5\")    ", "[commitlog-v2.0.2-linux-amd64.tar.gz](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-amd64.tar.gz\")    ", "[commitlog-v2.0.2-linux-amd64.tar.gz.md5](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-amd64.tar.gz.md5\")    ", "[commitlog-v2.0.2-linux-arm64.tar.gz](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-arm64.tar.gz\")    ", "[commitlog-v2.0.2-linux-arm64.tar.gz.md5](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-arm64.tar.gz.md5\")    ", "[commitlog-v2.0.2-windows-386.zip](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-386.zip\")    ", "[commitlog-v2.0.2-windows-386.zip.md5](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-386.zip.md5\")    ", "[commitlog-v2.0.2-windows-amd64.zip](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-amd64.zip\")    ", "[commitlog-v2.0.2-windows-amd64.zip.md5](\"https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-amd64.zip.md5\")    ", ""]}, {"title": "docs/manual.md", "slug": "manual.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# Manual", "", "- [Basics](#basics)", "  - [generate](#generate)", "  - [release](#release)", "- [Advanced](#advanced)", "  - [Selective Log Ranges](#selective-log-ranges)", "  - [From a different repo](#from-a-different-repo)", "  - [Categorize](#categorize)", "- [CLI](#cli)", "- [API](/commitlog/api)", "", "<h3 id=\"basics\">Basics</h3>", "", "**_`commitlog`_** come with 2 basic functionalities", "", "- Generating commits as changelogs in markdown", "- Managing your version and tags", "", "Both the above are available as sub commands and we'll go through each one by", "one.", "", "Just running `commitlog` no longer works as it did in v1", " you'll need to specify", "a sub command to get it working.", "", "This has been done to keep it simpler to keep arbitrary behaviour to a minimum", "", "<h4 id=\"generate\">generate</h3>", "", "The first one is `generate` and in most cases you'll just be using this to", "handle generation of commits as a list of markdown notes", "", "Here's an example of what it'll look like to run the `generate` sub-command", "", "```sh", "$ commitlog generate", "# or ", "$ commitlog g", "```", "", "**Output**:", "", "```md", "## All Changes", "87ce3fc76b252908cdd81f9537713f8d67813652 chore: v2.0.0-beta.0", "", "09fc85c0d1d52d770bbbf39ac45907103a53d354 refactor: swap go-git for push with exec", "", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "909fd032facdeb4fb7633a4fad82dced28e8de83 chore: swap debugging logger with stderr printer", "<!-- .... more commits till the end of tag -->", "```", "", "The behaviour of the `generate` command is like so", "", "- go through all commits from the current `HEAD` (commit with the `HEAD`", "  reference) till the last commit or the most recent tagged commit.", "- the other case is where if the latest commit is also a tagged commit", " it'll", "  still go till the most recent tagged commit.", "", "  eg: v0.0.2 -> HEAD", " v0.0.1 -> SOMEHASH", " would give you the commits between", "  both the tags.", "", "The default behaviour of **_commitlog_** is to print to the stdout of your", "terminal which might not be what you wish to do.", "", "So", " if you wish to ever write to a file ", " you can use the `--out FILE` flag to", "write the output to a file instead.", "", "```sh", "$ commitlog g -o ./CHANGELOG.md", "```", "", "> **Note**: commitlog will overwrite the file with the new output", " make sure you", "> create a backup of the file when working with this.", "", "> **Note**: In coming versions an append mode will be added to the CLI to avoid", "> having to deal with this manually", "", "<h4 id=\"release\">release</h3>", "", "The `release` sub-command is a complimentary sub-command added to commitlog to", "help you with managing release versions. I understand that most languages have", "their own package version management and you might want to work with them but", "that's also why the `release` sub-command isn't something you need", " it's there", "for cases where you might wanna use it.", "", "My primary usecase is when working with repositories that work with multiple", "languages and I'd prefer a unified version.", "", "The `release` command doesn't modify your source code files but instead handles", "the version with it's own file named `.commitlog.release`", " which just holds the", "**version** number right now and while this does have the X.X.X format (semantic", "versioning format) the increments or how you handle them doesn't have to be.", "", "The command is flexible enough for you to combine and create your own way of", "versioning.", "", "##### Initialize", "", "```sh", "$ commitlog release --init", "# or ", "$ commitlog r --init", "```", "", "Once initialized", " you'll see a `.commitlog.release` file in your repo with the", "version `v0.0.0` to start with.", "", "##### Increments", "", "Post that you can use the remaining flags to help you incrementing the version", "as needed.", "", "```sh", "$ commitlog r --major # change to v1.0.0", "$ commitlog r --minor # change to v0.1.0", "$ commitlog r --patch # change to v0.0.1", "$ commitlog r --pre # change to v0.0.0-beta.0", "$ commitlog r --pre --pre-tag=\"dev\" # change to v0.0.0-dev.0", "", "# or go bonkers ", "$ commitlog r --patch --pre --pre-tag=\"dev\" # change to v0.0.1-dev.0", "$ commitlog r --major --patch --pre --pre-tag=\"dev\" # change to v1.0.1-dev.0", "```", "", "#### Git actions", "", "Most times you'd also want a tool like this to create commits and tags for you", "which is fair", " so `release` does come with a few git actions.", "", "- `--commit` (will create a commit and tag it for you)", "- `--push` (will push the commits and tags for you)", "", "The whole command would look a little something like this", "", "```sh", "$ commitlog r --patch --commit --push", "```", "", "<h3 id=\"advanced\">Advanced</h3>", "", "These are not really hard to guess or achieve but are in the advanced section as", "this isn't something a beginner user might need to mess with. If you have other", "use cases that you feel like should be added here", " raise a issue.", "", "<h4 id=\"selective-log-ranges\">Selective Log Ranges</h4>", "There's enough cases where the entire history between the tags makes no sense. You might just want a specific set of commits and this is very easy to do with commitlog", "", "```sh", "$ commitlog g --start HEAD --end HEAD~3 ", "# would return the last 3 commits", "```", "", "And as you might have understood", " commitlog does work with git's revision system", "so you can reuse git's own revision pointers as needed. Though it's mostly", "easier to just use the HASH since", " finding the hashes in `git log` is easier", "than finding the number you have to type after the `HEAD~`", "", "<h4 id=\"from-a-different-repo\">From a different repo</h4>", "A lot more often you might need to generate logs for a sub-repo when working with a huge multirepo folder which a lot of sub-modules and switching worktree for the changelog might not be something you wish to do.", "", "In cases like these the `-p` or `--path` flag can be used with the `generate`", "flag", "", "```sh", "$ commitlog g -p ./sub/module -s HEAD~3 ", "# would return the commits from HEAD~3 to the next tag or end of all commits.", "```", "", "<h4 id=\"categorize\">Categorize</h4>", "You wouldn't be using commitlog otherwise so this obviously has to exist.", "", "As for why is this turned off by default? I just don't use commit standards and", "mostly just need the commits between tags and very rarely need the categories to", "help me but doesn't change the fact that someone else might need it.", "", "So", " how does commitlog categorize? using regex's ", " or more like comma seperated", "regex's.", "", "The implementation approach might bring some issue but I'm going to wait for", "them instead of over fixing something that might never really happen.", "", "Anyway", " a simple example for a non-scoped commitlint styled categorization would", "look something like this .", "", "```sh", "$ commitlog g --categories=\"feat:", "fix:\"", "```", "", "**Output:**", "", "```md", "## feat:", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## fix:", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "```", "", "This could be made a little more neater using a better regex like so", "", "```sh", "$ commitlog g --categories=\"^feat", "^fix\"", "```", "", "**Output**:", "", "```md", "## ^feat", "e0ce9c693c554158b7b4841b799524164d9c3e83 feat(releaser): add init and pre-tag handlers", "", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## ^fix", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "540bb3d7419aab314fdb999dd57eeac3c53f5fad fix doc generation", "", "87d40ddbd463ad71b3af8b7edb8ac8176ecbf2f5 fix tests for new param", "```", "", "As visible", " you find more commits in the 2nd one since the regex matches more", "cases and gives you more information. You are free to modify these to make them", "work with other patterns that you might follow.", "", "Also the titles are going to be the regex's you pass. A future version will add", "a way for you to add label's to the regex though that's a little harder to", "achieve without making the flags very verbose so I've avoided it for now.", "", "> **Note**: This is the initial implementation of this and might change in a", "> future major version since this flag feels a little more frictional than the", "> other approaches I have in mind. Feel free to recommend other ways to do this.", "", "<h3 id=\"cli\">CLI</h3>", "", "This is the entire CLI reference", " which you can also access by using the `-h`", "flag on the downloaded binary.", "", "**`commitlog -h`**", "", "```", "NAME:", "   commitlog - commits to changelogs", "", "USAGE:", "   commitlog [global options] command [command options] [arguments...]", "", "COMMANDS:", "   generate", " g  commits to changelogs", "   release", " r   manage .commitlog.release version", "   help", " h      Shows a list of commands or help for one command", "", "GLOBAL OPTIONS:", "   --help", " -h  show help (default: false)", "```", "", "---", "", "**`commitlog g -h`**", "", "```", "NAME:", "   commitlog generate - commits to changelogs", "", "USAGE:", "   commitlog generate [command options] [arguments...]", "", "OPTIONS:", "   --categories value       categories to use", " includes all commits by default. any text you add here will be used to create categories out of the commits", "   --end END", " -e END        END reference for the commit to stop including commits at.This is exclusive of the given commit reference", "   --out FILE", " -o FILE      path to the output FILE", "   --path PATH", " -p PATH     root with the '.git' folder PATH (default: \".\")", "   --promo                  add promo text to the end of output (default: false)", "   --start START", " -s START  START reference for the commit to include commits from", "This is inclusive of the given commit reference", "   --stdio                  print to the stdout (default: true)", "```", "", "---", "", "**`commitlog r -h`**", "", "```", "NAME:", "   commitlog release - manage .commitlog.release version", "", "USAGE:", "   commitlog release [command options] [arguments...]", "", "OPTIONS:", "   --commit              if true will create a commit and tag", " of the changed version (default: false)", "   --init                initialise commitlog release (default: false)", "   --major               create a major version (default: false)", "   --minor               create a minor version (default: false)", "   --patch               create a patch version (default: false)", "   --path PATH", " -p PATH  PATH to a folder where .commitlog.release exists or is to be created.(note: do not use `--commit` or `--push` if the file isn't in the root) (default: \".\")", "   --pre                 create a pre-release version. will default to patch increment unlessspecified and not already a pre-release (default: false)", "   --pre-tag value       create a pre-release version (default: \"beta\")", "   --push                if true will create push the created release commit + tag on origin (default: false)", "```", ""]}]
\ No newline at end of file
+[{"title": "docs/api.md", "slug": "api.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# API", "", "### General Guide", "", "commitlog also comes as a pkg that you could reuse to modify the behaviour of", "the commands and this is very limited at the moment since I'm still working on", "the best way to get plugins to work with the original CLI instead of having to", "write your own version of commitlog.", "", "The pkg contains the 2 base command's creators and behaviour modifiers", " or more", "commonly known as the golang options pattern.", "", "Briefly put", " You have one function that takes in unlimited amount of functions", "as parameter with each of these parameter functions being able to modify the", "behaviour of the returned instance.", "", "Easy way to explain this is with an example of the `releaser` API", "", "```go", "package main", "", "import (", "", "\"log\"", "", "", "\"github.com/barelyhuman/commitlog/pkg\"", ")", "", "func main() {", "", "versionString := \"v0.0.1\"", "", "releaser", " _ := pkg.CreateNewReleaser(", "", "", "versionString", "", "", "", "pkg.WithMajorIncrement()", "", "", ")", "", "", "log.Println(releaser.String())", "", "}", "```", "", "here the `pkg.CreateNewReleaser` takes in one mandatory value which is the", "`versionString` and the 2nd parameter is optional here.", "", "Though", " since we wish for the releaser to have a custom behaviour everytime the", "flags change", " instead of writing entire functionalities inside various releaser", "functions", " which would look like so", "", "```go", "releaser.IncrementMajor()", "releaser.IncrementMinor()", "```", "", "I'd be unable to expose the builders / option functions out to the public for", "them to write custom behaviours that work directly with the `struct` being used", "by commitlog itself and instead you'd be writing wrappers around existing", "functions. Thus", " adding another layer of abstraction which isn't needed for", "something that wants to be extended.", "", "This approach gives me the ability to expose a selected few properties for you", "to modify while writing your own builder/option function.", "", "The only pointer functions that releaser has is the one's that'll help with", "printing or identifying the final version's state.", "", "Since", " you now know how the API is written", " the go doc for this module should be", "able to help you with the remaining.", "", "[godoc&nearr;](https://pkg.go.dev/github.com/barelyhuman/commitlog)", "", "> **Note**: if the go doc still hasn't been generated for v2.0.0", " please go", "> through the source code to help you with the implementation details", ""]}, {"title": "docs/index.md", "slug": "index.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Index", "", "- [Source](https://github.com/barelyhuman/commitlog)", "- [Quick Start](#quick-start)", "- [About](#about)", "  - [Philosophy](#philosophy)", "  - [Installation](#installation)", "- [Manual](/commitlog/manual)", "- [License](#license)", "", "<h4 id=\"quick-start\">Quick Start</h4>", "", "For the one's who already know the tool and wanna get started quickly.", "", "You can get the CLI in the following ways", "", "1. You can get the binaries from the [download section](/commitlog/download)", "", "2. Using `go get`", "", "```sh", "go get -u github.com/barelyhuman/commitlog", "```", "", "3. Using goblin", "", "```sh", "curl -sf https://goblin.barelyhuman.xyz/github.com/barelyhuman/commitlog | sh", "```", "", "Once installed you can just run `commitlog generate` or the shorter version", "`commitlog g` to get all the changes between the recent tags.", "", "<h4 id=\"about\">About</h4>", "", "<h5 id=\"philosophy\">Philosophy</h5>", "", "**_commitlog_** simply exists because I wasn't able to find a decent enough tool", "to do this without being bound to a specific programming language and it's", "toolset. The closes one to this is the `git`'s own `shortlog` and `log` commands", "", "- **Language Agnostic** - No one needs the entire programming toolset or the", "  language to be setup on the system to be able to just generate logs", "", "- **Decently Sized** - Not everyone has a powerful system and CI systems are", "  still very limited in terms of resources since they give you shared spaces and", "  automating generating this is a common practice so it doesn't make sense for", "  it to install a runtime worth 100MB to run it.", "", "  The binary itself is around 10-13MB which is fairly big for a tool like this", "  but this is due to go's nature of embedding the platform runtime with the", "  binary and this might not be ideal for some and so there's another similar", "  smaller scoped version [nimclog](https://github.com/barelyhuman/nimclog) which", "  is in KB's", "", "- **Flexible** - There are no set standards for how you write commit messages.", "  Commitlint is a good standard and pretty widely used and also what commitlog", "  v1 used as the base for categorizing.", "", "  V2 however", " doesn't have a set commit category standard", " it accepts regex's", "  that you will categorize your commits for you.", "", "  This is more for experienced developers who have a their own pattern of", "  writing commits and would like a tool that'd work with their pattern instead", "  of creating friction", "", "- **Extensible** - The entire thing is open source and MIT licenses", "", "  specifically for you to be able to fix and add things as needed. Each command", "  has been kept away from the domain logic to be able to use `commitlog` even as", "  a library and build your own tool if you wish to", " though if there's something", "  you wish the CLI supported", " you are free to open issues and I really like", "  people helping with the development since that helps keeping the tool alive", "  longer.", "", "<h5 id=\"installation\">Installation</h5>", "", "The installation is pretty straightforwad. You [download](/commitlog/download) the binary", "from the download section of this website or use something like", "[goblin](https://goblin.barelyhuman.xyz) to build the binary for your specific", "system (rarely needed) since the releases actually accommodate the most used", "operating systems and architectures already.", "", "**Linux/Mac (Unix Systems)**", "", "Once downloaded", " you can use the `install` command on *nix systems to link the", "binary to a location that's already in your PATH variable.", "", "eg:", "", "```bash", "# install commitlog from current directory to the /usr/local/bin directory", "install $(pwd)/commitlog /usr/local/bin", "```", "", "This should give you the ability to use the `commitlog` command anywhere in your", "system", "", "**Windows**", "", "Similar to the linux setup", " you can download the `.exe` file and add it to a", "location that your environment path already has. An easier thing to do is to", "store the entire thing in your secondary partition and add that location to your", "PATH. You can use this resource from Java docs to help you with modifying the", "PATH variables", "", "- [Modifying PATH in Windows](https://www.java.com/en/download/help/path.html)", "", "<h4 id=\"manual\">Manual</h4>", "", "[Read Manual &rarr;](/commitlog/manual)", "", "<h4 id=\"license\">License</h4>", "", "commitlog is MIT Licensed and you can read the entire license in the", "[source code](https://github.com/barelyhuman/commitlog)", ""]}, {"title": "docs/download.md", "slug": "download.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | downloads", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Downloads", "", "[commitlog-v2.0.2-darwin-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-amd64.tar.gz)    ", "[commitlog-v2.0.2-darwin-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-amd64.tar.gz.md5)    ", "[commitlog-v2.0.2-darwin-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-arm64.tar.gz)    ", "[commitlog-v2.0.2-darwin-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-arm64.tar.gz.md5)    ", "[commitlog-v2.0.2-linux-386.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-386.tar.gz)    ", "[commitlog-v2.0.2-linux-386.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-386.tar.gz.md5)    ", "[commitlog-v2.0.2-linux-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-amd64.tar.gz)    ", "[commitlog-v2.0.2-linux-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-amd64.tar.gz.md5)    ", "[commitlog-v2.0.2-linux-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-arm64.tar.gz)    ", "[commitlog-v2.0.2-linux-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-arm64.tar.gz.md5)    ", "[commitlog-v2.0.2-windows-386.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-386.zip)    ", "[commitlog-v2.0.2-windows-386.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-386.zip.md5)    ", "[commitlog-v2.0.2-windows-amd64.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-amd64.zip)    ", "[commitlog-v2.0.2-windows-amd64.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-amd64.zip.md5)    ", ""]}, {"title": "docs/manual.md", "slug": "manual.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# Manual", "", "- [Basics](#basics)", "  - [generate](#generate)", "  - [release](#release)", "- [Advanced](#advanced)", "  - [Selective Log Ranges](#selective-log-ranges)", "  - [From a different repo](#from-a-different-repo)", "  - [Categorize](#categorize)", "- [CLI](#cli)", "- [API](/commitlog/api)", "", "<h3 id=\"basics\">Basics</h3>", "", "**_`commitlog`_** come with 2 basic functionalities", "", "- Generating commits as changelogs in markdown", "- Managing your version and tags", "", "Both the above are available as sub commands and we'll go through each one by", "one.", "", "Just running `commitlog` no longer works as it did in v1", " you'll need to specify", "a sub command to get it working.", "", "This has been done to keep it simpler to keep arbitrary behaviour to a minimum", "", "<h4 id=\"generate\">generate</h3>", "", "The first one is `generate` and in most cases you'll just be using this to", "handle generation of commits as a list of markdown notes", "", "Here's an example of what it'll look like to run the `generate` sub-command", "", "```sh", "$ commitlog generate", "# or ", "$ commitlog g", "```", "", "**Output**:", "", "```md", "## All Changes", "87ce3fc76b252908cdd81f9537713f8d67813652 chore: v2.0.0-beta.0", "", "09fc85c0d1d52d770bbbf39ac45907103a53d354 refactor: swap go-git for push with exec", "", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "909fd032facdeb4fb7633a4fad82dced28e8de83 chore: swap debugging logger with stderr printer", "<!-- .... more commits till the end of tag -->", "```", "", "The behaviour of the `generate` command is like so", "", "- go through all commits from the current `HEAD` (commit with the `HEAD`", "  reference) till the last commit or the most recent tagged commit.", "- the other case is where if the latest commit is also a tagged commit", " it'll", "  still go till the most recent tagged commit.", "", "  eg: v0.0.2 -> HEAD", " v0.0.1 -> SOMEHASH", " would give you the commits between", "  both the tags.", "", "The default behaviour of **_commitlog_** is to print to the stdout of your", "terminal which might not be what you wish to do.", "", "So", " if you wish to ever write to a file ", " you can use the `--out FILE` flag to", "write the output to a file instead.", "", "```sh", "$ commitlog g -o ./CHANGELOG.md", "```", "", "> **Note**: commitlog will overwrite the file with the new output", " make sure you", "> create a backup of the file when working with this.", "", "> **Note**: In coming versions an append mode will be added to the CLI to avoid", "> having to deal with this manually", "", "<h4 id=\"release\">release</h3>", "", "The `release` sub-command is a complimentary sub-command added to commitlog to", "help you with managing release versions. I understand that most languages have", "their own package version management and you might want to work with them but", "that's also why the `release` sub-command isn't something you need", " it's there", "for cases where you might wanna use it.", "", "My primary usecase is when working with repositories that work with multiple", "languages and I'd prefer a unified version.", "", "The `release` command doesn't modify your source code files but instead handles", "the version with it's own file named `.commitlog.release`", " which just holds the", "**version** number right now and while this does have the X.X.X format (semantic", "versioning format) the increments or how you handle them doesn't have to be.", "", "The command is flexible enough for you to combine and create your own way of", "versioning.", "", "##### Initialize", "", "```sh", "$ commitlog release --init", "# or ", "$ commitlog r --init", "```", "", "Once initialized", " you'll see a `.commitlog.release` file in your repo with the", "version `v0.0.0` to start with.", "", "##### Increments", "", "Post that you can use the remaining flags to help you incrementing the version", "as needed.", "", "```sh", "$ commitlog r --major # change to v1.0.0", "$ commitlog r --minor # change to v0.1.0", "$ commitlog r --patch # change to v0.0.1", "$ commitlog r --pre # change to v0.0.0-beta.0", "$ commitlog r --pre --pre-tag=\"dev\" # change to v0.0.0-dev.0", "", "# or go bonkers ", "$ commitlog r --patch --pre --pre-tag=\"dev\" # change to v0.0.1-dev.0", "$ commitlog r --major --patch --pre --pre-tag=\"dev\" # change to v1.0.1-dev.0", "```", "", "#### Git actions", "", "Most times you'd also want a tool like this to create commits and tags for you", "which is fair", " so `release` does come with a few git actions.", "", "- `--commit` (will create a commit and tag it for you)", "- `--push` (will push the commits and tags for you)", "", "The whole command would look a little something like this", "", "```sh", "$ commitlog r --patch --commit --push", "```", "", "<h3 id=\"advanced\">Advanced</h3>", "", "These are not really hard to guess or achieve but are in the advanced section as", "this isn't something a beginner user might need to mess with. If you have other", "use cases that you feel like should be added here", " raise a issue.", "", "<h4 id=\"selective-log-ranges\">Selective Log Ranges</h4>", "There's enough cases where the entire history between the tags makes no sense. You might just want a specific set of commits and this is very easy to do with commitlog", "", "```sh", "$ commitlog g --start HEAD --end HEAD~3 ", "# would return the last 3 commits", "```", "", "And as you might have understood", " commitlog does work with git's revision system", "so you can reuse git's own revision pointers as needed. Though it's mostly", "easier to just use the HASH since", " finding the hashes in `git log` is easier", "than finding the number you have to type after the `HEAD~`", "", "<h4 id=\"from-a-different-repo\">From a different repo</h4>", "A lot more often you might need to generate logs for a sub-repo when working with a huge multirepo folder which a lot of sub-modules and switching worktree for the changelog might not be something you wish to do.", "", "In cases like these the `-p` or `--path` flag can be used with the `generate`", "flag", "", "```sh", "$ commitlog g -p ./sub/module -s HEAD~3 ", "# would return the commits from HEAD~3 to the next tag or end of all commits.", "```", "", "<h4 id=\"categorize\">Categorize</h4>", "You wouldn't be using commitlog otherwise so this obviously has to exist.", "", "As for why is this turned off by default? I just don't use commit standards and", "mostly just need the commits between tags and very rarely need the categories to", "help me but doesn't change the fact that someone else might need it.", "", "So", " how does commitlog categorize? using regex's ", " or more like comma seperated", "regex's.", "", "The implementation approach might bring some issue but I'm going to wait for", "them instead of over fixing something that might never really happen.", "", "Anyway", " a simple example for a non-scoped commitlint styled categorization would", "look something like this .", "", "```sh", "$ commitlog g --categories=\"feat:", "fix:\"", "```", "", "**Output:**", "", "```md", "## feat:", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## fix:", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "```", "", "This could be made a little more neater using a better regex like so", "", "```sh", "$ commitlog g --categories=\"^feat", "^fix\"", "```", "", "**Output**:", "", "```md", "## ^feat", "e0ce9c693c554158b7b4841b799524164d9c3e83 feat(releaser): add init and pre-tag handlers", "", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## ^fix", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "540bb3d7419aab314fdb999dd57eeac3c53f5fad fix doc generation", "", "87d40ddbd463ad71b3af8b7edb8ac8176ecbf2f5 fix tests for new param", "```", "", "As visible", " you find more commits in the 2nd one since the regex matches more", "cases and gives you more information. You are free to modify these to make them", "work with other patterns that you might follow.", "", "Also the titles are going to be the regex's you pass. A future version will add", "a way for you to add label's to the regex though that's a little harder to", "achieve without making the flags very verbose so I've avoided it for now.", "", "> **Note**: This is the initial implementation of this and might change in a", "> future major version since this flag feels a little more frictional than the", "> other approaches I have in mind. Feel free to recommend other ways to do this.", "", "<h3 id=\"cli\">CLI</h3>", "", "This is the entire CLI reference", " which you can also access by using the `-h`", "flag on the downloaded binary.", "", "**`commitlog -h`**", "", "```", "NAME:", "   commitlog - commits to changelogs", "", "USAGE:", "   commitlog [global options] command [command options] [arguments...]", "", "COMMANDS:", "   generate", " g  commits to changelogs", "   release", " r   manage .commitlog.release version", "   help", " h      Shows a list of commands or help for one command", "", "GLOBAL OPTIONS:", "   --help", " -h  show help (default: false)", "```", "", "---", "", "**`commitlog g -h`**", "", "```", "NAME:", "   commitlog generate - commits to changelogs", "", "USAGE:", "   commitlog generate [command options] [arguments...]", "", "OPTIONS:", "   --categories value       categories to use", " includes all commits by default. any text you add here will be used to create categories out of the commits", "   --end END", " -e END        END reference for the commit to stop including commits at.This is exclusive of the given commit reference", "   --out FILE", " -o FILE      path to the output FILE", "   --path PATH", " -p PATH     root with the '.git' folder PATH (default: \".\")", "   --promo                  add promo text to the end of output (default: false)", "   --start START", " -s START  START reference for the commit to include commits from", "This is inclusive of the given commit reference", "   --stdio                  print to the stdout (default: true)", "```", "", "---", "", "**`commitlog r -h`**", "", "```", "NAME:", "   commitlog release - manage .commitlog.release version", "", "USAGE:", "   commitlog release [command options] [arguments...]", "", "OPTIONS:", "   --commit              if true will create a commit and tag", " of the changed version (default: false)", "   --init                initialise commitlog release (default: false)", "   --major               create a major version (default: false)", "   --minor               create a minor version (default: false)", "   --patch               create a patch version (default: false)", "   --path PATH", " -p PATH  PATH to a folder where .commitlog.release exists or is to be created.(note: do not use `--commit` or `--push` if the file isn't in the root) (default: \".\")", "   --pre                 create a pre-release version. will default to patch increment unlessspecified and not already a pre-release (default: false)", "   --pre-tag value       create a pre-release version (default: \"beta\")", "   --push                if true will create push the created release commit + tag on origin (default: false)", "```", ""]}]
\ No newline at end of file

From b8bb443f898fd22a1d3861d7c4a5457bc2a31741 Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Tue, 24 Jan 2023 17:45:35 +0000
Subject: [PATCH 21/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@212c886da15e5c1b8dcb65520a43bd8bdb24d292=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 style.css | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/style.css b/style.css
index 8791f50..96549ce 100644
--- a/style.css
+++ b/style.css
@@ -115,4 +115,36 @@ blockquote {
     padding: 0px;
     border-left: 2px solid var(--muted);
     padding-left: 10px;
+}
+
+#search-container {
+  display: block;
+  margin:0 auto;
+}
+
+#search-container > input[type="text"] {
+  width: 100%;
+  background: var(--base);
+  color: var(--text);
+  padding: 0.5rem;
+  border-radius: 4px;
+  border: 2px solid var(--surface);
+}
+
+#search-container > input[type="text"]:hover {
+  border-color: var(--text);
+}
+
+#search-results {
+  display: flex;
+  flex-direction: column;
+  align-items: flex-start;
+  justify-content: flex-start;
+  max-height: 200px;
+  overflow: auto;
+}
+
+.mudkip-search-item {
+  margin: 0.25rem;
+  display: block;
 }
\ No newline at end of file

From 714ae917918b3033fd30af2e995a93caa3fb0a3d Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Wed, 30 Aug 2023 17:45:52 +0000
Subject: [PATCH 22/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@71dc2e0b6854609148b805d79f7d685e6468d6ce=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 index.html  |    4 +-
 mudkip.js   | 1625 ++++++++++++++++++++++++++-------------------------
 search.json |    2 +-
 3 files changed, 834 insertions(+), 797 deletions(-)

diff --git a/index.html b/index.html
index b7b88ca..f53d5bb 100644
--- a/index.html
+++ b/index.html
@@ -35,7 +35,7 @@ <h4 id="quick-start">Quick Start</h4>
 <ol start="3">
 <li>Using goblin</li>
 </ol>
-<pre><code class="language-sh">curl -sf https://goblin.barelyhuman.xyz/github.com/barelyhuman/commitlog | sh
+<pre><code class="language-sh">curl -sf https://goblin.run/github.com/barelyhuman/commitlog | sh
 </code></pre>
 <p>Once installed you can just run <code>commitlog generate</code> or the shorter version
 <code>commitlog g</code> to get all the changes between the recent tags.</p>
@@ -83,7 +83,7 @@ <h5 id="philosophy">Philosophy</h5>
 <h5 id="installation">Installation</h5>
 <p>The installation is pretty straightforwad. You <a href="/commitlog/download">download</a> the binary
 from the download section of this website or use something like
-<a href="https://goblin.barelyhuman.xyz">goblin</a> to build the binary for your specific
+<a href="https://goblin.run">goblin</a> to build the binary for your specific
 system (rarely needed) since the releases actually accommodate the most used
 operating systems and architectures already.</p>
 <p><strong>Linux/Mac (Unix Systems)</strong></p>
diff --git a/mudkip.js b/mudkip.js
index e690c80..7c268e1 100644
--- a/mudkip.js
+++ b/mudkip.js
@@ -2,20 +2,20 @@
 var framePtr = null;
 var excHandler = 0;
 var lastJSError = null;
-var NTI1392508934 = {size: 0, kind: 24, base: null, node: null, finalizer: null};
-var NTI1392508932 = {size: 0, kind: 18, base: null, node: null, finalizer: null};
-var NTI1392508933 = {size: 0, kind: 24, base: null, node: null, finalizer: null};
-var NTI704643133 = {size: 0, kind: 18, base: null, node: null, finalizer: null};
-var NTI637534211 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NTI469762054 = {size: 0, kind: 24, base: null, node: null, finalizer: null};
+var NTI469762052 = {size: 0, kind: 18, base: null, node: null, finalizer: null};
+var NTI469762053 = {size: 0, kind: 24, base: null, node: null, finalizer: null};
+var NTI687865917 = {size: 0, kind: 18, base: null, node: null, finalizer: null};
+var NTI1006632963 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
 var NTI33554438 = {size: 0,kind: 2,base: null,node: null,finalizer: null};
-var NTI637534212 = {size: 0, kind: 19, base: null, node: null, finalizer: null};
+var NTI1006632964 = {size: 0, kind: 19, base: null, node: null, finalizer: null};
 var NTI33555124 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
 var NTI33555114 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
 var NTI33555125 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
-var NTI889192520 = {size: 0,kind: 31,base: null,node: null,finalizer: null};
-var NTI889192527 = {size: 0, kind: 18, base: null, node: null, finalizer: null};
+var NTI872415304 = {size: 0,kind: 31,base: null,node: null,finalizer: null};
+var NTI872415311 = {size: 0, kind: 18, base: null, node: null, finalizer: null};
 var NTI33555121 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
-var NTI1392508931 = {size: 0, kind: 18, base: null, node: null, finalizer: null};
+var NTI469762051 = {size: 0, kind: 18, base: null, node: null, finalizer: null};
 var NTI33554466 = {size: 0,kind: 1,base: null,node: null,finalizer: null};
 var NTI33554456 = {size: 0,kind: 31,base: null,node: null,finalizer: null};
 var NTI620757006 = {size: 0, kind: 18, base: null, node: null, finalizer: null};
@@ -59,17 +59,17 @@ NTI33555128.base = NTI33555113;
 var NNI620757006 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "Field0", len: 0, typ: NTI33554456, name: "Field0", sons: null}, 
 {kind: 1, offset: "Field1", len: 0, typ: NTI33554466, name: "Field1", sons: null}]};
 NTI620757006.node = NNI620757006;
-var NNI1392508931 = {kind: 2, len: 4, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "element", len: 0, typ: NTI33554439, name: "element", sons: null}, 
+var NNI469762051 = {kind: 2, len: 4, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "element", len: 0, typ: NTI33554439, name: "element", sons: null}, 
 {kind: 1, offset: "slug", len: 0, typ: NTI33554439, name: "slug", sons: null}, 
 {kind: 1, offset: "count", len: 0, typ: NTI33554456, name: "count", sons: null}, 
 {kind: 1, offset: "score", len: 0, typ: NTI33554456, name: "score", sons: null}]};
-NTI1392508931.node = NNI1392508931;
+NTI469762051.node = NNI469762051;
 var NNI33555121 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
 NTI33555121.node = NNI33555121;
 NTI33555121.base = NTI33555120;
-var NNI889192527 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "a", len: 0, typ: NTI889192520, name: "a", sons: null}, 
+var NNI872415311 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "a", len: 0, typ: NTI872415304, name: "a", sons: null}, 
 {kind: 1, offset: "b", len: 0, typ: NTI33554456, name: "b", sons: null}]};
-NTI889192527.node = NNI889192527;
+NTI872415311.node = NNI872415311;
 var NNI33555125 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
 NTI33555125.node = NNI33555125;
 var NNI33555114 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
@@ -79,19 +79,20 @@ NTI33555125.base = NTI33555114;
 var NNI33555124 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
 NTI33555124.node = NNI33555124;
 NTI33555124.base = NTI33555113;
-NTI637534212.base = NTI33554438;
-var NNI637534211 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
-NTI637534211.node = NNI637534211;
-NTI637534211.base = NTI33555125;
-var NNI704643133 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "a", len: 0, typ: NTI33554456, name: "a", sons: null}, 
+NTI1006632964.base = NTI33554438;
+var NNI1006632963 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
+NTI1006632963.node = NNI1006632963;
+NTI1006632963.base = NTI33555125;
+var NNI687865917 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "a", len: 0, typ: NTI33554456, name: "a", sons: null}, 
 {kind: 1, offset: "b", len: 0, typ: NTI33554456, name: "b", sons: null}]};
-NTI704643133.node = NNI704643133;
-NTI1392508933.base = NTI33554439;
-var NNI1392508932 = {kind: 2, len: 3, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "title", len: 0, typ: NTI33554439, name: "title", sons: null}, 
+NTI687865917.node = NNI687865917;
+NTI469762053.base = NTI33554439;
+var NNI469762052 = {kind: 2, len: 4, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "title", len: 0, typ: NTI33554439, name: "title", sons: null}, 
 {kind: 1, offset: "slug", len: 0, typ: NTI33554439, name: "slug", sons: null}, 
-{kind: 1, offset: "contentTokens", len: 0, typ: NTI1392508933, name: "contentTokens", sons: null}]};
-NTI1392508932.node = NNI1392508932;
-NTI1392508934.base = NTI1392508932;
+{kind: 1, offset: "contentTokens", len: 0, typ: NTI469762053, name: "contentTokens", sons: null}, 
+{kind: 1, offset: "displayContent", len: 0, typ: NTI33554439, name: "displayContent", sons: null}]};
+NTI469762052.node = NNI469762052;
+NTI469762054.base = NTI469762052;
 
 function makeNimstrLit(c_33556802) {
       var result = [];
@@ -497,7 +498,7 @@ function cstrToNimstr(c_33556805) {
   
 }
 var ConstSet17 = setConstr(32, 10, 9, 13);
-            var whiteSpace_637534219 = nimCopy(null, ConstSet17, NTI637534212);
+            var whiteSpace_1006632971 = nimCopy(null, ConstSet17, NTI1006632964);
 var ConstSet18 = setConstr(120, 88);
 if (!Math.trunc) {
   Math.trunc = function(v) {
@@ -507,8 +508,8 @@ if (!Math.trunc) {
   };
 }
 
-var objectID_1107296418 = [0];
-var searchDB_469762055 = [[]];
+var objectID_1056964770 = [0];
+var searchDB_469762065 = [[]];
 
 function add_33556420(x_33556421, x_33556421_Idx, y_33556422) {
           if (x_33556421[x_33556421_Idx] === null) { x_33556421[x_33556421_Idx] = []; }
@@ -580,13 +581,13 @@ function addChars_251658415(result_251658417, result_251658417_Idx, x_251658418,
     (result_251658417[result_251658417_Idx].length = chckRange(addInt(old_251658421, n_251658420), 0, 2147483647));
     Label1: do {
       var iHEX60gensym4_251658435 = 0;
-      var i_469762373 = 0;
+      var i_469762383 = 0;
       Label2: do {
           Label3: while (true) {
-          if (!(i_469762373 < n_251658420)) break Label3;
-            iHEX60gensym4_251658435 = i_469762373;
+          if (!(i_469762383 < n_251658420)) break Label3;
+            iHEX60gensym4_251658435 = i_469762383;
             result_251658417[result_251658417_Idx][chckIndx(addInt(old_251658421, iHEX60gensym4_251658435), 0, (result_251658417[result_251658417_Idx]).length - 1)] = x_251658418.charCodeAt(chckIndx(addInt(start_251658419, iHEX60gensym4_251658435), 0, (x_251658418).length - 1));
-            i_469762373 = addInt(i_469762373, 1);
+            i_469762383 = addInt(i_469762383, 1);
           }
       } while (false);
     } while (false);
@@ -674,43 +675,43 @@ function raiseIndexError(i_33556755, a_33556756, b_33556757) {
   
 }
 
-function nsuFindChar(s_654312949, sub_654312950, start_654312951, last_654312952) {
+function nsuFindChar(s_637535733, sub_637535734, start_637535735, last_637535736) {
     var Temporary1;
 
-  var result_654312953 = 0;
+  var result_637535737 = 0;
 
   BeforeRet: do {
-    if ((last_654312952 == 0)) {
-    Temporary1 = (s_654312949).length - 1;
+    if ((last_637535736 == 0)) {
+    Temporary1 = (s_637535733).length - 1;
     }
     else {
-    Temporary1 = last_654312952;
+    Temporary1 = last_637535736;
     }
     
-    var last_654312954 = Temporary1;
+    var last_637535738 = Temporary1;
     Label2: do {
-      var i_654312964 = 0;
-      var colontmp__469762384 = 0;
-      colontmp__469762384 = start_654312951;
-      var res_469762385 = colontmp__469762384;
+      var i_637535748 = 0;
+      var colontmp__469762394 = 0;
+      colontmp__469762394 = start_637535735;
+      var res_469762395 = colontmp__469762394;
       Label3: do {
           Label4: while (true) {
-          if (!(res_469762385 <= last_654312954)) break Label4;
-            i_654312964 = res_469762385;
-            if ((sub_654312950 == s_654312949[chckIndx(i_654312964, 0, (s_654312949).length - 1)])) {
-            result_654312953 = i_654312964;
+          if (!(res_469762395 <= last_637535738)) break Label4;
+            i_637535748 = res_469762395;
+            if ((sub_637535734 == s_637535733[chckIndx(i_637535748, 0, (s_637535733).length - 1)])) {
+            result_637535737 = i_637535748;
             break BeforeRet;
             }
             
-            res_469762385 = addInt(res_469762385, 1);
+            res_469762395 = addInt(res_469762395, 1);
           }
       } while (false);
     } while (false);
-    result_654312953 = -1;
+    result_637535737 = -1;
     break BeforeRet;
   } while (false);
 
-  return result_654312953;
+  return result_637535737;
 
 }
 
@@ -722,15 +723,15 @@ function substr_33557907(s_33557908, first_33557909, last_33557910) {
     result_33557911 = nimCopy(null, mnewString(chckRange(L_33557913, 0, 2147483647)), NTI33554439);
     Label1: do {
       var i_33557918 = 0;
-      var colontmp__469762388 = 0;
-      colontmp__469762388 = subInt(L_33557913, 1);
-      var res_469762389 = 0;
+      var colontmp__469762398 = 0;
+      colontmp__469762398 = subInt(L_33557913, 1);
+      var res_469762399 = 0;
       Label2: do {
           Label3: while (true) {
-          if (!(res_469762389 <= colontmp__469762388)) break Label3;
-            i_33557918 = res_469762389;
+          if (!(res_469762399 <= colontmp__469762398)) break Label3;
+            i_33557918 = res_469762399;
             result_33557911[chckIndx(i_33557918, 0, (result_33557911).length - 1)] = s_33557908[chckIndx(addInt(i_33557918, first_33557912), 0, (s_33557908).length - 1)];
-            res_469762389 = addInt(res_469762389, 1);
+            res_469762399 = addInt(res_469762399, 1);
           }
       } while (false);
     } while (false);
@@ -748,33 +749,33 @@ function substr_33557919(s_33557920, first_33557921) {
 
 }
 
-function fill_654312891(a_654312893, value_654312894) {
-    var xHEX60gensym166_654312900 = 0;
+function fill_637535675(a_637535677, value_637535678) {
+    var xHEX60gensym166_637535684 = 0;
     Label1: do {
         Label2: while (true) {
-        if (!(xHEX60gensym166_654312900 <= (a_654312893).length - 1)) break Label2;
-          a_654312893[chckIndx(xHEX60gensym166_654312900, 0, (a_654312893).length - 1)] = value_654312894;
-          xHEX60gensym166_654312900 = addInt(xHEX60gensym166_654312900, 1);
+        if (!(xHEX60gensym166_637535684 <= (a_637535677).length - 1)) break Label2;
+          a_637535677[chckIndx(xHEX60gensym166_637535684, 0, (a_637535677).length - 1)] = value_637535678;
+          xHEX60gensym166_637535684 = addInt(xHEX60gensym166_637535684, 1);
         }
     } while (false);
 
   
 }
 
-function nsuInitSkipTable(a_654312888, sub_654312889) {
-    var m_654312890 = (sub_654312889).length;
-    fill_654312891(a_654312888, m_654312890);
+function nsuInitSkipTable(a_637535672, sub_637535673) {
+    var m_637535674 = (sub_637535673).length;
+    fill_637535675(a_637535672, m_637535674);
     Label1: do {
-      var i_654312909 = 0;
-      var colontmp__469762392 = 0;
-      colontmp__469762392 = subInt(m_654312890, 1);
-      var i_469762393 = 0;
+      var i_637535693 = 0;
+      var colontmp__469762402 = 0;
+      colontmp__469762402 = subInt(m_637535674, 1);
+      var i_469762403 = 0;
       Label2: do {
           Label3: while (true) {
-          if (!(i_469762393 < colontmp__469762392)) break Label3;
-            i_654312909 = i_469762393;
-            a_654312888[chckIndx(sub_654312889[chckIndx(i_654312909, 0, (sub_654312889).length - 1)], 0, (a_654312888).length - 1)] = subInt(subInt(m_654312890, 1), i_654312909);
-            i_469762393 = addInt(i_469762393, 1);
+          if (!(i_469762403 < colontmp__469762402)) break Label3;
+            i_637535693 = i_469762403;
+            a_637535672[chckIndx(sub_637535673[chckIndx(i_637535693, 0, (sub_637535673).length - 1)], 0, (a_637535672).length - 1)] = subInt(subInt(m_637535674, 1), i_637535693);
+            i_469762403 = addInt(i_469762403, 1);
           }
       } while (false);
     } while (false);
@@ -782,119 +783,119 @@ function nsuInitSkipTable(a_654312888, sub_654312889) {
   
 }
 
-function nsuFindStrA(a_654312929, s_654312930, sub_654312931, start_654312932, last_654312933) {
+function nsuFindStrA(a_637535713, s_637535714, sub_637535715, start_637535716, last_637535717) {
     var Temporary1;
 
-  var result_654312934 = 0;
+  var result_637535718 = 0;
 
   BeforeRet: do {
-    if ((last_654312933 == 0)) {
-    Temporary1 = (s_654312930).length - 1;
+    if ((last_637535717 == 0)) {
+    Temporary1 = (s_637535714).length - 1;
     }
     else {
-    Temporary1 = last_654312933;
+    Temporary1 = last_637535717;
     }
     
-    var last_654312935 = Temporary1;
-    var subLast_654312936 = subInt((sub_654312931).length, 1);
-    if ((subLast_654312936 == -1)) {
-    result_654312934 = start_654312932;
+    var last_637535719 = Temporary1;
+    var subLast_637535720 = subInt((sub_637535715).length, 1);
+    if ((subLast_637535720 == -1)) {
+    result_637535718 = start_637535716;
     break BeforeRet;
     }
     
-    var skip_654312937 = start_654312932;
+    var skip_637535721 = start_637535716;
     Label2: do {
         Label3: while (true) {
-        if (!(subLast_654312936 <= subInt(last_654312935, skip_654312937))) break Label3;
-          var i_654312938 = subLast_654312936;
+        if (!(subLast_637535720 <= subInt(last_637535719, skip_637535721))) break Label3;
+          var i_637535722 = subLast_637535720;
           Label4: do {
               Label5: while (true) {
-              if (!(s_654312930[chckIndx(addInt(skip_654312937, i_654312938), 0, (s_654312930).length - 1)] == sub_654312931[chckIndx(i_654312938, 0, (sub_654312931).length - 1)])) break Label5;
-                if ((i_654312938 == 0)) {
-                result_654312934 = skip_654312937;
+              if (!(s_637535714[chckIndx(addInt(skip_637535721, i_637535722), 0, (s_637535714).length - 1)] == sub_637535715[chckIndx(i_637535722, 0, (sub_637535715).length - 1)])) break Label5;
+                if ((i_637535722 == 0)) {
+                result_637535718 = skip_637535721;
                 break BeforeRet;
                 }
                 
-                i_654312938 = subInt(i_654312938, 1);
+                i_637535722 = subInt(i_637535722, 1);
               }
           } while (false);
-          skip_654312937 = addInt(skip_654312937, a_654312929[chckIndx(s_654312930[chckIndx(addInt(skip_654312937, subLast_654312936), 0, (s_654312930).length - 1)], 0, (a_654312929).length - 1)]);
+          skip_637535721 = addInt(skip_637535721, a_637535713[chckIndx(s_637535714[chckIndx(addInt(skip_637535721, subLast_637535720), 0, (s_637535714).length - 1)], 0, (a_637535713).length - 1)]);
         }
     } while (false);
-    result_654312934 = -1;
+    result_637535718 = -1;
     break BeforeRet;
   } while (false);
 
-  return result_654312934;
+  return result_637535718;
 
 }
 
-function nsuReplaceStr(s_654313120, sub_654313121, by_654313122) {
-  var result_654313123 = [];
+function nsuReplaceStr(s_637535904, sub_637535905, by_637535906) {
+  var result_637535907 = [];
 
-    result_654313123 = nimCopy(null, [], NTI33554439);
-    var subLen_654313124 = (sub_654313121).length;
-    if ((subLen_654313124 == 0)) {
-    result_654313123 = nimCopy(null, s_654313120, NTI33554439);
+    result_637535907 = nimCopy(null, [], NTI33554439);
+    var subLen_637535908 = (sub_637535905).length;
+    if ((subLen_637535908 == 0)) {
+    result_637535907 = nimCopy(null, s_637535904, NTI33554439);
     }
     else {
-    if ((subLen_654313124 == 1)) {
-    var c_654313125 = sub_654313121[chckIndx(0, 0, (sub_654313121).length - 1)];
-    var last_654313126 = (s_654313120).length - 1;
-    var i_654313127 = 0;
+    if ((subLen_637535908 == 1)) {
+    var c_637535909 = sub_637535905[chckIndx(0, 0, (sub_637535905).length - 1)];
+    var last_637535910 = (s_637535904).length - 1;
+    var i_637535911 = 0;
     Label1: do {
         Label2: while (true) {
         if (!true) break Label2;
-          var j_654313128 = nsuFindChar(s_654313120, c_654313125, chckRange(i_654313127, 0, 2147483647), last_654313126);
-          if ((j_654313128 < 0)) {
+          var j_637535912 = nsuFindChar(s_637535904, c_637535909, chckRange(i_637535911, 0, 2147483647), last_637535910);
+          if ((j_637535912 < 0)) {
           break Label1;
           }
           
-          result_654313123.push.apply(result_654313123, substr_33557907(s_654313120, i_654313127, subInt(j_654313128, 1)));;
-          result_654313123.push.apply(result_654313123, by_654313122);;
-          i_654313127 = addInt(j_654313128, subLen_654313124);
+          result_637535907.push.apply(result_637535907, substr_33557907(s_637535904, i_637535911, subInt(j_637535912, 1)));;
+          result_637535907.push.apply(result_637535907, by_637535906);;
+          i_637535911 = addInt(j_637535912, subLen_637535908);
         }
     } while (false);
-    result_654313123.push.apply(result_654313123, substr_33557919(s_654313120, i_654313127));;
+    result_637535907.push.apply(result_637535907, substr_33557919(s_637535904, i_637535911));;
     }
     else {
-      var a_654313129 = [new Int32Array(256)];
-      nsuInitSkipTable(a_654313129[0], sub_654313121);
-      var last_654313130 = (s_654313120).length - 1;
-      var i_654313131 = 0;
+      var a_637535913 = [new Int32Array(256)];
+      nsuInitSkipTable(a_637535913[0], sub_637535905);
+      var last_637535914 = (s_637535904).length - 1;
+      var i_637535915 = 0;
       Label3: do {
           Label4: while (true) {
           if (!true) break Label4;
-            var j_654313132 = nsuFindStrA(a_654313129[0], s_654313120, sub_654313121, chckRange(i_654313131, 0, 2147483647), last_654313130);
-            if ((j_654313132 < 0)) {
+            var j_637535916 = nsuFindStrA(a_637535913[0], s_637535904, sub_637535905, chckRange(i_637535915, 0, 2147483647), last_637535914);
+            if ((j_637535916 < 0)) {
             break Label3;
             }
             
-            result_654313123.push.apply(result_654313123, substr_33557907(s_654313120, i_654313131, subInt(j_654313132, 1)));;
-            result_654313123.push.apply(result_654313123, by_654313122);;
-            i_654313131 = addInt(j_654313132, subLen_654313124);
+            result_637535907.push.apply(result_637535907, substr_33557907(s_637535904, i_637535915, subInt(j_637535916, 1)));;
+            result_637535907.push.apply(result_637535907, by_637535906);;
+            i_637535915 = addInt(j_637535916, subLen_637535908);
           }
       } while (false);
-      result_654313123.push.apply(result_654313123, substr_33557919(s_654313120, i_654313131));;
+      result_637535907.push.apply(result_637535907, substr_33557919(s_637535904, i_637535915));;
     }
     }
 
-  return result_654313123;
+  return result_637535907;
 
 }
 
-function nsuToLowerAsciiChar(c_654311492) {
-  var result_654311493 = 0;
+function nsuToLowerAsciiChar(c_637534276) {
+  var result_637534277 = 0;
 
-    if ((ConstSet2[c_654311492] != undefined)) {
-    result_654311493 = (c_654311492 ^ 32);
+    if ((ConstSet2[c_637534276] != undefined)) {
+    result_637534277 = (c_637534276 ^ 32);
     }
     else {
-      result_654311493 = c_654311492;
+      result_637534277 = c_637534276;
     }
     
 
-  return result_654311493;
+  return result_637534277;
 
 }
 
@@ -1020,9 +1021,9 @@ function fuzzyMatch_620757008(pattern_620757009, str_620757010) {
     score_620757020 = addInt(score_620757020, 10);
     }
     
-    var colontmp__469762401 = nimMax(0, score_620757020);
-    var colontmp__469762402 = (0 < score_620757020);
-    result_620757013 = nimCopy(result_620757013, {Field0: colontmp__469762401, Field1: colontmp__469762402}, NTI620757006);
+    var colontmp__469762411 = nimMax(0, score_620757020);
+    var colontmp__469762412 = (0 < score_620757020);
+    result_620757013 = nimCopy(result_620757013, {Field0: colontmp__469762411, Field1: colontmp__469762412}, NTI620757006);
 
   return result_620757013;
 
@@ -1034,76 +1035,76 @@ function raiseDivByZero() {
   
 }
 
-function parseSaturatedNatural_671088974(s_671088975, b_671088976, b_671088976_Idx, start_671088977) {
+function parseSaturatedNatural_654311758(s_654311759, b_654311760, b_654311760_Idx, start_654311761) {
       var Temporary1;
           var Temporary4;
 
-  var result_671088978 = 0;
+  var result_654311762 = 0;
 
-    var i_671088979 = start_671088977;
-    if (((i_671088979 < (s_671088975).length) && (s_671088975[chckIndx(i_671088979, 0, (s_671088975).length - 1)] == 43))) {
-    i_671088979 = addInt(i_671088979, 1);
+    var i_654311763 = start_654311761;
+    if (((i_654311763 < (s_654311759).length) && (s_654311759[chckIndx(i_654311763, 0, (s_654311759).length - 1)] == 43))) {
+    i_654311763 = addInt(i_654311763, 1);
     }
     
-      if (!(i_671088979 < (s_671088975).length)) Temporary1 = false; else {        Temporary1 = (ConstSet14[s_671088975[chckIndx(i_671088979, 0, (s_671088975).length - 1)]] != undefined);      }    if (Temporary1) {
-    b_671088976[b_671088976_Idx] = 0;
+      if (!(i_654311763 < (s_654311759).length)) Temporary1 = false; else {        Temporary1 = (ConstSet14[s_654311759[chckIndx(i_654311763, 0, (s_654311759).length - 1)]] != undefined);      }    if (Temporary1) {
+    b_654311760[b_654311760_Idx] = 0;
     Label2: do {
         Label3: while (true) {
-          if (!(i_671088979 < (s_671088975).length)) Temporary4 = false; else {            Temporary4 = (ConstSet15[s_671088975[chckIndx(i_671088979, 0, (s_671088975).length - 1)]] != undefined);          }        if (!Temporary4) break Label3;
-          var c_671088998 = subInt(s_671088975[chckIndx(i_671088979, 0, (s_671088975).length - 1)], 48);
-          if ((b_671088976[b_671088976_Idx] <= divInt(subInt(2147483647, c_671088998), 10))) {
-          b_671088976[b_671088976_Idx] = addInt(mulInt(b_671088976[b_671088976_Idx], 10), c_671088998);
+          if (!(i_654311763 < (s_654311759).length)) Temporary4 = false; else {            Temporary4 = (ConstSet15[s_654311759[chckIndx(i_654311763, 0, (s_654311759).length - 1)]] != undefined);          }        if (!Temporary4) break Label3;
+          var c_654311782 = subInt(s_654311759[chckIndx(i_654311763, 0, (s_654311759).length - 1)], 48);
+          if ((b_654311760[b_654311760_Idx] <= divInt(subInt(2147483647, c_654311782), 10))) {
+          b_654311760[b_654311760_Idx] = addInt(mulInt(b_654311760[b_654311760_Idx], 10), c_654311782);
           }
           else {
-            b_671088976[b_671088976_Idx] = 2147483647;
+            b_654311760[b_654311760_Idx] = 2147483647;
           }
           
-          i_671088979 = addInt(i_671088979, 1);
+          i_654311763 = addInt(i_654311763, 1);
           Label5: do {
               Label6: while (true) {
-              if (!((i_671088979 < (s_671088975).length) && (s_671088975[chckIndx(i_671088979, 0, (s_671088975).length - 1)] == 95))) break Label6;
-                i_671088979 = addInt(i_671088979, 1);
+              if (!((i_654311763 < (s_654311759).length) && (s_654311759[chckIndx(i_654311763, 0, (s_654311759).length - 1)] == 95))) break Label6;
+                i_654311763 = addInt(i_654311763, 1);
               }
           } while (false);
         }
     } while (false);
-    result_671088978 = subInt(i_671088979, start_671088977);
+    result_654311762 = subInt(i_654311763, start_654311761);
     }
     
 
-  return result_671088978;
+  return result_654311762;
 
 }
 
-function HEX5BHEX5D_956304538(s_956304541, x_956304542) {
-  var result_956304543 = [];
+function HEX5BHEX5D_939527322(s_939527325, x_939527326) {
+  var result_939527327 = [];
 
-    var a_956304545 = x_956304542.a;
-    var L_956304547 = addInt(subInt(subInt((s_956304541).length, x_956304542.b), a_956304545), 1);
-    result_956304543 = nimCopy(null, mnewString(chckRange(L_956304547, 0, 2147483647)), NTI33554439);
+    var a_939527329 = x_939527326.a;
+    var L_939527331 = addInt(subInt(subInt((s_939527325).length, x_939527326.b), a_939527329), 1);
+    result_939527327 = nimCopy(null, mnewString(chckRange(L_939527331, 0, 2147483647)), NTI33554439);
     Label1: do {
-      var i_956304552 = 0;
-      var i_469762406 = 0;
+      var i_939527336 = 0;
+      var i_469762416 = 0;
       Label2: do {
           Label3: while (true) {
-          if (!(i_469762406 < L_956304547)) break Label3;
-            i_956304552 = i_469762406;
-            result_956304543[chckIndx(i_956304552, 0, (result_956304543).length - 1)] = s_956304541[chckIndx(addInt(i_956304552, a_956304545), 0, (s_956304541).length - 1)];
-            i_469762406 = addInt(i_469762406, 1);
+          if (!(i_469762416 < L_939527331)) break Label3;
+            i_939527336 = i_469762416;
+            result_939527327[chckIndx(i_939527336, 0, (result_939527327).length - 1)] = s_939527325[chckIndx(addInt(i_939527336, a_939527329), 0, (s_939527325).length - 1)];
+            i_469762416 = addInt(i_469762416, 1);
           }
       } while (false);
     } while (false);
 
-  return result_956304543;
+  return result_939527327;
 
 }
 
-function HEX2EHEX2E_889192528(a_889192531, b_889192532) {
-  var result_889192535 = ({a: 0, b: 0});
+function HEX2EHEX2E_872415312(a_872415315, b_872415316) {
+  var result_872415319 = ({a: 0, b: 0});
 
-    result_889192535 = nimCopy(result_889192535, {a: a_889192531, b: b_889192532}, NTI889192527);
+    result_872415319 = nimCopy(result_872415319, {a: a_872415315, b: b_872415316}, NTI872415311);
 
-  return result_889192535;
+  return result_872415319;
 
 }
 
@@ -1144,11 +1145,11 @@ function parseStandardFormatSpecifier_1358954554(s_1358954555, start_1358954556,
     i_1358954560 = addInt(i_1358954560, 1);
     }
     
-    var parsedLength_1358954597 = parseSaturatedNatural_671088974(s_1358954555, result_1358954558, "minimumWidth", i_1358954560);
+    var parsedLength_1358954597 = parseSaturatedNatural_654311758(s_1358954555, result_1358954558, "minimumWidth", i_1358954560);
     i_1358954560 = addInt(i_1358954560, parsedLength_1358954597);
     if (((i_1358954560 < (s_1358954555).length) && (s_1358954555[chckIndx(i_1358954560, 0, (s_1358954555).length - 1)] == 46))) {
     i_1358954560 = addInt(i_1358954560, 1);
-    var parsedLengthB_1358954606 = parseSaturatedNatural_671088974(s_1358954555, result_1358954558, "precision", i_1358954560);
+    var parsedLengthB_1358954606 = parseSaturatedNatural_654311758(s_1358954555, result_1358954558, "precision", i_1358954560);
     i_1358954560 = addInt(i_1358954560, parsedLengthB_1358954606);
     }
     else {
@@ -1162,7 +1163,7 @@ function parseStandardFormatSpecifier_1358954554(s_1358954555, start_1358954556,
     
     result_1358954558.endPosition = i_1358954560;
       if (!!((i_1358954560 == (s_1358954555).length))) Temporary3 = false; else {        Temporary3 = !(ignoreUnknownSuffix_1358954557);      }    if (Temporary3) {
-    raiseException({message: (makeNimstrLit("invalid format string, cannot parse: ") || []).concat(HEX5BHEX5D_956304538(s_1358954555, HEX2EHEX2E_889192528(i_1358954560, 1)) || []), parent: null, m_type: NTI33555125, name: null, trace: [], up: null}, "ValueError");
+    raiseException({message: (makeNimstrLit("invalid format string, cannot parse: ") || []).concat(HEX5BHEX5D_939527322(s_1358954555, HEX2EHEX2E_872415312(i_1358954560, 1)) || []), parent: null, m_type: NTI33555125, name: null, trace: [], up: null}, "ValueError");
     }
     
 
@@ -1170,111 +1171,111 @@ function parseStandardFormatSpecifier_1358954554(s_1358954555, start_1358954556,
 
 }
 
-function nucruneLen(s_956301322) {
-  var result_956301323 = 0;
+function nucruneLen(s_939524106) {
+  var result_939524107 = 0;
 
-    result_956301323 = 0;
-    var i_956301324 = 0;
+    result_939524107 = 0;
+    var i_939524108 = 0;
     Label1: do {
         Label2: while (true) {
-        if (!(i_956301324 < (s_956301322).length)) break Label2;
-          if ((s_956301322[chckIndx(i_956301324, 0, (s_956301322).length - 1)] <= 127)) {
-          i_956301324 = addInt(i_956301324, 1);
+        if (!(i_939524108 < (s_939524106).length)) break Label2;
+          if ((s_939524106[chckIndx(i_939524108, 0, (s_939524106).length - 1)] <= 127)) {
+          i_939524108 = addInt(i_939524108, 1);
           }
           else {
-          if (((s_956301322[chckIndx(i_956301324, 0, (s_956301322).length - 1)] >>> 5) == 6)) {
-          i_956301324 = addInt(i_956301324, 2);
+          if (((s_939524106[chckIndx(i_939524108, 0, (s_939524106).length - 1)] >>> 5) == 6)) {
+          i_939524108 = addInt(i_939524108, 2);
           }
           else {
-          if (((s_956301322[chckIndx(i_956301324, 0, (s_956301322).length - 1)] >>> 4) == 14)) {
-          i_956301324 = addInt(i_956301324, 3);
+          if (((s_939524106[chckIndx(i_939524108, 0, (s_939524106).length - 1)] >>> 4) == 14)) {
+          i_939524108 = addInt(i_939524108, 3);
           }
           else {
-          if (((s_956301322[chckIndx(i_956301324, 0, (s_956301322).length - 1)] >>> 3) == 30)) {
-          i_956301324 = addInt(i_956301324, 4);
+          if (((s_939524106[chckIndx(i_939524108, 0, (s_939524106).length - 1)] >>> 3) == 30)) {
+          i_939524108 = addInt(i_939524108, 4);
           }
           else {
-          if (((s_956301322[chckIndx(i_956301324, 0, (s_956301322).length - 1)] >>> 2) == 62)) {
-          i_956301324 = addInt(i_956301324, 5);
+          if (((s_939524106[chckIndx(i_939524108, 0, (s_939524106).length - 1)] >>> 2) == 62)) {
+          i_939524108 = addInt(i_939524108, 5);
           }
           else {
-          if (((s_956301322[chckIndx(i_956301324, 0, (s_956301322).length - 1)] >>> 1) == 126)) {
-          i_956301324 = addInt(i_956301324, 6);
+          if (((s_939524106[chckIndx(i_939524108, 0, (s_939524106).length - 1)] >>> 1) == 126)) {
+          i_939524108 = addInt(i_939524108, 6);
           }
           else {
-          i_956301324 = addInt(i_956301324, 1);
+          i_939524108 = addInt(i_939524108, 1);
           }
           }}}}}
-          result_956301323 = addInt(result_956301323, 1);
+          result_939524107 = addInt(result_939524107, 1);
         }
     } while (false);
 
-  return result_956301323;
+  return result_939524107;
 
 }
 
-function runeLenAt_956301377(s_956301378, i_956301379) {
-  var result_956301380 = 0;
+function runeLenAt_939524161(s_939524162, i_939524163) {
+  var result_939524164 = 0;
 
-    if ((s_956301378[chckIndx(i_956301379, 0, (s_956301378).length - 1)] <= 127)) {
-    result_956301380 = 1;
+    if ((s_939524162[chckIndx(i_939524163, 0, (s_939524162).length - 1)] <= 127)) {
+    result_939524164 = 1;
     }
     else {
-    if (((s_956301378[chckIndx(i_956301379, 0, (s_956301378).length - 1)] >>> 5) == 6)) {
-    result_956301380 = 2;
+    if (((s_939524162[chckIndx(i_939524163, 0, (s_939524162).length - 1)] >>> 5) == 6)) {
+    result_939524164 = 2;
     }
     else {
-    if (((s_956301378[chckIndx(i_956301379, 0, (s_956301378).length - 1)] >>> 4) == 14)) {
-    result_956301380 = 3;
+    if (((s_939524162[chckIndx(i_939524163, 0, (s_939524162).length - 1)] >>> 4) == 14)) {
+    result_939524164 = 3;
     }
     else {
-    if (((s_956301378[chckIndx(i_956301379, 0, (s_956301378).length - 1)] >>> 3) == 30)) {
-    result_956301380 = 4;
+    if (((s_939524162[chckIndx(i_939524163, 0, (s_939524162).length - 1)] >>> 3) == 30)) {
+    result_939524164 = 4;
     }
     else {
-    if (((s_956301378[chckIndx(i_956301379, 0, (s_956301378).length - 1)] >>> 2) == 62)) {
-    result_956301380 = 5;
+    if (((s_939524162[chckIndx(i_939524163, 0, (s_939524162).length - 1)] >>> 2) == 62)) {
+    result_939524164 = 5;
     }
     else {
-    if (((s_956301378[chckIndx(i_956301379, 0, (s_956301378).length - 1)] >>> 1) == 126)) {
-    result_956301380 = 6;
+    if (((s_939524162[chckIndx(i_939524163, 0, (s_939524162).length - 1)] >>> 1) == 126)) {
+    result_939524164 = 6;
     }
     else {
-      result_956301380 = 1;
+      result_939524164 = 1;
     }
     }}}}}
 
-  return result_956301380;
+  return result_939524164;
 
 }
 
-function runeOffset_956301949(s_956301950, pos_956301951, start_956301952) {
-  var result_956301953 = 0;
+function runeOffset_939524733(s_939524734, pos_939524735, start_939524736) {
+  var result_939524737 = 0;
 
   BeforeRet: do {
-    var i_956301954 = 0;
-    var o_956301955 = start_956301952;
+    var i_939524738 = 0;
+    var o_939524739 = start_939524736;
     Label1: do {
         Label2: while (true) {
-        if (!(i_956301954 < pos_956301951)) break Label2;
-          o_956301955 = addInt(o_956301955, chckRange(runeLenAt_956301377(s_956301950, o_956301955), 0, 2147483647));
-          if (((s_956301950).length <= o_956301955)) {
-          result_956301953 = -1;
+        if (!(i_939524738 < pos_939524735)) break Label2;
+          o_939524739 = addInt(o_939524739, chckRange(runeLenAt_939524161(s_939524734, o_939524739), 0, 2147483647));
+          if (((s_939524734).length <= o_939524739)) {
+          result_939524737 = -1;
           break BeforeRet;
           }
           
-          i_956301954 = addInt(i_956301954, 1);
+          i_939524738 = addInt(i_939524738, 1);
         }
     } while (false);
-    result_956301953 = o_956301955;
+    result_939524737 = o_939524739;
     break BeforeRet;
   } while (false);
 
-  return result_956301953;
+  return result_939524737;
 
 }
 
-function validateUtf8_956301589(s_956301590) {
+function validateUtf8_939524373(s_939524374) {
             var Temporary3;
             var Temporary4;
             var Temporary5;
@@ -1282,90 +1283,90 @@ function validateUtf8_956301589(s_956301590) {
             var Temporary7;
             var Temporary8;
 
-  var result_956301591 = 0;
+  var result_939524375 = 0;
 
   BeforeRet: do {
-    var i_956301592 = 0;
-    var L_956301593 = (s_956301590).length;
+    var i_939524376 = 0;
+    var L_939524377 = (s_939524374).length;
     Label1: do {
         Label2: while (true) {
-        if (!(i_956301592 < L_956301593)) break Label2;
-          if ((s_956301590[chckIndx(i_956301592, 0, (s_956301590).length - 1)] <= 127)) {
-          i_956301592 = addInt(i_956301592, 1);
+        if (!(i_939524376 < L_939524377)) break Label2;
+          if ((s_939524374[chckIndx(i_939524376, 0, (s_939524374).length - 1)] <= 127)) {
+          i_939524376 = addInt(i_939524376, 1);
           }
           else {
-          if (((s_956301590[chckIndx(i_956301592, 0, (s_956301590).length - 1)] >>> 5) == 6)) {
-          if ((s_956301590[chckIndx(i_956301592, 0, (s_956301590).length - 1)] < 194)) {
-          result_956301591 = i_956301592;
+          if (((s_939524374[chckIndx(i_939524376, 0, (s_939524374).length - 1)] >>> 5) == 6)) {
+          if ((s_939524374[chckIndx(i_939524376, 0, (s_939524374).length - 1)] < 194)) {
+          result_939524375 = i_939524376;
           break BeforeRet;
           }
           
-            if (!(addInt(i_956301592, 1) < L_956301593)) Temporary3 = false; else {              Temporary3 = ((s_956301590[chckIndx(addInt(i_956301592, 1), 0, (s_956301590).length - 1)] >>> 6) == 2);            }          if (Temporary3) {
-          i_956301592 = addInt(i_956301592, 2);
+            if (!(addInt(i_939524376, 1) < L_939524377)) Temporary3 = false; else {              Temporary3 = ((s_939524374[chckIndx(addInt(i_939524376, 1), 0, (s_939524374).length - 1)] >>> 6) == 2);            }          if (Temporary3) {
+          i_939524376 = addInt(i_939524376, 2);
           }
           else {
-            result_956301591 = i_956301592;
+            result_939524375 = i_939524376;
             break BeforeRet;
           }
           
           }
           else {
-          if (((s_956301590[chckIndx(i_956301592, 0, (s_956301590).length - 1)] >>> 4) == 14)) {
-            if (!(addInt(i_956301592, 2) < L_956301593)) Temporary5 = false; else {              Temporary5 = ((s_956301590[chckIndx(addInt(i_956301592, 1), 0, (s_956301590).length - 1)] >>> 6) == 2);            }            if (!Temporary5) Temporary4 = false; else {              Temporary4 = ((s_956301590[chckIndx(addInt(i_956301592, 2), 0, (s_956301590).length - 1)] >>> 6) == 2);            }          if (Temporary4) {
-          i_956301592 = addInt(i_956301592, 3);
+          if (((s_939524374[chckIndx(i_939524376, 0, (s_939524374).length - 1)] >>> 4) == 14)) {
+            if (!(addInt(i_939524376, 2) < L_939524377)) Temporary5 = false; else {              Temporary5 = ((s_939524374[chckIndx(addInt(i_939524376, 1), 0, (s_939524374).length - 1)] >>> 6) == 2);            }            if (!Temporary5) Temporary4 = false; else {              Temporary4 = ((s_939524374[chckIndx(addInt(i_939524376, 2), 0, (s_939524374).length - 1)] >>> 6) == 2);            }          if (Temporary4) {
+          i_939524376 = addInt(i_939524376, 3);
           }
           else {
-            result_956301591 = i_956301592;
+            result_939524375 = i_939524376;
             break BeforeRet;
           }
           
           }
           else {
-          if (((s_956301590[chckIndx(i_956301592, 0, (s_956301590).length - 1)] >>> 3) == 30)) {
-            if (!(addInt(i_956301592, 3) < L_956301593)) Temporary8 = false; else {              Temporary8 = ((s_956301590[chckIndx(addInt(i_956301592, 1), 0, (s_956301590).length - 1)] >>> 6) == 2);            }            if (!Temporary8) Temporary7 = false; else {              Temporary7 = ((s_956301590[chckIndx(addInt(i_956301592, 2), 0, (s_956301590).length - 1)] >>> 6) == 2);            }            if (!Temporary7) Temporary6 = false; else {              Temporary6 = ((s_956301590[chckIndx(addInt(i_956301592, 3), 0, (s_956301590).length - 1)] >>> 6) == 2);            }          if (Temporary6) {
-          i_956301592 = addInt(i_956301592, 4);
+          if (((s_939524374[chckIndx(i_939524376, 0, (s_939524374).length - 1)] >>> 3) == 30)) {
+            if (!(addInt(i_939524376, 3) < L_939524377)) Temporary8 = false; else {              Temporary8 = ((s_939524374[chckIndx(addInt(i_939524376, 1), 0, (s_939524374).length - 1)] >>> 6) == 2);            }            if (!Temporary8) Temporary7 = false; else {              Temporary7 = ((s_939524374[chckIndx(addInt(i_939524376, 2), 0, (s_939524374).length - 1)] >>> 6) == 2);            }            if (!Temporary7) Temporary6 = false; else {              Temporary6 = ((s_939524374[chckIndx(addInt(i_939524376, 3), 0, (s_939524374).length - 1)] >>> 6) == 2);            }          if (Temporary6) {
+          i_939524376 = addInt(i_939524376, 4);
           }
           else {
-            result_956301591 = i_956301592;
+            result_939524375 = i_939524376;
             break BeforeRet;
           }
           
           }
           else {
-            result_956301591 = i_956301592;
+            result_939524375 = i_939524376;
             break BeforeRet;
           }
           }}}
         }
     } while (false);
-    result_956301591 = -1;
+    result_939524375 = -1;
     break BeforeRet;
   } while (false);
 
-  return result_956301591;
+  return result_939524375;
 
 }
 
-function nsuRepeatChar(c_654312443, count_654312444) {
-  var result_654312445 = [];
+function nsuRepeatChar(c_637535227, count_637535228) {
+  var result_637535229 = [];
 
-    result_654312445 = nimCopy(null, mnewString(count_654312444), NTI33554439);
+    result_637535229 = nimCopy(null, mnewString(count_637535228), NTI33554439);
     Label1: do {
-      var i_654312450 = 0;
-      var colontmp__469762412 = 0;
-      colontmp__469762412 = subInt(count_654312444, 1);
-      var res_469762413 = 0;
+      var i_637535234 = 0;
+      var colontmp__469762422 = 0;
+      colontmp__469762422 = subInt(count_637535228, 1);
+      var res_469762423 = 0;
       Label2: do {
           Label3: while (true) {
-          if (!(res_469762413 <= colontmp__469762412)) break Label3;
-            i_654312450 = res_469762413;
-            result_654312445[chckIndx(i_654312450, 0, (result_654312445).length - 1)] = c_654312443;
-            res_469762413 = addInt(res_469762413, 1);
+          if (!(res_469762423 <= colontmp__469762422)) break Label3;
+            i_637535234 = res_469762423;
+            result_637535229[chckIndx(i_637535234, 0, (result_637535229).length - 1)] = c_637535227;
+            res_469762423 = addInt(res_469762423, 1);
           }
       } while (false);
     } while (false);
 
-  return result_654312445;
+  return result_637535229;
 
 }
 
@@ -1378,7 +1379,7 @@ function alignString_1358954516(s_1358954517, minimumWidth_1358954518, align_135
     result_1358954521 = nimCopy(null, s_1358954517, NTI33554439);
     }
     else {
-      if ((validateUtf8_956301589(s_1358954517) == -1)) {
+      if ((validateUtf8_939524373(s_1358954517) == -1)) {
       Temporary1 = nucruneLen(s_1358954517);
       }
       else {
@@ -1423,7 +1424,7 @@ function formatValue_1358954658(result_1358954659, result_1358954659_Idx, value_
     }
     if (!((spec_1358954662.precision == -1))) {
     if ((spec_1358954662.precision < nucruneLen(value_1358954663))) {
-    (value_1358954663.length = chckRange(runeOffset_956301949(value_1358954663, chckRange(spec_1358954662.precision, 0, 2147483647), 0), 0, 2147483647));
+    (value_1358954663.length = chckRange(runeOffset_939524733(value_1358954663, chckRange(spec_1358954662.precision, 0, 2147483647), 0), 0, 2147483647));
     }
     
     }
@@ -1479,115 +1480,115 @@ function mkDigit_1358954501(v_1358954502, typ_1358954503) {
 
 }
 
-function formatInt_469762189(n_469762191, radix_469762192, spec_469762193) {
+function formatInt_469762199(n_469762201, radix_469762202, spec_469762203) {
     var Temporary1;
     var Temporary8;
 
-  var result_469762194 = [];
+  var result_469762204 = [];
 
-    var n_469762197 = n_469762191;
-    var negative_469762198 = (n_469762197 < 0);
-    if (negative_469762198) {
-    Temporary1 = ((~(n_469762197) + 1) );
+    var n_469762207 = n_469762201;
+    var negative_469762208 = (n_469762207 < 0);
+    if (negative_469762208) {
+    Temporary1 = ((~(n_469762207) + 1) );
     }
     else {
-    Temporary1 = n_469762197;
+    Temporary1 = n_469762207;
     }
     
-    var v_469762199 = Temporary1;
-    var xx_469762200 = [];
-    if (spec_469762193.alternateForm) {
-    switch (spec_469762193.typ) {
+    var v_469762209 = Temporary1;
+    var xx_469762210 = [];
+    if (spec_469762203.alternateForm) {
+    switch (spec_469762203.typ) {
     case 88:
-      xx_469762200 = nimCopy(null, makeNimstrLit("0x"), NTI33554439);
+      xx_469762210 = nimCopy(null, makeNimstrLit("0x"), NTI33554439);
       break;
     case 120:
-      xx_469762200 = nimCopy(null, makeNimstrLit("0x"), NTI33554439);
+      xx_469762210 = nimCopy(null, makeNimstrLit("0x"), NTI33554439);
       break;
     case 98:
-      xx_469762200 = nimCopy(null, makeNimstrLit("0b"), NTI33554439);
+      xx_469762210 = nimCopy(null, makeNimstrLit("0b"), NTI33554439);
       break;
     case 111:
-      xx_469762200 = nimCopy(null, makeNimstrLit("0o"), NTI33554439);
+      xx_469762210 = nimCopy(null, makeNimstrLit("0o"), NTI33554439);
       break;
     default: 
       break;
     }
     }
     
-    if ((v_469762199 == 0)) {
-    result_469762194 = nimCopy(null, makeNimstrLit("0"), NTI33554439);
+    if ((v_469762209 == 0)) {
+    result_469762204 = nimCopy(null, makeNimstrLit("0"), NTI33554439);
     }
     else {
-      result_469762194 = nimCopy(null, [], NTI33554439);
+      result_469762204 = nimCopy(null, [], NTI33554439);
       Label2: do {
           Label3: while (true) {
-          if (!(0 < v_469762199)) break Label3;
-            var d_469762201 = (v_469762199 % radix_469762192);
-            v_469762199 = Math.trunc(((v_469762199 / radix_469762192) ));
-            result_469762194.push.apply(result_469762194, mkDigit_1358954501(chckRange(d_469762201, -2147483648, 2147483647), spec_469762193.typ));;
+          if (!(0 < v_469762209)) break Label3;
+            var d_469762211 = (v_469762209 % radix_469762202);
+            v_469762209 = Math.trunc(((v_469762209 / radix_469762202) ));
+            result_469762204.push.apply(result_469762204, mkDigit_1358954501(chckRange(d_469762211, -2147483648, 2147483647), spec_469762203.typ));;
           }
       } while (false);
       Label4: do {
-        var idx_469762206 = 0;
-        var colontmp__469762417 = 0;
-        colontmp__469762417 = divInt((result_469762194).length, 2);
-        var i_469762418 = 0;
+        var idx_469762216 = 0;
+        var colontmp__469762427 = 0;
+        colontmp__469762427 = divInt((result_469762204).length, 2);
+        var i_469762428 = 0;
         Label5: do {
             Label6: while (true) {
-            if (!(i_469762418 < colontmp__469762417)) break Label6;
-              idx_469762206 = i_469762418;
-              var Temporary7 = result_469762194[chckIndx(idx_469762206, 0, (result_469762194).length - 1)]; result_469762194[chckIndx(idx_469762206, 0, (result_469762194).length - 1)] = result_469762194[chckIndx(subInt(subInt((result_469762194).length, idx_469762206), 1), 0, (result_469762194).length - 1)]; result_469762194[chckIndx(subInt(subInt((result_469762194).length, idx_469762206), 1), 0, (result_469762194).length - 1)] = Temporary7;              i_469762418 = addInt(i_469762418, 1);
+            if (!(i_469762428 < colontmp__469762427)) break Label6;
+              idx_469762216 = i_469762428;
+              var Temporary7 = result_469762204[chckIndx(idx_469762216, 0, (result_469762204).length - 1)]; result_469762204[chckIndx(idx_469762216, 0, (result_469762204).length - 1)] = result_469762204[chckIndx(subInt(subInt((result_469762204).length, idx_469762216), 1), 0, (result_469762204).length - 1)]; result_469762204[chckIndx(subInt(subInt((result_469762204).length, idx_469762216), 1), 0, (result_469762204).length - 1)] = Temporary7;              i_469762428 = addInt(i_469762428, 1);
             }
         } while (false);
       } while (false);
     }
     
-    if (spec_469762193.padWithZero) {
-    if (negative_469762198) Temporary8 = true; else {      Temporary8 = !((spec_469762193.sign == 45));    }    var sign_469762211 = Temporary8;
-    var toFill_469762215 = subInt(subInt(subInt(spec_469762193.minimumWidth, (result_469762194).length), (xx_469762200).length), (sign_469762211 ? 1 : 0));
-    if ((0 < toFill_469762215)) {
-    result_469762194 = nimCopy(null, (nsuRepeatChar(48, chckRange(toFill_469762215, 0, 2147483647)) || []).concat(result_469762194 || []), NTI33554439);
+    if (spec_469762203.padWithZero) {
+    if (negative_469762208) Temporary8 = true; else {      Temporary8 = !((spec_469762203.sign == 45));    }    var sign_469762221 = Temporary8;
+    var toFill_469762225 = subInt(subInt(subInt(spec_469762203.minimumWidth, (result_469762204).length), (xx_469762210).length), (sign_469762221 ? 1 : 0));
+    if ((0 < toFill_469762225)) {
+    result_469762204 = nimCopy(null, (nsuRepeatChar(48, chckRange(toFill_469762225, 0, 2147483647)) || []).concat(result_469762204 || []), NTI33554439);
     }
     
     }
     
-    if (negative_469762198) {
-    result_469762194 = nimCopy(null, (makeNimstrLit("-") || []).concat(xx_469762200 || [],result_469762194 || []), NTI33554439);
+    if (negative_469762208) {
+    result_469762204 = nimCopy(null, (makeNimstrLit("-") || []).concat(xx_469762210 || [],result_469762204 || []), NTI33554439);
     }
     else {
-    if (!((spec_469762193.sign == 45))) {
-    result_469762194 = nimCopy(null, [spec_469762193.sign].concat(xx_469762200 || [],result_469762194 || []), NTI33554439);
+    if (!((spec_469762203.sign == 45))) {
+    result_469762204 = nimCopy(null, [spec_469762203.sign].concat(xx_469762210 || [],result_469762204 || []), NTI33554439);
     }
     else {
-      result_469762194 = nimCopy(null, (xx_469762200 || []).concat(result_469762194 || []), NTI33554439);
+      result_469762204 = nimCopy(null, (xx_469762210 || []).concat(result_469762204 || []), NTI33554439);
     }
     }
-    if ((spec_469762193.align == 60)) {
+    if ((spec_469762203.align == 60)) {
     Label9: do {
-      var i_469762220 = 0;
-      var colontmp__469762421 = 0;
-      colontmp__469762421 = (result_469762194).length;
-      var i_469762422 = colontmp__469762421;
+      var i_469762230 = 0;
+      var colontmp__469762431 = 0;
+      colontmp__469762431 = (result_469762204).length;
+      var i_469762432 = colontmp__469762431;
       Label10: do {
           Label11: while (true) {
-          if (!(i_469762422 < spec_469762193.minimumWidth)) break Label11;
-            i_469762220 = i_469762422;
-            addChar(result_469762194, spec_469762193.fill);;
-            i_469762422 = addInt(i_469762422, 1);
+          if (!(i_469762432 < spec_469762203.minimumWidth)) break Label11;
+            i_469762230 = i_469762432;
+            addChar(result_469762204, spec_469762203.fill);;
+            i_469762432 = addInt(i_469762432, 1);
           }
       } while (false);
     } while (false);
     }
     else {
-      var toFill_469762221 = subInt(spec_469762193.minimumWidth, (result_469762194).length);
-      if ((spec_469762193.align == 94)) {
-      var half_469762222 = divInt(toFill_469762221, 2);
-      result_469762194 = nimCopy(null, (nsuRepeatChar(spec_469762193.fill, chckRange(half_469762222, 0, 2147483647)) || []).concat(result_469762194 || [],nsuRepeatChar(spec_469762193.fill, chckRange(subInt(toFill_469762221, half_469762222), 0, 2147483647)) || []), NTI33554439);
+      var toFill_469762231 = subInt(spec_469762203.minimumWidth, (result_469762204).length);
+      if ((spec_469762203.align == 94)) {
+      var half_469762232 = divInt(toFill_469762231, 2);
+      result_469762204 = nimCopy(null, (nsuRepeatChar(spec_469762203.fill, chckRange(half_469762232, 0, 2147483647)) || []).concat(result_469762204 || [],nsuRepeatChar(spec_469762203.fill, chckRange(subInt(toFill_469762231, half_469762232), 0, 2147483647)) || []), NTI33554439);
       }
       else {
-        if ((0 < toFill_469762221)) {
-        result_469762194 = nimCopy(null, (nsuRepeatChar(spec_469762193.fill, chckRange(toFill_469762221, 0, 2147483647)) || []).concat(result_469762194 || []), NTI33554439);
+        if ((0 < toFill_469762231)) {
+        result_469762204 = nimCopy(null, (nsuRepeatChar(spec_469762203.fill, chckRange(toFill_469762231, 0, 2147483647)) || []).concat(result_469762204 || []), NTI33554439);
         }
         
       }
@@ -1595,168 +1596,168 @@ function formatInt_469762189(n_469762191, radix_469762192, spec_469762193) {
     }
     
 
-  return result_469762194;
+  return result_469762204;
 
 }
 
-function formatValue_469762181(result_469762183, result_469762183_Idx, value_469762184, specifier_469762185) {
+function formatValue_469762191(result_469762193, result_469762193_Idx, value_469762194, specifier_469762195) {
   BeforeRet: do {
-    if (((specifier_469762185).length == 0)) {
-    result_469762183[result_469762183_Idx].push.apply(result_469762183[result_469762183_Idx], HEX24_335544323(value_469762184));;
+    if (((specifier_469762195).length == 0)) {
+    result_469762193[result_469762193_Idx].push.apply(result_469762193[result_469762193_Idx], HEX24_335544323(value_469762194));;
     break BeforeRet;
     }
     
-    var spec_469762186 = parseStandardFormatSpecifier_1358954554(specifier_469762185, 0, false);
-    var radix_469762187 = 10;
-    switch (spec_469762186.typ) {
+    var spec_469762196 = parseStandardFormatSpecifier_1358954554(specifier_469762195, 0, false);
+    var radix_469762197 = 10;
+    switch (spec_469762196.typ) {
     case 120:
     case 88:
-      radix_469762187 = 16;
+      radix_469762197 = 16;
       break;
     case 100:
     case 0:
       break;
     case 98:
-      radix_469762187 = 2;
+      radix_469762197 = 2;
       break;
     case 111:
-      radix_469762187 = 8;
+      radix_469762197 = 8;
       break;
     default: 
-      raiseException({message: (makeNimstrLit("invalid type in format string for number, expected one  of \'x\', \'X\', \'b\', \'d\', \'o\' but got: ") || []).concat([spec_469762186.typ]), parent: null, m_type: NTI33555125, name: null, trace: [], up: null}, "ValueError");
+      raiseException({message: (makeNimstrLit("invalid type in format string for number, expected one  of \'x\', \'X\', \'b\', \'d\', \'o\' but got: ") || []).concat([spec_469762196.typ]), parent: null, m_type: NTI33555125, name: null, trace: [], up: null}, "ValueError");
       break;
     }
-    result_469762183[result_469762183_Idx].push.apply(result_469762183[result_469762183_Idx], formatInt_469762189(value_469762184, radix_469762187, spec_469762186));;
+    result_469762193[result_469762193_Idx].push.apply(result_469762193[result_469762193_Idx], formatInt_469762199(value_469762194, radix_469762197, spec_469762196));;
   } while (false);
 
   
 }
 
-function onInput(e_469762073) {
+function onInput(e_469762083) {
     
-function HEX3Aanonymous_469762235(a_469762240, b_469762241) {
-      var result_469762246 = 0;
+function HEX3Aanonymous_469762245(a_469762250, b_469762251) {
+      var result_469762256 = 0;
 
-        result_469762246 = subInt(b_469762241.score, a_469762240.score);
+        result_469762256 = subInt(b_469762251.score, a_469762250.score);
 
-      return result_469762246;
+      return result_469762256;
 
     }
 
   BeforeRet: do {
-    var searchContainer_469762074 = document.getElementById("search-results");
-    var matches_469762075 = [];
-    searchContainer_469762074.innerHTML = "";
-    var input_469762076 = e_469762073.target.value;
-    if ((input_469762076 == "")) {
+    var searchContainer_469762084 = document.getElementById("search-results");
+    var matches_469762085 = [];
+    searchContainer_469762084.innerHTML = "";
+    var input_469762086 = e_469762083.target.value;
+    if ((input_469762086 == "")) {
     break BeforeRet;
     }
     
     Label1: do {
-      var item_469762098 = ({title: [], slug: [], contentTokens: []});
-      var i_469762361 = 0;
-      var L_469762362 = (searchDB_469762055[0]).length;
+      var item_469762108 = ({title: [], slug: [], contentTokens: [], displayContent: []});
+      var i_469762371 = 0;
+      var L_469762372 = (searchDB_469762065[0]).length;
       Label2: do {
           Label3: while (true) {
-          if (!(i_469762361 < L_469762362)) break Label3;
-            item_469762098 = searchDB_469762055[0][chckIndx(i_469762361, 0, (searchDB_469762055[0]).length - 1)];
-            var title_469762099 = nsuReplaceStr(item_469762098.slug, makeNimstrLit(".html"), []);
+          if (!(i_469762371 < L_469762372)) break Label3;
+            item_469762108 = searchDB_469762065[0][chckIndx(i_469762371, 0, (searchDB_469762065[0]).length - 1)];
+            var title_469762109 = nsuReplaceStr(item_469762108.slug, makeNimstrLit(".html"), []);
             Label4: do {
-              var token_469762120 = [];
-              var i_469762357 = 0;
-              var L_469762358 = (item_469762098.contentTokens).length;
+              var token_469762130 = [];
+              var i_469762367 = 0;
+              var L_469762368 = (item_469762108.contentTokens).length;
               Label5: do {
                   Label6: while (true) {
-                  if (!(i_469762357 < L_469762358)) break Label6;
-                    token_469762120 = item_469762098.contentTokens[chckIndx(i_469762357, 0, (item_469762098.contentTokens).length - 1)];
-                    var colontmp__469762398 = fuzzyMatch_620757008(input_469762076, toJSStr(token_469762120));
-                    var score_469762121 = colontmp__469762398["Field0"];
-                    var match_469762122 = colontmp__469762398["Field1"];
-                    if (match_469762122) {
-                    var exists_469762123 = false;
+                  if (!(i_469762367 < L_469762368)) break Label6;
+                    token_469762130 = item_469762108.contentTokens[chckIndx(i_469762367, 0, (item_469762108.contentTokens).length - 1)];
+                    var colontmp__469762408 = fuzzyMatch_620757008(input_469762086, toJSStr(token_469762130));
+                    var score_469762131 = colontmp__469762408["Field0"];
+                    var match_469762132 = colontmp__469762408["Field1"];
+                    if (match_469762132) {
+                    var exists_469762133 = false;
                     Label7: do {
-                      var i_469762165 = 0;
-                      var m_469762166 = ({element: [], slug: [], count: 0, score: 0});
-                      var i_469762353 = 0;
-                      var L_469762354 = (matches_469762075).length;
+                      var i_469762175 = 0;
+                      var m_469762176 = ({element: [], slug: [], count: 0, score: 0});
+                      var i_469762363 = 0;
+                      var L_469762364 = (matches_469762085).length;
                       Label8: do {
                           Label9: while (true) {
-                          if (!(i_469762353 < L_469762354)) break Label9;
-                            i_469762165 = i_469762353;
-                            m_469762166 = nimCopy(m_469762166, matches_469762075[chckIndx(i_469762353, 0, (matches_469762075).length - 1)], NTI1392508931);
-                            if (eqStrings(m_469762166.slug, item_469762098.slug)) {
-                            exists_469762123 = true;
-                            matches_469762075[chckIndx(i_469762165, 0, (matches_469762075).length - 1)].count = addInt(m_469762166.count, 1);
-                            var fmtRes_469762175 = [mnewString(0)];
-                            fmtRes_469762175[0].push.apply(fmtRes_469762175[0], makeNimstrLit("<a href=\'"));;
-                            formatValue_1358954658(fmtRes_469762175, 0, item_469762098.slug, []);
-                            fmtRes_469762175[0].push.apply(fmtRes_469762175[0], makeNimstrLit("\'>"));;
-                            formatValue_1358954658(fmtRes_469762175, 0, title_469762099, []);
-                            fmtRes_469762175[0].push.apply(fmtRes_469762175[0], makeNimstrLit("("));;
-                            formatValue_469762181(fmtRes_469762175, 0, matches_469762075[chckIndx(i_469762165, 0, (matches_469762075).length - 1)].count, []);
-                            fmtRes_469762175[0].push.apply(fmtRes_469762175[0], makeNimstrLit(" matches)</a>"));;
-                            var webNode_469762223 = nimCopy(null, fmtRes_469762175[0], NTI33554439);
-                            matches_469762075[chckIndx(i_469762165, 0, (matches_469762075).length - 1)].element = nimCopy(null, webNode_469762223, NTI33554439);
+                          if (!(i_469762363 < L_469762364)) break Label9;
+                            i_469762175 = i_469762363;
+                            m_469762176 = nimCopy(m_469762176, matches_469762085[chckIndx(i_469762363, 0, (matches_469762085).length - 1)], NTI469762051);
+                            if (eqStrings(m_469762176.slug, item_469762108.slug)) {
+                            exists_469762133 = true;
+                            matches_469762085[chckIndx(i_469762175, 0, (matches_469762085).length - 1)].count = addInt(m_469762176.count, 1);
+                            var fmtRes_469762185 = [mnewString(0)];
+                            fmtRes_469762185[0].push.apply(fmtRes_469762185[0], makeNimstrLit("<a href=\'"));;
+                            formatValue_1358954658(fmtRes_469762185, 0, item_469762108.slug, []);
+                            fmtRes_469762185[0].push.apply(fmtRes_469762185[0], makeNimstrLit("\'>"));;
+                            formatValue_1358954658(fmtRes_469762185, 0, title_469762109, []);
+                            fmtRes_469762185[0].push.apply(fmtRes_469762185[0], makeNimstrLit("("));;
+                            formatValue_469762191(fmtRes_469762185, 0, matches_469762085[chckIndx(i_469762175, 0, (matches_469762085).length - 1)].count, []);
+                            fmtRes_469762185[0].push.apply(fmtRes_469762185[0], makeNimstrLit(" matches)</a>"));;
+                            var webNode_469762233 = nimCopy(null, fmtRes_469762185[0], NTI33554439);
+                            matches_469762085[chckIndx(i_469762175, 0, (matches_469762085).length - 1)].element = nimCopy(null, webNode_469762233, NTI33554439);
                             }
                             
-                            i_469762353 = addInt(i_469762353, 1);
-                            if (!(((matches_469762075).length == L_469762354))) {
+                            i_469762363 = addInt(i_469762363, 1);
+                            if (!(((matches_469762085).length == L_469762364))) {
                             failedAssertImpl_218103864(makeNimstrLit("iterators.nim(173, 11) `len(a) == L` the length of the seq changed while iterating over it"));
                             }
                             
                           }
                       } while (false);
                     } while (false);
-                    if (!(exists_469762123)) {
-                    var fmtRes_469762228 = [mnewString(0)];
-                    fmtRes_469762228[0].push.apply(fmtRes_469762228[0], makeNimstrLit("<a href=\'"));;
-                    formatValue_1358954658(fmtRes_469762228, 0, item_469762098.slug, []);
-                    fmtRes_469762228[0].push.apply(fmtRes_469762228[0], makeNimstrLit("\'>"));;
-                    formatValue_1358954658(fmtRes_469762228, 0, title_469762099, []);
-                    fmtRes_469762228[0].push.apply(fmtRes_469762228[0], makeNimstrLit("(1 match)</a>"));;
-                    var webNode_469762229 = nimCopy(null, fmtRes_469762228[0], NTI33554439);
-                    var sResult_469762230 = ({element: [], slug: [], count: 0, score: 0});
-                    sResult_469762230.slug = nimCopy(null, item_469762098.slug, NTI33554439);
-                    sResult_469762230.element = nimCopy(null, webNode_469762229, NTI33554439);
-                    sResult_469762230.score = score_469762121;
-                    sResult_469762230.count = 0;
-                    var Temporary10 = nimCopy(null, sResult_469762230, NTI1392508931);
-                    matches_469762075.push(Temporary10);;
+                    if (!(exists_469762133)) {
+                    var fmtRes_469762238 = [mnewString(0)];
+                    fmtRes_469762238[0].push.apply(fmtRes_469762238[0], makeNimstrLit("<a href=\'"));;
+                    formatValue_1358954658(fmtRes_469762238, 0, item_469762108.slug, []);
+                    fmtRes_469762238[0].push.apply(fmtRes_469762238[0], makeNimstrLit("\'>"));;
+                    formatValue_1358954658(fmtRes_469762238, 0, title_469762109, []);
+                    fmtRes_469762238[0].push.apply(fmtRes_469762238[0], makeNimstrLit("(1 match)</a>"));;
+                    var webNode_469762239 = nimCopy(null, fmtRes_469762238[0], NTI33554439);
+                    var sResult_469762240 = ({element: [], slug: [], count: 0, score: 0});
+                    sResult_469762240.slug = nimCopy(null, item_469762108.slug, NTI33554439);
+                    sResult_469762240.element = nimCopy(null, webNode_469762239, NTI33554439);
+                    sResult_469762240.score = score_469762131;
+                    sResult_469762240.count = 0;
+                    var Temporary10 = nimCopy(null, sResult_469762240, NTI469762051);
+                    matches_469762085.push(Temporary10);;
                     }
                     
                     }
                     
-                    i_469762357 = addInt(i_469762357, 1);
-                    if (!(((item_469762098.contentTokens).length == L_469762358))) {
+                    i_469762367 = addInt(i_469762367, 1);
+                    if (!(((item_469762108.contentTokens).length == L_469762368))) {
                     failedAssertImpl_218103864(makeNimstrLit("iterators.nim(240, 11) `len(a) == L` the length of the seq changed while iterating over it"));
                     }
                     
                   }
               } while (false);
             } while (false);
-            i_469762361 = addInt(i_469762361, 1);
-            if (!(((searchDB_469762055[0]).length == L_469762362))) {
+            i_469762371 = addInt(i_469762371, 1);
+            if (!(((searchDB_469762065[0]).length == L_469762372))) {
             failedAssertImpl_218103864(makeNimstrLit("iterators.nim(240, 11) `len(a) == L` the length of the seq changed while iterating over it"));
             }
             
           }
       } while (false);
     } while (false);
-    matches_469762075.sort(HEX3Aanonymous_469762235);
+    matches_469762085.sort(HEX3Aanonymous_469762245);
     Label11: do {
-      var m_469762275 = ({element: [], slug: [], count: 0, score: 0});
-      var i_469762366 = 0;
-      var L_469762367 = (matches_469762075).length;
+      var m_469762285 = ({element: [], slug: [], count: 0, score: 0});
+      var i_469762376 = 0;
+      var L_469762377 = (matches_469762085).length;
       Label12: do {
           Label13: while (true) {
-          if (!(i_469762366 < L_469762367)) break Label13;
-            m_469762275 = matches_469762075[chckIndx(i_469762366, 0, (matches_469762075).length - 1)];
-            var container_469762276 = document.createElement("div");
-            container_469762276.classList.add("mudkip-search-item");
-            container_469762276.innerHTML = toJSStr(m_469762275.element);
-            searchContainer_469762074.appendChild(container_469762276);
-            i_469762366 = addInt(i_469762366, 1);
-            if (!(((matches_469762075).length == L_469762367))) {
+          if (!(i_469762376 < L_469762377)) break Label13;
+            m_469762285 = matches_469762085[chckIndx(i_469762376, 0, (matches_469762085).length - 1)];
+            var container_469762286 = document.createElement("div");
+            container_469762286.classList.add("mudkip-search-item");
+            container_469762286.innerHTML = toJSStr(m_469762285.element);
+            searchContainer_469762084.appendChild(container_469762286);
+            i_469762376 = addInt(i_469762376, 1);
+            if (!(((matches_469762085).length == L_469762377))) {
             failedAssertImpl_218103864(makeNimstrLit("iterators.nim(240, 11) `len(a) == L` the length of the seq changed while iterating over it"));
             }
             
@@ -1768,34 +1769,100 @@ function HEX3Aanonymous_469762235(a_469762240, b_469762241) {
   
 }
 
-function parseHex_654312325(s_654312327, number_654312328, number_654312328_Idx, start_654312329, maxLen_654312330) {
+function HEX3CHEX3DHEX25_33555429(x_33555430, y_33555431) {
+  var result_33555432 = false;
+
+    result_33555432 = ((x_33555430 >>> 0) <= (y_33555431 >>> 0));
+
+  return result_33555432;
+
+}
+
+function nuctoUTF8(c_939524437) {
+  var result_939524438 = [];
+
+    result_939524438 = nimCopy(null, [], NTI33554439);
+    var iHEX60gensym49_939524440 = c_939524437;
+    if (HEX3CHEX3DHEX25_33555429(iHEX60gensym49_939524440, 127)) {
+    (result_939524438.length = 1);
+    result_939524438[chckIndx(0, 0, (result_939524438).length - 1)] = chckRange(iHEX60gensym49_939524440, 0, 255);
+    }
+    else {
+    if (HEX3CHEX3DHEX25_33555429(iHEX60gensym49_939524440, 2047)) {
+    (result_939524438.length = 2);
+    result_939524438[chckIndx(0, 0, (result_939524438).length - 1)] = chckRange(((iHEX60gensym49_939524440 >> 6) | 192), 0, 255);
+    result_939524438[chckIndx(1, 0, (result_939524438).length - 1)] = chckRange(((iHEX60gensym49_939524440 & 63) | 128), 0, 255);
+    }
+    else {
+    if (HEX3CHEX3DHEX25_33555429(iHEX60gensym49_939524440, 65535)) {
+    (result_939524438.length = 3);
+    result_939524438[chckIndx(0, 0, (result_939524438).length - 1)] = chckRange(((iHEX60gensym49_939524440 >> 12) | 224), 0, 255);
+    result_939524438[chckIndx(1, 0, (result_939524438).length - 1)] = chckRange((((iHEX60gensym49_939524440 >> 6) & 63) | 128), 0, 255);
+    result_939524438[chckIndx(2, 0, (result_939524438).length - 1)] = chckRange(((iHEX60gensym49_939524440 & 63) | 128), 0, 255);
+    }
+    else {
+    if (HEX3CHEX3DHEX25_33555429(iHEX60gensym49_939524440, 2097151)) {
+    (result_939524438.length = 4);
+    result_939524438[chckIndx(0, 0, (result_939524438).length - 1)] = chckRange(((iHEX60gensym49_939524440 >> 18) | 240), 0, 255);
+    result_939524438[chckIndx(1, 0, (result_939524438).length - 1)] = chckRange((((iHEX60gensym49_939524440 >> 12) & 63) | 128), 0, 255);
+    result_939524438[chckIndx(2, 0, (result_939524438).length - 1)] = chckRange((((iHEX60gensym49_939524440 >> 6) & 63) | 128), 0, 255);
+    result_939524438[chckIndx(3, 0, (result_939524438).length - 1)] = chckRange(((iHEX60gensym49_939524440 & 63) | 128), 0, 255);
+    }
+    else {
+    if (HEX3CHEX3DHEX25_33555429(iHEX60gensym49_939524440, 67108863)) {
+    (result_939524438.length = 5);
+    result_939524438[chckIndx(0, 0, (result_939524438).length - 1)] = chckRange(((iHEX60gensym49_939524440 >> 24) | 248), 0, 255);
+    result_939524438[chckIndx(1, 0, (result_939524438).length - 1)] = chckRange((((iHEX60gensym49_939524440 >> 18) & 63) | 128), 0, 255);
+    result_939524438[chckIndx(2, 0, (result_939524438).length - 1)] = chckRange((((iHEX60gensym49_939524440 >> 12) & 63) | 128), 0, 255);
+    result_939524438[chckIndx(3, 0, (result_939524438).length - 1)] = chckRange((((iHEX60gensym49_939524440 >> 6) & 63) | 128), 0, 255);
+    result_939524438[chckIndx(4, 0, (result_939524438).length - 1)] = chckRange(((iHEX60gensym49_939524440 & 63) | 128), 0, 255);
+    }
+    else {
+    if (HEX3CHEX3DHEX25_33555429(iHEX60gensym49_939524440, 2147483647)) {
+    (result_939524438.length = 6);
+    result_939524438[chckIndx(0, 0, (result_939524438).length - 1)] = chckRange(((iHEX60gensym49_939524440 >> 30) | 252), 0, 255);
+    result_939524438[chckIndx(1, 0, (result_939524438).length - 1)] = chckRange((((iHEX60gensym49_939524440 >> 24) & 63) | 128), 0, 255);
+    result_939524438[chckIndx(2, 0, (result_939524438).length - 1)] = chckRange((((iHEX60gensym49_939524440 >> 18) & 63) | 128), 0, 255);
+    result_939524438[chckIndx(3, 0, (result_939524438).length - 1)] = chckRange((((iHEX60gensym49_939524440 >> 12) & 63) | 128), 0, 255);
+    result_939524438[chckIndx(4, 0, (result_939524438).length - 1)] = chckRange((((iHEX60gensym49_939524440 >> 6) & 63) | 128), 0, 255);
+    result_939524438[chckIndx(5, 0, (result_939524438).length - 1)] = chckRange(((iHEX60gensym49_939524440 & 63) | 128), 0, 255);
+    }
+    else {
+    }
+    }}}}}
+
+  return result_939524438;
+
+}
+
+function parseHex_637535109(s_637535111, number_637535112, number_637535112_Idx, start_637535113, maxLen_637535114) {
     var Temporary1;
 
-  var result_654312331 = 0;
+  var result_637535115 = 0;
 
-    var i_654312332 = start_654312329;
-    var output_654312333 = 0;
-    var foundDigit_654312334 = false;
-    if ((maxLen_654312330 == 0)) {
-    Temporary1 = (s_654312327).length;
+    var i_637535116 = start_637535113;
+    var output_637535117 = 0;
+    var foundDigit_637535118 = false;
+    if ((maxLen_637535114 == 0)) {
+    Temporary1 = (s_637535111).length;
     }
     else {
-    Temporary1 = addInt(i_654312332, maxLen_654312330);
+    Temporary1 = addInt(i_637535116, maxLen_637535114);
     }
     
-    var last_654312335 = nimMin((s_654312327).length, Temporary1);
-    if ((((addInt(i_654312332, 1) < last_654312335) && (s_654312327[chckIndx(i_654312332, 0, (s_654312327).length - 1)] == 48)) && (ConstSet18[s_654312327[chckIndx(addInt(i_654312332, 1), 0, (s_654312327).length - 1)]] != undefined))) {
-    i_654312332 = addInt(i_654312332, 2);
+    var last_637535119 = nimMin((s_637535111).length, Temporary1);
+    if ((((addInt(i_637535116, 1) < last_637535119) && (s_637535111[chckIndx(i_637535116, 0, (s_637535111).length - 1)] == 48)) && (ConstSet18[s_637535111[chckIndx(addInt(i_637535116, 1), 0, (s_637535111).length - 1)]] != undefined))) {
+    i_637535116 = addInt(i_637535116, 2);
     }
     else {
-    if (((i_654312332 < last_654312335) && (s_654312327[chckIndx(i_654312332, 0, (s_654312327).length - 1)] == 35))) {
-    i_654312332 = addInt(i_654312332, 1);
+    if (((i_637535116 < last_637535119) && (s_637535111[chckIndx(i_637535116, 0, (s_637535111).length - 1)] == 35))) {
+    i_637535116 = addInt(i_637535116, 1);
     }
     }
     Label2: do {
         Label3: while (true) {
-        if (!(i_654312332 < last_654312335)) break Label3;
-          switch (s_654312327[chckIndx(i_654312332, 0, (s_654312327).length - 1)]) {
+        if (!(i_637535116 < last_637535119)) break Label3;
+          switch (s_637535111[chckIndx(i_637535116, 0, (s_637535111).length - 1)]) {
           case 95:
             break;
           case 48:
@@ -1808,8 +1875,8 @@ function parseHex_654312325(s_654312327, number_654312328, number_654312328_Idx,
           case 55:
           case 56:
           case 57:
-            output_654312333 = ((output_654312333 << 4) | subInt(s_654312327[chckIndx(i_654312332, 0, (s_654312327).length - 1)], 48));
-            foundDigit_654312334 = true;
+            output_637535117 = ((output_637535117 << 4) | subInt(s_637535111[chckIndx(i_637535116, 0, (s_637535111).length - 1)], 48));
+            foundDigit_637535118 = true;
             break;
           case 97:
           case 98:
@@ -1817,8 +1884,8 @@ function parseHex_654312325(s_654312327, number_654312328, number_654312328_Idx,
           case 100:
           case 101:
           case 102:
-            output_654312333 = ((output_654312333 << 4) | addInt(subInt(s_654312327[chckIndx(i_654312332, 0, (s_654312327).length - 1)], 97), 10));
-            foundDigit_654312334 = true;
+            output_637535117 = ((output_637535117 << 4) | addInt(subInt(s_637535111[chckIndx(i_637535116, 0, (s_637535111).length - 1)], 97), 10));
+            foundDigit_637535118 = true;
             break;
           case 65:
           case 66:
@@ -1826,218 +1893,180 @@ function parseHex_654312325(s_654312327, number_654312328, number_654312328_Idx,
           case 68:
           case 69:
           case 70:
-            output_654312333 = ((output_654312333 << 4) | addInt(subInt(s_654312327[chckIndx(i_654312332, 0, (s_654312327).length - 1)], 65), 10));
-            foundDigit_654312334 = true;
+            output_637535117 = ((output_637535117 << 4) | addInt(subInt(s_637535111[chckIndx(i_637535116, 0, (s_637535111).length - 1)], 65), 10));
+            foundDigit_637535118 = true;
             break;
           default: 
             break Label2;
             break;
           }
-          i_654312332 = addInt(i_654312332, 1);
+          i_637535116 = addInt(i_637535116, 1);
         }
     } while (false);
-    if (foundDigit_654312334) {
-    number_654312328[number_654312328_Idx] = output_654312333;
-    result_654312331 = subInt(i_654312332, start_654312329);
+    if (foundDigit_637535118) {
+    number_637535112[number_637535112_Idx] = output_637535117;
+    result_637535115 = subInt(i_637535116, start_637535113);
     }
     
 
-  return result_654312331;
+  return result_637535115;
 
 }
 
-function nsuParseHexInt(s_654312323) {
+function nsuParseHexInt(s_637535107) {
       var Temporary1;
 
-  var result_654312324 = [0];
+  var result_637535108 = [0];
 
-    result_654312324[0] = 0;
-    var L_654312382 = parseHex_654312325(s_654312323, result_654312324, 0, 0, 0);
-      if (!((L_654312382 == (s_654312323).length))) Temporary1 = true; else {        Temporary1 = (L_654312382 == 0);      }    if (Temporary1) {
-    raiseException({message: (makeNimstrLit("invalid hex integer: ") || []).concat(s_654312323 || []), parent: null, m_type: NTI33555125, name: null, trace: [], up: null}, "ValueError");
+    result_637535108[0] = 0;
+    var L_637535166 = parseHex_637535109(s_637535107, result_637535108, 0, 0, 0);
+      if (!((L_637535166 == (s_637535107).length))) Temporary1 = true; else {        Temporary1 = (L_637535166 == 0);      }    if (Temporary1) {
+    raiseException({message: (makeNimstrLit("invalid hex integer: ") || []).concat(s_637535107 || []), parent: null, m_type: NTI33555125, name: null, trace: [], up: null}, "ValueError");
     }
     
 
-  return result_654312324[0];
+  return result_637535108[0];
 
 }
 
-function HEX5BHEX5D_956302188(s_956302191, x_956302192) {
-  var result_956302193 = [];
+function HEX5BHEX5D_939524972(s_939524975, x_939524976) {
+  var result_939524977 = [];
 
-    var a_956302195 = x_956302192.a;
-    var L_956302197 = addInt(subInt(x_956302192.b, a_956302195), 1);
-    result_956302193 = nimCopy(null, mnewString(chckRange(L_956302197, 0, 2147483647)), NTI33554439);
+    var a_939524979 = x_939524976.a;
+    var L_939524981 = addInt(subInt(x_939524976.b, a_939524979), 1);
+    result_939524977 = nimCopy(null, mnewString(chckRange(L_939524981, 0, 2147483647)), NTI33554439);
     Label1: do {
-      var i_956302202 = 0;
-      var i_469762749 = 0;
+      var i_939524986 = 0;
+      var i_469762771 = 0;
       Label2: do {
           Label3: while (true) {
-          if (!(i_469762749 < L_956302197)) break Label3;
-            i_956302202 = i_469762749;
-            result_956302193[chckIndx(i_956302202, 0, (result_956302193).length - 1)] = s_956302191[chckIndx(addInt(i_956302202, a_956302195), 0, (s_956302191).length - 1)];
-            i_469762749 = addInt(i_469762749, 1);
+          if (!(i_469762771 < L_939524981)) break Label3;
+            i_939524986 = i_469762771;
+            result_939524977[chckIndx(i_939524986, 0, (result_939524977).length - 1)] = s_939524975[chckIndx(addInt(i_939524986, a_939524979), 0, (s_939524975).length - 1)];
+            i_469762771 = addInt(i_469762771, 1);
           }
       } while (false);
     } while (false);
 
-  return result_956302193;
+  return result_939524977;
 
 }
 
-function HEX2EHEX2E_956302163(a_956302166, b_956302167) {
-  var result_956302168 = ({a: 0, b: 0});
-
-    result_956302168 = nimCopy(result_956302168, {a: a_956302166, b: b_956302167}, NTI704643133);
-
-  return result_956302168;
-
-}
-
-function HEX3CHEX3DHEX25_33555429(x_33555430, y_33555431) {
-  var result_33555432 = false;
+function HEX2EHEX2E_939524947(a_939524950, b_939524951) {
+  var result_939524952 = ({a: 0, b: 0});
 
-    result_33555432 = ((x_33555430 >>> 0) <= (y_33555431 >>> 0));
+    result_939524952 = nimCopy(result_939524952, {a: a_939524950, b: b_939524951}, NTI687865917);
 
-  return result_33555432;
+  return result_939524952;
 
 }
 
-function nuctoUTF8(c_956301653) {
-  var result_956301654 = [];
+function parseUnicodeEscape_1006633146(s_1006633147, i_1006633148, i_1006633148_Idx) {
+  var result_1006633149 = 0;
 
-    result_956301654 = nimCopy(null, [], NTI33554439);
-    var iHEX60gensym49_956301656 = c_956301653;
-    if (HEX3CHEX3DHEX25_33555429(iHEX60gensym49_956301656, 127)) {
-    (result_956301654.length = 1);
-    result_956301654[chckIndx(0, 0, (result_956301654).length - 1)] = chckRange(iHEX60gensym49_956301656, 0, 255);
-    }
-    else {
-    if (HEX3CHEX3DHEX25_33555429(iHEX60gensym49_956301656, 2047)) {
-    (result_956301654.length = 2);
-    result_956301654[chckIndx(0, 0, (result_956301654).length - 1)] = chckRange(((iHEX60gensym49_956301656 >> 6) | 192), 0, 255);
-    result_956301654[chckIndx(1, 0, (result_956301654).length - 1)] = chckRange(((iHEX60gensym49_956301656 & 63) | 128), 0, 255);
-    }
-    else {
-    if (HEX3CHEX3DHEX25_33555429(iHEX60gensym49_956301656, 65535)) {
-    (result_956301654.length = 3);
-    result_956301654[chckIndx(0, 0, (result_956301654).length - 1)] = chckRange(((iHEX60gensym49_956301656 >> 12) | 224), 0, 255);
-    result_956301654[chckIndx(1, 0, (result_956301654).length - 1)] = chckRange((((iHEX60gensym49_956301656 >> 6) & 63) | 128), 0, 255);
-    result_956301654[chckIndx(2, 0, (result_956301654).length - 1)] = chckRange(((iHEX60gensym49_956301656 & 63) | 128), 0, 255);
+    i_1006633148[i_1006633148_Idx] += 1;
+    result_1006633149 = nsuParseHexInt(HEX5BHEX5D_939524972(s_1006633147, HEX2EHEX2E_939524947(i_1006633148[i_1006633148_Idx], ((i_1006633148[i_1006633148_Idx] + 4) - 1))));
+    i_1006633148[i_1006633148_Idx] += 3;
+    if (((result_1006633149 & 64512) == 55296)) {
+    i_1006633148[i_1006633148_Idx] += 1;
+    if (!((s_1006633147[i_1006633148[i_1006633148_Idx]] == 92))) {
+    raiseException({message: (makeNimstrLit("Found an Orphan Surrogate. At offset: ") || []).concat(HEX24_335544323(i_1006633148[i_1006633148_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
     }
-    else {
-    if (HEX3CHEX3DHEX25_33555429(iHEX60gensym49_956301656, 2097151)) {
-    (result_956301654.length = 4);
-    result_956301654[chckIndx(0, 0, (result_956301654).length - 1)] = chckRange(((iHEX60gensym49_956301656 >> 18) | 240), 0, 255);
-    result_956301654[chckIndx(1, 0, (result_956301654).length - 1)] = chckRange((((iHEX60gensym49_956301656 >> 12) & 63) | 128), 0, 255);
-    result_956301654[chckIndx(2, 0, (result_956301654).length - 1)] = chckRange((((iHEX60gensym49_956301656 >> 6) & 63) | 128), 0, 255);
-    result_956301654[chckIndx(3, 0, (result_956301654).length - 1)] = chckRange(((iHEX60gensym49_956301656 & 63) | 128), 0, 255);
-    }
-    else {
-    if (HEX3CHEX3DHEX25_33555429(iHEX60gensym49_956301656, 67108863)) {
-    (result_956301654.length = 5);
-    result_956301654[chckIndx(0, 0, (result_956301654).length - 1)] = chckRange(((iHEX60gensym49_956301656 >> 24) | 248), 0, 255);
-    result_956301654[chckIndx(1, 0, (result_956301654).length - 1)] = chckRange((((iHEX60gensym49_956301656 >> 18) & 63) | 128), 0, 255);
-    result_956301654[chckIndx(2, 0, (result_956301654).length - 1)] = chckRange((((iHEX60gensym49_956301656 >> 12) & 63) | 128), 0, 255);
-    result_956301654[chckIndx(3, 0, (result_956301654).length - 1)] = chckRange((((iHEX60gensym49_956301656 >> 6) & 63) | 128), 0, 255);
-    result_956301654[chckIndx(4, 0, (result_956301654).length - 1)] = chckRange(((iHEX60gensym49_956301656 & 63) | 128), 0, 255);
+    
+    i_1006633148[i_1006633148_Idx] += 1;
+    if (!((s_1006633147[i_1006633148[i_1006633148_Idx]] == 117))) {
+    raiseException({message: (makeNimstrLit("Found an Orphan Surrogate. At offset: ") || []).concat(HEX24_335544323(i_1006633148[i_1006633148_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
     }
-    else {
-    if (HEX3CHEX3DHEX25_33555429(iHEX60gensym49_956301656, 2147483647)) {
-    (result_956301654.length = 6);
-    result_956301654[chckIndx(0, 0, (result_956301654).length - 1)] = chckRange(((iHEX60gensym49_956301656 >> 30) | 252), 0, 255);
-    result_956301654[chckIndx(1, 0, (result_956301654).length - 1)] = chckRange((((iHEX60gensym49_956301656 >> 24) & 63) | 128), 0, 255);
-    result_956301654[chckIndx(2, 0, (result_956301654).length - 1)] = chckRange((((iHEX60gensym49_956301656 >> 18) & 63) | 128), 0, 255);
-    result_956301654[chckIndx(3, 0, (result_956301654).length - 1)] = chckRange((((iHEX60gensym49_956301656 >> 12) & 63) | 128), 0, 255);
-    result_956301654[chckIndx(4, 0, (result_956301654).length - 1)] = chckRange((((iHEX60gensym49_956301656 >> 6) & 63) | 128), 0, 255);
-    result_956301654[chckIndx(5, 0, (result_956301654).length - 1)] = chckRange(((iHEX60gensym49_956301656 & 63) | 128), 0, 255);
+    
+    i_1006633148[i_1006633148_Idx] += 1;
+    var nextRune_1006633218 = nsuParseHexInt(HEX5BHEX5D_939524972(s_1006633147, HEX2EHEX2E_939524947(i_1006633148[i_1006633148_Idx], ((i_1006633148[i_1006633148_Idx] + 4) - 1))));
+    i_1006633148[i_1006633148_Idx] += 3;
+    if (((nextRune_1006633218 & 64512) == 56320)) {
+    result_1006633149 = (65536 + (((result_1006633149 - 55296) << 10) | (nextRune_1006633218 - 56320)));
     }
-    else {
+    
     }
-    }}}}}
+    
 
-  return result_956301654;
+  return result_1006633149;
 
 }
 
-function parseStringSlow_637534393(s_637534394, i_637534395, i_637534395_Idx, v_637534396, v_637534396_Idx) {
+function parseStringSlow_1006633227(s_1006633228, i_1006633229, i_1006633229_Idx, v_1006633230, v_1006633230_Idx) {
     Label1: do {
         Label2: while (true) {
-        if (!(i_637534395[i_637534395_Idx] < (s_637534394).length)) break Label2;
-          var c_637534397 = s_637534394[i_637534395[i_637534395_Idx]];
-          switch (c_637534397) {
+        if (!(i_1006633229[i_1006633229_Idx] < (s_1006633228).length)) break Label2;
+          var c_1006633231 = s_1006633228[i_1006633229[i_1006633229_Idx]];
+          switch (c_1006633231) {
           case 34:
             break Label1;
             break;
           case 92:
-            i_637534395[i_637534395_Idx] += 1;
-            var c_637534402 = s_637534394[i_637534395[i_637534395_Idx]];
-            switch (c_637534402) {
+            i_1006633229[i_1006633229_Idx] += 1;
+            var c_1006633236 = s_1006633228[i_1006633229[i_1006633229_Idx]];
+            switch (c_1006633236) {
             case 34:
             case 92:
             case 47:
-              addChar(v_637534396[v_637534396_Idx], c_637534402);;
+              addChar(v_1006633230[v_1006633230_Idx], c_1006633236);;
               break;
             case 98:
-              addChar(v_637534396[v_637534396_Idx], 8);;
+              addChar(v_1006633230[v_1006633230_Idx], 8);;
               break;
             case 102:
-              addChar(v_637534396[v_637534396_Idx], 12);;
+              addChar(v_1006633230[v_1006633230_Idx], 12);;
               break;
             case 110:
-              addChar(v_637534396[v_637534396_Idx], 10);;
+              addChar(v_1006633230[v_1006633230_Idx], 10);;
               break;
             case 114:
-              addChar(v_637534396[v_637534396_Idx], 13);;
+              addChar(v_1006633230[v_1006633230_Idx], 13);;
               break;
             case 116:
-              addChar(v_637534396[v_637534396_Idx], 9);;
+              addChar(v_1006633230[v_1006633230_Idx], 9);;
               break;
             case 117:
-              i_637534395[i_637534395_Idx] += 1;
-              var u_637534430 = nsuParseHexInt(HEX5BHEX5D_956302188(s_637534394, HEX2EHEX2E_956302163(i_637534395[i_637534395_Idx], ((i_637534395[i_637534395_Idx] + 4) - 1))));
-              i_637534395[i_637534395_Idx] += 3;
-              v_637534396[v_637534396_Idx].push.apply(v_637534396[v_637534396_Idx], nuctoUTF8(((u_637534430) | 0)));;
+              v_1006633230[v_1006633230_Idx].push.apply(v_1006633230[v_1006633230_Idx], nuctoUTF8(((parseUnicodeEscape_1006633146(s_1006633228, i_1006633229, i_1006633229_Idx)) | 0)));;
               break;
             default: 
-              addChar(v_637534396[v_637534396_Idx], c_637534402);;
+              addChar(v_1006633230[v_1006633230_Idx], c_1006633236);;
               break;
             }
             break;
           default: 
-            addChar(v_637534396[v_637534396_Idx], c_637534397);;
+            addChar(v_1006633230[v_1006633230_Idx], c_1006633231);;
             break;
           }
-          i_637534395[i_637534395_Idx] += 1;
+          i_1006633229[i_1006633229_Idx] += 1;
         }
     } while (false);
     Label3: do {
         Label4: while (true) {
-        if (!(i_637534395[i_637534395_Idx] < (s_637534394).length)) break Label4;
-          var cHEX60gensym14_637534440 = s_637534394[i_637534395[i_637534395_Idx]];
-          if (!((whiteSpace_637534219[cHEX60gensym14_637534440] != undefined))) {
+        if (!(i_1006633229[i_1006633229_Idx] < (s_1006633228).length)) break Label4;
+          var cHEX60gensym21_1006633242 = s_1006633228[i_1006633229[i_1006633229_Idx]];
+          if (!((whiteSpace_1006632971[cHEX60gensym21_1006633242] != undefined))) {
           break Label3;
           }
           
-          i_637534395[i_637534395_Idx] += 1;
+          i_1006633229[i_1006633229_Idx] += 1;
         }
     } while (false);
-    if (((s_637534394).length <= i_637534395[i_637534395_Idx])) {
-    raiseException({message: (makeNimstrLit("Expected \" but end reached. At offset: ") || []).concat(HEX24_335544323(i_637534395[i_637534395_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    if (((s_1006633228).length <= i_1006633229[i_1006633229_Idx])) {
+    raiseException({message: (makeNimstrLit("Expected \" but end reached. At offset: ") || []).concat(HEX24_335544323(i_1006633229[i_1006633229_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
     }
     
-    if ((s_637534394[i_637534395[i_637534395_Idx]] == 34)) {
-    i_637534395[i_637534395_Idx] += 1;
+    if ((s_1006633228[i_1006633229[i_1006633229_Idx]] == 34)) {
+    i_1006633229[i_1006633229_Idx] += 1;
     }
     else {
-      raiseException({message: (makeNimstrLit("Expected \" but got ") || []).concat([s_637534394[i_637534395[i_637534395_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_637534395[i_637534395_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+      raiseException({message: (makeNimstrLit("Expected \" but got ") || []).concat([s_1006633228[i_1006633229[i_1006633229_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_1006633229[i_1006633229_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
     }
     
 
   
 }
 
-function parseHook_637534624(s_637534625, i_637534626, i_637534626_Idx, v_637534627, v_637534627_Idx) {
+function parseHook_1006633362(s_1006633363, i_1006633364, i_1006633364_Idx, v_1006633365, v_1006633365_Idx) {
       var Temporary3;
       var Temporary4;
       var Temporary5;
@@ -2046,109 +2075,109 @@ function parseHook_637534624(s_637534625, i_637534626, i_637534626_Idx, v_637534
   BeforeRet: do {
     Label1: do {
         Label2: while (true) {
-        if (!(i_637534626[i_637534626_Idx] < (s_637534625).length)) break Label2;
-          var cHEX60gensym47_637534629 = s_637534625[i_637534626[i_637534626_Idx]];
-          if (!((whiteSpace_637534219[cHEX60gensym47_637534629] != undefined))) {
+        if (!(i_1006633364[i_1006633364_Idx] < (s_1006633363).length)) break Label2;
+          var cHEX60gensym52_1006633367 = s_1006633363[i_1006633364[i_1006633364_Idx]];
+          if (!((whiteSpace_1006632971[cHEX60gensym52_1006633367] != undefined))) {
           break Label1;
           }
           
-          i_637534626[i_637534626_Idx] += 1;
+          i_1006633364[i_1006633364_Idx] += 1;
         }
     } while (false);
-      if (!((i_637534626[i_637534626_Idx] + 3) < (s_637534625).length)) Temporary6 = false; else {        Temporary6 = (s_637534625[(i_637534626[i_637534626_Idx] + 0)] == 110);      }      if (!Temporary6) Temporary5 = false; else {        Temporary5 = (s_637534625[(i_637534626[i_637534626_Idx] + 1)] == 117);      }      if (!Temporary5) Temporary4 = false; else {        Temporary4 = (s_637534625[(i_637534626[i_637534626_Idx] + 2)] == 108);      }      if (!Temporary4) Temporary3 = false; else {        Temporary3 = (s_637534625[(i_637534626[i_637534626_Idx] + 3)] == 108);      }    if (Temporary3) {
-    i_637534626[i_637534626_Idx] += 4;
+      if (!((i_1006633364[i_1006633364_Idx] + 3) < (s_1006633363).length)) Temporary6 = false; else {        Temporary6 = (s_1006633363[(i_1006633364[i_1006633364_Idx] + 0)] == 110);      }      if (!Temporary6) Temporary5 = false; else {        Temporary5 = (s_1006633363[(i_1006633364[i_1006633364_Idx] + 1)] == 117);      }      if (!Temporary5) Temporary4 = false; else {        Temporary4 = (s_1006633363[(i_1006633364[i_1006633364_Idx] + 2)] == 108);      }      if (!Temporary4) Temporary3 = false; else {        Temporary3 = (s_1006633363[(i_1006633364[i_1006633364_Idx] + 3)] == 108);      }    if (Temporary3) {
+    i_1006633364[i_1006633364_Idx] += 4;
     break BeforeRet;
     }
     
     Label7: do {
         Label8: while (true) {
-        if (!(i_637534626[i_637534626_Idx] < (s_637534625).length)) break Label8;
-          var cHEX60gensym51_637534643 = s_637534625[i_637534626[i_637534626_Idx]];
-          if (!((whiteSpace_637534219[cHEX60gensym51_637534643] != undefined))) {
+        if (!(i_1006633364[i_1006633364_Idx] < (s_1006633363).length)) break Label8;
+          var cHEX60gensym56_1006633381 = s_1006633363[i_1006633364[i_1006633364_Idx]];
+          if (!((whiteSpace_1006632971[cHEX60gensym56_1006633381] != undefined))) {
           break Label7;
           }
           
-          i_637534626[i_637534626_Idx] += 1;
+          i_1006633364[i_1006633364_Idx] += 1;
         }
     } while (false);
-    if (((s_637534625).length <= i_637534626[i_637534626_Idx])) {
-    raiseException({message: (makeNimstrLit("Expected \" but end reached. At offset: ") || []).concat(HEX24_335544323(i_637534626[i_637534626_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    if (((s_1006633363).length <= i_1006633364[i_1006633364_Idx])) {
+    raiseException({message: (makeNimstrLit("Expected \" but end reached. At offset: ") || []).concat(HEX24_335544323(i_1006633364[i_1006633364_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
     }
     
-    if ((s_637534625[i_637534626[i_637534626_Idx]] == 34)) {
-    i_637534626[i_637534626_Idx] += 1;
+    if ((s_1006633363[i_1006633364[i_1006633364_Idx]] == 34)) {
+    i_1006633364[i_1006633364_Idx] += 1;
     }
     else {
-      raiseException({message: (makeNimstrLit("Expected \" but got ") || []).concat([s_637534625[i_637534626[i_637534626_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_637534626[i_637534626_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+      raiseException({message: (makeNimstrLit("Expected \" but got ") || []).concat([s_1006633363[i_1006633364[i_1006633364_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_1006633364[i_1006633364_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
     }
     
-    parseStringSlow_637534393(s_637534625, i_637534626, i_637534626_Idx, v_637534627, v_637534627_Idx);
+    parseStringSlow_1006633227(s_1006633363, i_1006633364, i_1006633364_Idx, v_1006633365, v_1006633365_Idx);
   } while (false);
 
   
 }
 
-function parseHook_469762571(s_469762573, i_469762574, i_469762574_Idx, v_469762575, v_469762575_Idx) {
+function parseHook_469762581(s_469762583, i_469762584, i_469762584_Idx, v_469762585, v_469762585_Idx) {
             var Temporary7;
             var Temporary11;
 
     Label1: do {
         Label2: while (true) {
-        if (!(i_469762574[i_469762574_Idx] < (s_469762573).length)) break Label2;
-          var cHEX60gensym65_469762577 = s_469762573[i_469762574[i_469762574_Idx]];
-          if (!((whiteSpace_637534219[cHEX60gensym65_469762577] != undefined))) {
+        if (!(i_469762584[i_469762584_Idx] < (s_469762583).length)) break Label2;
+          var cHEX60gensym65_469762587 = s_469762583[i_469762584[i_469762584_Idx]];
+          if (!((whiteSpace_1006632971[cHEX60gensym65_469762587] != undefined))) {
           break Label1;
           }
           
-          i_469762574[i_469762574_Idx] += 1;
+          i_469762584[i_469762584_Idx] += 1;
         }
     } while (false);
-    if (((s_469762573).length <= i_469762574[i_469762574_Idx])) {
-    raiseException({message: (makeNimstrLit("Expected [ but end reached. At offset: ") || []).concat(HEX24_335544323(i_469762574[i_469762574_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    if (((s_469762583).length <= i_469762584[i_469762584_Idx])) {
+    raiseException({message: (makeNimstrLit("Expected [ but end reached. At offset: ") || []).concat(HEX24_335544323(i_469762584[i_469762584_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
     }
     
-    if ((s_469762573[i_469762574[i_469762574_Idx]] == 91)) {
-    i_469762574[i_469762574_Idx] += 1;
+    if ((s_469762583[i_469762584[i_469762584_Idx]] == 91)) {
+    i_469762584[i_469762584_Idx] += 1;
     }
     else {
-      raiseException({message: (makeNimstrLit("Expected [ but got ") || []).concat([s_469762573[i_469762574[i_469762574_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_469762574[i_469762574_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+      raiseException({message: (makeNimstrLit("Expected [ but got ") || []).concat([s_469762583[i_469762584[i_469762584_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_469762584[i_469762584_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
     }
     
     Label3: do {
         Label4: while (true) {
-        if (!(i_469762574[i_469762574_Idx] < (s_469762573).length)) break Label4;
+        if (!(i_469762584[i_469762584_Idx] < (s_469762583).length)) break Label4;
           Label5: do {
               Label6: while (true) {
-              if (!(i_469762574[i_469762574_Idx] < (s_469762573).length)) break Label6;
-                var cHEX60gensym75_469762593 = s_469762573[i_469762574[i_469762574_Idx]];
-                if (!((whiteSpace_637534219[cHEX60gensym75_469762593] != undefined))) {
+              if (!(i_469762584[i_469762584_Idx] < (s_469762583).length)) break Label6;
+                var cHEX60gensym75_469762603 = s_469762583[i_469762584[i_469762584_Idx]];
+                if (!((whiteSpace_1006632971[cHEX60gensym75_469762603] != undefined))) {
                 break Label5;
                 }
                 
-                i_469762574[i_469762574_Idx] += 1;
+                i_469762584[i_469762584_Idx] += 1;
               }
           } while (false);
-            if (!(i_469762574[i_469762574_Idx] < (s_469762573).length)) Temporary7 = false; else {              Temporary7 = (s_469762573[i_469762574[i_469762574_Idx]] == 93);            }          if (Temporary7) {
+            if (!(i_469762584[i_469762584_Idx] < (s_469762583).length)) Temporary7 = false; else {              Temporary7 = (s_469762583[i_469762584[i_469762584_Idx]] == 93);            }          if (Temporary7) {
           break Label3;
           }
           
-          var element_469762602 = [[]];
-          parseHook_637534624(s_469762573, i_469762574, i_469762574_Idx, element_469762602, 0);
-          var Temporary8 = nimCopy(null, element_469762602[0], NTI33554439);
-          v_469762575[v_469762575_Idx].push(Temporary8);;
+          var element_469762612 = [[]];
+          parseHook_1006633362(s_469762583, i_469762584, i_469762584_Idx, element_469762612, 0);
+          var Temporary8 = nimCopy(null, element_469762612[0], NTI33554439);
+          v_469762585[v_469762585_Idx].push(Temporary8);;
           Label9: do {
               Label10: while (true) {
-              if (!(i_469762574[i_469762574_Idx] < (s_469762573).length)) break Label10;
-                var cHEX60gensym79_469762608 = s_469762573[i_469762574[i_469762574_Idx]];
-                if (!((whiteSpace_637534219[cHEX60gensym79_469762608] != undefined))) {
+              if (!(i_469762584[i_469762584_Idx] < (s_469762583).length)) break Label10;
+                var cHEX60gensym79_469762618 = s_469762583[i_469762584[i_469762584_Idx]];
+                if (!((whiteSpace_1006632971[cHEX60gensym79_469762618] != undefined))) {
                 break Label9;
                 }
                 
-                i_469762574[i_469762574_Idx] += 1;
+                i_469762584[i_469762584_Idx] += 1;
               }
           } while (false);
-            if (!(i_469762574[i_469762574_Idx] < (s_469762573).length)) Temporary11 = false; else {              Temporary11 = (s_469762573[i_469762574[i_469762574_Idx]] == 44);            }          if (Temporary11) {
-          i_469762574[i_469762574_Idx] += 1;
+            if (!(i_469762584[i_469762584_Idx] < (s_469762583).length)) Temporary11 = false; else {              Temporary11 = (s_469762583[i_469762584[i_469762584_Idx]] == 44);            }          if (Temporary11) {
+          i_469762584[i_469762584_Idx] += 1;
           }
           else {
             break Label3;
@@ -2158,50 +2187,50 @@ function parseHook_469762571(s_469762573, i_469762574, i_469762574_Idx, v_469762
     } while (false);
     Label12: do {
         Label13: while (true) {
-        if (!(i_469762574[i_469762574_Idx] < (s_469762573).length)) break Label13;
-          var cHEX60gensym84_469762622 = s_469762573[i_469762574[i_469762574_Idx]];
-          if (!((whiteSpace_637534219[cHEX60gensym84_469762622] != undefined))) {
+        if (!(i_469762584[i_469762584_Idx] < (s_469762583).length)) break Label13;
+          var cHEX60gensym84_469762632 = s_469762583[i_469762584[i_469762584_Idx]];
+          if (!((whiteSpace_1006632971[cHEX60gensym84_469762632] != undefined))) {
           break Label12;
           }
           
-          i_469762574[i_469762574_Idx] += 1;
+          i_469762584[i_469762584_Idx] += 1;
         }
     } while (false);
-    if (((s_469762573).length <= i_469762574[i_469762574_Idx])) {
-    raiseException({message: (makeNimstrLit("Expected ] but end reached. At offset: ") || []).concat(HEX24_335544323(i_469762574[i_469762574_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    if (((s_469762583).length <= i_469762584[i_469762584_Idx])) {
+    raiseException({message: (makeNimstrLit("Expected ] but end reached. At offset: ") || []).concat(HEX24_335544323(i_469762584[i_469762584_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
     }
     
-    if ((s_469762573[i_469762574[i_469762574_Idx]] == 93)) {
-    i_469762574[i_469762574_Idx] += 1;
+    if ((s_469762583[i_469762584[i_469762584_Idx]] == 93)) {
+    i_469762584[i_469762584_Idx] += 1;
     }
     else {
-      raiseException({message: (makeNimstrLit("Expected ] but got ") || []).concat([s_469762573[i_469762574[i_469762574_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_469762574[i_469762574_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+      raiseException({message: (makeNimstrLit("Expected ] but got ") || []).concat([s_469762583[i_469762584[i_469762584_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_469762584[i_469762584_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
     }
     
 
   
 }
 
-function parseSymbol_637534288(s_637534289, i_637534290, i_637534290_Idx) {
-  var result_637534291 = [];
+function parseSymbol_1006633041(s_1006633042, i_1006633043, i_1006633043_Idx) {
+  var result_1006633044 = [];
 
   BeforeRet: do {
     Label1: do {
         Label2: while (true) {
-        if (!(i_637534290[i_637534290_Idx] < (s_637534289).length)) break Label2;
-          var cHEX60gensym0_637534293 = s_637534289[i_637534290[i_637534290_Idx]];
-          if (!((whiteSpace_637534219[cHEX60gensym0_637534293] != undefined))) {
+        if (!(i_1006633043[i_1006633043_Idx] < (s_1006633042).length)) break Label2;
+          var cHEX60gensym0_1006633046 = s_1006633042[i_1006633043[i_1006633043_Idx]];
+          if (!((whiteSpace_1006632971[cHEX60gensym0_1006633046] != undefined))) {
           break Label1;
           }
           
-          i_637534290[i_637534290_Idx] += 1;
+          i_1006633043[i_1006633043_Idx] += 1;
         }
     } while (false);
-    var j_637534302 = i_637534290[i_637534290_Idx];
+    var j_1006633055 = i_1006633043[i_1006633043_Idx];
     Label3: do {
         Label4: while (true) {
-        if (!(i_637534290[i_637534290_Idx] < (s_637534289).length)) break Label4;
-          switch (s_637534289[i_637534290[i_637534290_Idx]]) {
+        if (!(i_1006633043[i_1006633043_Idx] < (s_1006633042).length)) break Label4;
+          switch (s_1006633042[i_1006633043[i_1006633043_Idx]]) {
           case 44:
           case 125:
           case 93:
@@ -2214,18 +2243,18 @@ function parseSymbol_637534288(s_637534289, i_637534290, i_637534290_Idx) {
           default: 
             break;
           }
-          i_637534290[i_637534290_Idx] += 1;
+          i_1006633043[i_1006633043_Idx] += 1;
         }
     } while (false);
-    result_637534291 = nimCopy(null, HEX5BHEX5D_956302188(s_637534289, HEX2EHEX2E_956302163(j_637534302, (i_637534290[i_637534290_Idx] - 1))), NTI33554439);
+    result_1006633044 = nimCopy(null, HEX5BHEX5D_939524972(s_1006633042, HEX2EHEX2E_939524947(j_1006633055, (i_1006633043[i_1006633043_Idx] - 1))), NTI33554439);
     break BeforeRet;
   } while (false);
 
-  return result_637534291;
+  return result_1006633044;
 
 }
 
-function skipValue_637534681(s_637534682, i_637534683, i_637534683_Idx) {
+function skipValue_1006633419(s_1006633420, i_1006633421, i_1006633421_Idx) {
       var Temporary3;
             var Temporary10;
             var Temporary15;
@@ -2236,308 +2265,316 @@ function skipValue_637534681(s_637534682, i_637534683, i_637534683_Idx) {
 
     Label1: do {
         Label2: while (true) {
-        if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) break Label2;
-          var cHEX60gensym64_637534685 = s_637534682[i_637534683[i_637534683_Idx]];
-          if (!((whiteSpace_637534219[cHEX60gensym64_637534685] != undefined))) {
+        if (!(i_1006633421[i_1006633421_Idx] < (s_1006633420).length)) break Label2;
+          var cHEX60gensym69_1006633423 = s_1006633420[i_1006633421[i_1006633421_Idx]];
+          if (!((whiteSpace_1006632971[cHEX60gensym69_1006633423] != undefined))) {
           break Label1;
           }
           
-          i_637534683[i_637534683_Idx] += 1;
+          i_1006633421[i_1006633421_Idx] += 1;
         }
     } while (false);
-      if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) Temporary3 = false; else {        Temporary3 = (s_637534682[i_637534683[i_637534683_Idx]] == 123);      }    if (Temporary3) {
+      if (!(i_1006633421[i_1006633421_Idx] < (s_1006633420).length)) Temporary3 = false; else {        Temporary3 = (s_1006633420[i_1006633421[i_1006633421_Idx]] == 123);      }    if (Temporary3) {
     Label4: do {
         Label5: while (true) {
-        if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) break Label5;
-          var cHEX60gensym68_637534695 = s_637534682[i_637534683[i_637534683_Idx]];
-          if (!((whiteSpace_637534219[cHEX60gensym68_637534695] != undefined))) {
+        if (!(i_1006633421[i_1006633421_Idx] < (s_1006633420).length)) break Label5;
+          var cHEX60gensym73_1006633433 = s_1006633420[i_1006633421[i_1006633421_Idx]];
+          if (!((whiteSpace_1006632971[cHEX60gensym73_1006633433] != undefined))) {
           break Label4;
           }
           
-          i_637534683[i_637534683_Idx] += 1;
+          i_1006633421[i_1006633421_Idx] += 1;
         }
     } while (false);
-    if (((s_637534682).length <= i_637534683[i_637534683_Idx])) {
-    raiseException({message: (makeNimstrLit("Expected { but end reached. At offset: ") || []).concat(HEX24_335544323(i_637534683[i_637534683_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    if (((s_1006633420).length <= i_1006633421[i_1006633421_Idx])) {
+    raiseException({message: (makeNimstrLit("Expected { but end reached. At offset: ") || []).concat(HEX24_335544323(i_1006633421[i_1006633421_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
     }
     
-    if ((s_637534682[i_637534683[i_637534683_Idx]] == 123)) {
-    i_637534683[i_637534683_Idx] += 1;
+    if ((s_1006633420[i_1006633421[i_1006633421_Idx]] == 123)) {
+    i_1006633421[i_1006633421_Idx] += 1;
     }
     else {
-      raiseException({message: (makeNimstrLit("Expected { but got ") || []).concat([s_637534682[i_637534683[i_637534683_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_637534683[i_637534683_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+      raiseException({message: (makeNimstrLit("Expected { but got ") || []).concat([s_1006633420[i_1006633421[i_1006633421_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_1006633421[i_1006633421_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
     }
     
     Label6: do {
         Label7: while (true) {
-        if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) break Label7;
+        if (!(i_1006633421[i_1006633421_Idx] < (s_1006633420).length)) break Label7;
           Label8: do {
               Label9: while (true) {
-              if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) break Label9;
-                var cHEX60gensym78_637534711 = s_637534682[i_637534683[i_637534683_Idx]];
-                if (!((whiteSpace_637534219[cHEX60gensym78_637534711] != undefined))) {
+              if (!(i_1006633421[i_1006633421_Idx] < (s_1006633420).length)) break Label9;
+                var cHEX60gensym83_1006633449 = s_1006633420[i_1006633421[i_1006633421_Idx]];
+                if (!((whiteSpace_1006632971[cHEX60gensym83_1006633449] != undefined))) {
                 break Label8;
                 }
                 
-                i_637534683[i_637534683_Idx] += 1;
+                i_1006633421[i_1006633421_Idx] += 1;
               }
           } while (false);
-            if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) Temporary10 = false; else {              Temporary10 = (s_637534682[i_637534683[i_637534683_Idx]] == 125);            }          if (Temporary10) {
+            if (!(i_1006633421[i_1006633421_Idx] < (s_1006633420).length)) Temporary10 = false; else {              Temporary10 = (s_1006633420[i_1006633421[i_1006633421_Idx]] == 125);            }          if (Temporary10) {
           break Label6;
           }
           
-          skipValue_637534681(s_637534682, i_637534683, i_637534683_Idx);
+          skipValue_1006633419(s_1006633420, i_1006633421, i_1006633421_Idx);
           Label11: do {
               Label12: while (true) {
-              if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) break Label12;
-                var cHEX60gensym82_637534721 = s_637534682[i_637534683[i_637534683_Idx]];
-                if (!((whiteSpace_637534219[cHEX60gensym82_637534721] != undefined))) {
+              if (!(i_1006633421[i_1006633421_Idx] < (s_1006633420).length)) break Label12;
+                var cHEX60gensym87_1006633459 = s_1006633420[i_1006633421[i_1006633421_Idx]];
+                if (!((whiteSpace_1006632971[cHEX60gensym87_1006633459] != undefined))) {
                 break Label11;
                 }
                 
-                i_637534683[i_637534683_Idx] += 1;
+                i_1006633421[i_1006633421_Idx] += 1;
               }
           } while (false);
-          if (((s_637534682).length <= i_637534683[i_637534683_Idx])) {
-          raiseException({message: (makeNimstrLit("Expected : but end reached. At offset: ") || []).concat(HEX24_335544323(i_637534683[i_637534683_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+          if (((s_1006633420).length <= i_1006633421[i_1006633421_Idx])) {
+          raiseException({message: (makeNimstrLit("Expected : but end reached. At offset: ") || []).concat(HEX24_335544323(i_1006633421[i_1006633421_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
           }
           
-          if ((s_637534682[i_637534683[i_637534683_Idx]] == 58)) {
-          i_637534683[i_637534683_Idx] += 1;
+          if ((s_1006633420[i_1006633421[i_1006633421_Idx]] == 58)) {
+          i_1006633421[i_1006633421_Idx] += 1;
           }
           else {
-            raiseException({message: (makeNimstrLit("Expected : but got ") || []).concat([s_637534682[i_637534683[i_637534683_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_637534683[i_637534683_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+            raiseException({message: (makeNimstrLit("Expected : but got ") || []).concat([s_1006633420[i_1006633421[i_1006633421_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_1006633421[i_1006633421_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
           }
           
-          skipValue_637534681(s_637534682, i_637534683, i_637534683_Idx);
+          skipValue_1006633419(s_1006633420, i_1006633421, i_1006633421_Idx);
           Label13: do {
               Label14: while (true) {
-              if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) break Label14;
-                var cHEX60gensym92_637534737 = s_637534682[i_637534683[i_637534683_Idx]];
-                if (!((whiteSpace_637534219[cHEX60gensym92_637534737] != undefined))) {
+              if (!(i_1006633421[i_1006633421_Idx] < (s_1006633420).length)) break Label14;
+                var cHEX60gensym97_1006633475 = s_1006633420[i_1006633421[i_1006633421_Idx]];
+                if (!((whiteSpace_1006632971[cHEX60gensym97_1006633475] != undefined))) {
                 break Label13;
                 }
                 
-                i_637534683[i_637534683_Idx] += 1;
+                i_1006633421[i_1006633421_Idx] += 1;
               }
           } while (false);
-            if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) Temporary15 = false; else {              Temporary15 = (s_637534682[i_637534683[i_637534683_Idx]] == 44);            }          if (Temporary15) {
-          i_637534683[i_637534683_Idx] += 1;
+            if (!(i_1006633421[i_1006633421_Idx] < (s_1006633420).length)) Temporary15 = false; else {              Temporary15 = (s_1006633420[i_1006633421[i_1006633421_Idx]] == 44);            }          if (Temporary15) {
+          i_1006633421[i_1006633421_Idx] += 1;
           }
           
         }
     } while (false);
     Label16: do {
         Label17: while (true) {
-        if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) break Label17;
-          var cHEX60gensym96_637534751 = s_637534682[i_637534683[i_637534683_Idx]];
-          if (!((whiteSpace_637534219[cHEX60gensym96_637534751] != undefined))) {
+        if (!(i_1006633421[i_1006633421_Idx] < (s_1006633420).length)) break Label17;
+          var cHEX60gensym101_1006633489 = s_1006633420[i_1006633421[i_1006633421_Idx]];
+          if (!((whiteSpace_1006632971[cHEX60gensym101_1006633489] != undefined))) {
           break Label16;
           }
           
-          i_637534683[i_637534683_Idx] += 1;
+          i_1006633421[i_1006633421_Idx] += 1;
         }
     } while (false);
-    if (((s_637534682).length <= i_637534683[i_637534683_Idx])) {
-    raiseException({message: (makeNimstrLit("Expected } but end reached. At offset: ") || []).concat(HEX24_335544323(i_637534683[i_637534683_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    if (((s_1006633420).length <= i_1006633421[i_1006633421_Idx])) {
+    raiseException({message: (makeNimstrLit("Expected } but end reached. At offset: ") || []).concat(HEX24_335544323(i_1006633421[i_1006633421_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
     }
     
-    if ((s_637534682[i_637534683[i_637534683_Idx]] == 125)) {
-    i_637534683[i_637534683_Idx] += 1;
+    if ((s_1006633420[i_1006633421[i_1006633421_Idx]] == 125)) {
+    i_1006633421[i_1006633421_Idx] += 1;
     }
     else {
-      raiseException({message: (makeNimstrLit("Expected } but got ") || []).concat([s_637534682[i_637534683[i_637534683_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_637534683[i_637534683_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+      raiseException({message: (makeNimstrLit("Expected } but got ") || []).concat([s_1006633420[i_1006633421[i_1006633421_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_1006633421[i_1006633421_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
     }
     
     }
     else {
-      if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) Temporary18 = false; else {        Temporary18 = (s_637534682[i_637534683[i_637534683_Idx]] == 91);      }    if (Temporary18) {
+      if (!(i_1006633421[i_1006633421_Idx] < (s_1006633420).length)) Temporary18 = false; else {        Temporary18 = (s_1006633420[i_1006633421[i_1006633421_Idx]] == 91);      }    if (Temporary18) {
     Label19: do {
         Label20: while (true) {
-        if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) break Label20;
-          var cHEX60gensym107_637534767 = s_637534682[i_637534683[i_637534683_Idx]];
-          if (!((whiteSpace_637534219[cHEX60gensym107_637534767] != undefined))) {
+        if (!(i_1006633421[i_1006633421_Idx] < (s_1006633420).length)) break Label20;
+          var cHEX60gensym112_1006633505 = s_1006633420[i_1006633421[i_1006633421_Idx]];
+          if (!((whiteSpace_1006632971[cHEX60gensym112_1006633505] != undefined))) {
           break Label19;
           }
           
-          i_637534683[i_637534683_Idx] += 1;
+          i_1006633421[i_1006633421_Idx] += 1;
         }
     } while (false);
-    if (((s_637534682).length <= i_637534683[i_637534683_Idx])) {
-    raiseException({message: (makeNimstrLit("Expected [ but end reached. At offset: ") || []).concat(HEX24_335544323(i_637534683[i_637534683_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    if (((s_1006633420).length <= i_1006633421[i_1006633421_Idx])) {
+    raiseException({message: (makeNimstrLit("Expected [ but end reached. At offset: ") || []).concat(HEX24_335544323(i_1006633421[i_1006633421_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
     }
     
-    if ((s_637534682[i_637534683[i_637534683_Idx]] == 91)) {
-    i_637534683[i_637534683_Idx] += 1;
+    if ((s_1006633420[i_1006633421[i_1006633421_Idx]] == 91)) {
+    i_1006633421[i_1006633421_Idx] += 1;
     }
     else {
-      raiseException({message: (makeNimstrLit("Expected [ but got ") || []).concat([s_637534682[i_637534683[i_637534683_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_637534683[i_637534683_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+      raiseException({message: (makeNimstrLit("Expected [ but got ") || []).concat([s_1006633420[i_1006633421[i_1006633421_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_1006633421[i_1006633421_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
     }
     
     Label21: do {
         Label22: while (true) {
-        if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) break Label22;
+        if (!(i_1006633421[i_1006633421_Idx] < (s_1006633420).length)) break Label22;
           Label23: do {
               Label24: while (true) {
-              if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) break Label24;
-                var cHEX60gensym117_637534783 = s_637534682[i_637534683[i_637534683_Idx]];
-                if (!((whiteSpace_637534219[cHEX60gensym117_637534783] != undefined))) {
+              if (!(i_1006633421[i_1006633421_Idx] < (s_1006633420).length)) break Label24;
+                var cHEX60gensym122_1006633521 = s_1006633420[i_1006633421[i_1006633421_Idx]];
+                if (!((whiteSpace_1006632971[cHEX60gensym122_1006633521] != undefined))) {
                 break Label23;
                 }
                 
-                i_637534683[i_637534683_Idx] += 1;
+                i_1006633421[i_1006633421_Idx] += 1;
               }
           } while (false);
-            if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) Temporary25 = false; else {              Temporary25 = (s_637534682[i_637534683[i_637534683_Idx]] == 93);            }          if (Temporary25) {
+            if (!(i_1006633421[i_1006633421_Idx] < (s_1006633420).length)) Temporary25 = false; else {              Temporary25 = (s_1006633420[i_1006633421[i_1006633421_Idx]] == 93);            }          if (Temporary25) {
           break Label21;
           }
           
-          skipValue_637534681(s_637534682, i_637534683, i_637534683_Idx);
+          skipValue_1006633419(s_1006633420, i_1006633421, i_1006633421_Idx);
           Label26: do {
               Label27: while (true) {
-              if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) break Label27;
-                var cHEX60gensym120_637534793 = s_637534682[i_637534683[i_637534683_Idx]];
-                if (!((whiteSpace_637534219[cHEX60gensym120_637534793] != undefined))) {
+              if (!(i_1006633421[i_1006633421_Idx] < (s_1006633420).length)) break Label27;
+                var cHEX60gensym125_1006633531 = s_1006633420[i_1006633421[i_1006633421_Idx]];
+                if (!((whiteSpace_1006632971[cHEX60gensym125_1006633531] != undefined))) {
                 break Label26;
                 }
                 
-                i_637534683[i_637534683_Idx] += 1;
+                i_1006633421[i_1006633421_Idx] += 1;
               }
           } while (false);
-            if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) Temporary28 = false; else {              Temporary28 = (s_637534682[i_637534683[i_637534683_Idx]] == 44);            }          if (Temporary28) {
-          i_637534683[i_637534683_Idx] += 1;
+            if (!(i_1006633421[i_1006633421_Idx] < (s_1006633420).length)) Temporary28 = false; else {              Temporary28 = (s_1006633420[i_1006633421[i_1006633421_Idx]] == 44);            }          if (Temporary28) {
+          i_1006633421[i_1006633421_Idx] += 1;
           }
           
         }
     } while (false);
     Label29: do {
         Label30: while (true) {
-        if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) break Label30;
-          var cHEX60gensym124_637534807 = s_637534682[i_637534683[i_637534683_Idx]];
-          if (!((whiteSpace_637534219[cHEX60gensym124_637534807] != undefined))) {
+        if (!(i_1006633421[i_1006633421_Idx] < (s_1006633420).length)) break Label30;
+          var cHEX60gensym129_1006633545 = s_1006633420[i_1006633421[i_1006633421_Idx]];
+          if (!((whiteSpace_1006632971[cHEX60gensym129_1006633545] != undefined))) {
           break Label29;
           }
           
-          i_637534683[i_637534683_Idx] += 1;
+          i_1006633421[i_1006633421_Idx] += 1;
         }
     } while (false);
-    if (((s_637534682).length <= i_637534683[i_637534683_Idx])) {
-    raiseException({message: (makeNimstrLit("Expected ] but end reached. At offset: ") || []).concat(HEX24_335544323(i_637534683[i_637534683_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    if (((s_1006633420).length <= i_1006633421[i_1006633421_Idx])) {
+    raiseException({message: (makeNimstrLit("Expected ] but end reached. At offset: ") || []).concat(HEX24_335544323(i_1006633421[i_1006633421_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
     }
     
-    if ((s_637534682[i_637534683[i_637534683_Idx]] == 93)) {
-    i_637534683[i_637534683_Idx] += 1;
+    if ((s_1006633420[i_1006633421[i_1006633421_Idx]] == 93)) {
+    i_1006633421[i_1006633421_Idx] += 1;
     }
     else {
-      raiseException({message: (makeNimstrLit("Expected ] but got ") || []).concat([s_637534682[i_637534683[i_637534683_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_637534683[i_637534683_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+      raiseException({message: (makeNimstrLit("Expected ] but got ") || []).concat([s_1006633420[i_1006633421[i_1006633421_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_1006633421[i_1006633421_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
     }
     
     }
     else {
-      if (!(i_637534683[i_637534683_Idx] < (s_637534682).length)) Temporary31 = false; else {        Temporary31 = (s_637534682[i_637534683[i_637534683_Idx]] == 34);      }    if (Temporary31) {
-    var str_637534822 = [[]];
-    parseHook_637534624(s_637534682, i_637534683, i_637534683_Idx, str_637534822, 0);
+      if (!(i_1006633421[i_1006633421_Idx] < (s_1006633420).length)) Temporary31 = false; else {        Temporary31 = (s_1006633420[i_1006633421[i_1006633421_Idx]] == 34);      }    if (Temporary31) {
+    var str_1006633560 = [[]];
+    parseHook_1006633362(s_1006633420, i_1006633421, i_1006633421_Idx, str_1006633560, 0);
     }
     else {
-    var _ = parseSymbol_637534288(s_637534682, i_637534683, i_637534683_Idx);
+    var _ = parseSymbol_1006633041(s_1006633420, i_1006633421, i_1006633421_Idx);
     }
     }}
 
   
 }
 
-function parseObjectInner_469762519(s_469762521, i_469762522, i_469762522_Idx, v_469762523) {
+function parseObjectInner_469762529(s_469762531, i_469762532, i_469762532_Idx, v_469762533) {
             var Temporary5;
                     var Temporary11;
                     var Temporary12;
                     var Temporary13;
-            var Temporary16;
+                    var Temporary14;
+            var Temporary17;
 
     Label1: do {
         Label2: while (true) {
-        if (!(i_469762522[i_469762522_Idx] < (s_469762521).length)) break Label2;
+        if (!(i_469762532[i_469762532_Idx] < (s_469762531).length)) break Label2;
           Label3: do {
               Label4: while (true) {
-              if (!(i_469762522[i_469762522_Idx] < (s_469762521).length)) break Label4;
-                var cHEX60gensym46_469762525 = s_469762521[i_469762522[i_469762522_Idx]];
-                if (!((whiteSpace_637534219[cHEX60gensym46_469762525] != undefined))) {
+              if (!(i_469762532[i_469762532_Idx] < (s_469762531).length)) break Label4;
+                var cHEX60gensym46_469762535 = s_469762531[i_469762532[i_469762532_Idx]];
+                if (!((whiteSpace_1006632971[cHEX60gensym46_469762535] != undefined))) {
                 break Label3;
                 }
                 
-                i_469762522[i_469762522_Idx] += 1;
+                i_469762532[i_469762532_Idx] += 1;
               }
           } while (false);
-            if (!(i_469762522[i_469762522_Idx] < (s_469762521).length)) Temporary5 = false; else {              Temporary5 = (s_469762521[i_469762522[i_469762522_Idx]] == 125);            }          if (Temporary5) {
+            if (!(i_469762532[i_469762532_Idx] < (s_469762531).length)) Temporary5 = false; else {              Temporary5 = (s_469762531[i_469762532[i_469762532_Idx]] == 125);            }          if (Temporary5) {
           break Label1;
           }
           
-          var key_469762534 = [[]];
-          parseHook_637534624(s_469762521, i_469762522, i_469762522_Idx, key_469762534, 0);
+          var key_469762544 = [[]];
+          parseHook_1006633362(s_469762531, i_469762532, i_469762532_Idx, key_469762544, 0);
           Label6: do {
               Label7: while (true) {
-              if (!(i_469762522[i_469762522_Idx] < (s_469762521).length)) break Label7;
-                var cHEX60gensym51_469762536 = s_469762521[i_469762522[i_469762522_Idx]];
-                if (!((whiteSpace_637534219[cHEX60gensym51_469762536] != undefined))) {
+              if (!(i_469762532[i_469762532_Idx] < (s_469762531).length)) break Label7;
+                var cHEX60gensym51_469762546 = s_469762531[i_469762532[i_469762532_Idx]];
+                if (!((whiteSpace_1006632971[cHEX60gensym51_469762546] != undefined))) {
                 break Label6;
                 }
                 
-                i_469762522[i_469762522_Idx] += 1;
+                i_469762532[i_469762532_Idx] += 1;
               }
           } while (false);
-          if (((s_469762521).length <= i_469762522[i_469762522_Idx])) {
-          raiseException({message: (makeNimstrLit("Expected : but end reached. At offset: ") || []).concat(HEX24_335544323(i_469762522[i_469762522_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+          if (((s_469762531).length <= i_469762532[i_469762532_Idx])) {
+          raiseException({message: (makeNimstrLit("Expected : but end reached. At offset: ") || []).concat(HEX24_335544323(i_469762532[i_469762532_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
           }
           
-          if ((s_469762521[i_469762522[i_469762522_Idx]] == 58)) {
-          i_469762522[i_469762522_Idx] += 1;
+          if ((s_469762531[i_469762532[i_469762532_Idx]] == 58)) {
+          i_469762532[i_469762532_Idx] += 1;
           }
           else {
-            raiseException({message: (makeNimstrLit("Expected : but got ") || []).concat([s_469762521[i_469762522[i_469762522_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_469762522[i_469762522_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+            raiseException({message: (makeNimstrLit("Expected : but got ") || []).concat([s_469762531[i_469762532[i_469762532_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_469762532[i_469762532_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
           }
           
           Label8: do {
             Label9: do {
                 Label10: while (true) {
                 if (!true) break Label10;
-                    if (eqStrings(makeNimstrLit("title"), key_469762534[0])) Temporary11 = true; else {                      Temporary11 = eqStrings(makeNimstrLit("title"), key_469762534[0]);                    }                  if (Temporary11) {
-                  var v2_469762564 = [[]];
-                  parseHook_637534624(s_469762521, i_469762522, i_469762522_Idx, v2_469762564, 0);
-                  v_469762523.title = nimCopy(null, v2_469762564[0], NTI33554439);
+                    if (eqStrings(makeNimstrLit("title"), key_469762544[0])) Temporary11 = true; else {                      Temporary11 = eqStrings(makeNimstrLit("title"), key_469762544[0]);                    }                  if (Temporary11) {
+                  var v2_469762574 = [[]];
+                  parseHook_1006633362(s_469762531, i_469762532, i_469762532_Idx, v2_469762574, 0);
+                  v_469762533.title = nimCopy(null, v2_469762574[0], NTI33554439);
+                  break Label8;
+                  }
+                  
+                    if (eqStrings(makeNimstrLit("slug"), key_469762544[0])) Temporary12 = true; else {                      Temporary12 = eqStrings(makeNimstrLit("slug"), key_469762544[0]);                    }                  if (Temporary12) {
+                  var v2_469762577 = [[]];
+                  parseHook_1006633362(s_469762531, i_469762532, i_469762532_Idx, v2_469762577, 0);
+                  v_469762533.slug = nimCopy(null, v2_469762577[0], NTI33554439);
                   break Label8;
                   }
                   
-                    if (eqStrings(makeNimstrLit("slug"), key_469762534[0])) Temporary12 = true; else {                      Temporary12 = eqStrings(makeNimstrLit("slug"), key_469762534[0]);                    }                  if (Temporary12) {
-                  var v2_469762567 = [[]];
-                  parseHook_637534624(s_469762521, i_469762522, i_469762522_Idx, v2_469762567, 0);
-                  v_469762523.slug = nimCopy(null, v2_469762567[0], NTI33554439);
+                    if (eqStrings(makeNimstrLit("contentTokens"), key_469762544[0])) Temporary13 = true; else {                      Temporary13 = eqStrings(makeNimstrLit("content_tokens"), key_469762544[0]);                    }                  if (Temporary13) {
+                  var v2_469762580 = [[]];
+                  parseHook_469762581(s_469762531, i_469762532, i_469762532_Idx, v2_469762580, 0);
+                  v_469762533.contentTokens = nimCopy(null, v2_469762580[0], NTI469762053);
                   break Label8;
                   }
                   
-                    if (eqStrings(makeNimstrLit("contentTokens"), key_469762534[0])) Temporary13 = true; else {                      Temporary13 = eqStrings(makeNimstrLit("content_tokens"), key_469762534[0]);                    }                  if (Temporary13) {
-                  var v2_469762570 = [[]];
-                  parseHook_469762571(s_469762521, i_469762522, i_469762522_Idx, v2_469762570, 0);
-                  v_469762523.contentTokens = nimCopy(null, v2_469762570[0], NTI1392508933);
+                    if (eqStrings(makeNimstrLit("displayContent"), key_469762544[0])) Temporary14 = true; else {                      Temporary14 = eqStrings(makeNimstrLit("display_content"), key_469762544[0]);                    }                  if (Temporary14) {
+                  var v2_469762649 = [[]];
+                  parseHook_1006633362(s_469762531, i_469762532, i_469762532_Idx, v2_469762649, 0);
+                  v_469762533.displayContent = nimCopy(null, v2_469762649[0], NTI33554439);
                   break Label8;
                   }
                   
                   break Label9;
                 }
             } while (false);
-            skipValue_637534681(s_469762521, i_469762522, i_469762522_Idx);
+            skipValue_1006633419(s_469762531, i_469762532, i_469762532_Idx);
           } while (false);
-          Label14: do {
-              Label15: while (true) {
-              if (!(i_469762522[i_469762522_Idx] < (s_469762521).length)) break Label15;
-                var cHEX60gensym94_469762638 = s_469762521[i_469762522[i_469762522_Idx]];
-                if (!((whiteSpace_637534219[cHEX60gensym94_469762638] != undefined))) {
-                break Label14;
+          Label15: do {
+              Label16: while (true) {
+              if (!(i_469762532[i_469762532_Idx] < (s_469762531).length)) break Label16;
+                var cHEX60gensym95_469762651 = s_469762531[i_469762532[i_469762532_Idx]];
+                if (!((whiteSpace_1006632971[cHEX60gensym95_469762651] != undefined))) {
+                break Label15;
                 }
                 
-                i_469762522[i_469762522_Idx] += 1;
+                i_469762532[i_469762532_Idx] += 1;
               }
           } while (false);
-            if (!(i_469762522[i_469762522_Idx] < (s_469762521).length)) Temporary16 = false; else {              Temporary16 = (s_469762521[i_469762522[i_469762522_Idx]] == 44);            }          if (Temporary16) {
-          i_469762522[i_469762522_Idx] += 1;
+            if (!(i_469762532[i_469762532_Idx] < (s_469762531).length)) Temporary17 = false; else {              Temporary17 = (s_469762531[i_469762532[i_469762532_Idx]] == 44);            }          if (Temporary17) {
+          i_469762532[i_469762532_Idx] += 1;
           }
           else {
             break Label1;
@@ -2549,7 +2586,7 @@ function parseObjectInner_469762519(s_469762521, i_469762522, i_469762522_Idx, v
   
 }
 
-function parseHook_469762470(s_469762472, i_469762473, i_469762473_Idx, v_469762474) {
+function parseHook_469762480(s_469762482, i_469762483, i_469762483_Idx, v_469762484) {
       var Temporary3;
       var Temporary4;
       var Temporary5;
@@ -2558,63 +2595,63 @@ function parseHook_469762470(s_469762472, i_469762473, i_469762473_Idx, v_469762
   BeforeRet: do {
     Label1: do {
         Label2: while (true) {
-        if (!(i_469762473[i_469762473_Idx] < (s_469762472).length)) break Label2;
-          var cHEX60gensym28_469762476 = s_469762472[i_469762473[i_469762473_Idx]];
-          if (!((whiteSpace_637534219[cHEX60gensym28_469762476] != undefined))) {
+        if (!(i_469762483[i_469762483_Idx] < (s_469762482).length)) break Label2;
+          var cHEX60gensym28_469762486 = s_469762482[i_469762483[i_469762483_Idx]];
+          if (!((whiteSpace_1006632971[cHEX60gensym28_469762486] != undefined))) {
           break Label1;
           }
           
-          i_469762473[i_469762473_Idx] += 1;
+          i_469762483[i_469762483_Idx] += 1;
         }
     } while (false);
-      if (!((i_469762473[i_469762473_Idx] + 3) < (s_469762472).length)) Temporary6 = false; else {        Temporary6 = (s_469762472[(i_469762473[i_469762473_Idx] + 0)] == 110);      }      if (!Temporary6) Temporary5 = false; else {        Temporary5 = (s_469762472[(i_469762473[i_469762473_Idx] + 1)] == 117);      }      if (!Temporary5) Temporary4 = false; else {        Temporary4 = (s_469762472[(i_469762473[i_469762473_Idx] + 2)] == 108);      }      if (!Temporary4) Temporary3 = false; else {        Temporary3 = (s_469762472[(i_469762473[i_469762473_Idx] + 3)] == 108);      }    if (Temporary3) {
-    i_469762473[i_469762473_Idx] += 4;
+      if (!((i_469762483[i_469762483_Idx] + 3) < (s_469762482).length)) Temporary6 = false; else {        Temporary6 = (s_469762482[(i_469762483[i_469762483_Idx] + 0)] == 110);      }      if (!Temporary6) Temporary5 = false; else {        Temporary5 = (s_469762482[(i_469762483[i_469762483_Idx] + 1)] == 117);      }      if (!Temporary5) Temporary4 = false; else {        Temporary4 = (s_469762482[(i_469762483[i_469762483_Idx] + 2)] == 108);      }      if (!Temporary4) Temporary3 = false; else {        Temporary3 = (s_469762482[(i_469762483[i_469762483_Idx] + 3)] == 108);      }    if (Temporary3) {
+    i_469762483[i_469762483_Idx] += 4;
     break BeforeRet;
     }
     
     Label7: do {
         Label8: while (true) {
-        if (!(i_469762473[i_469762473_Idx] < (s_469762472).length)) break Label8;
-          var cHEX60gensym36_469762490 = s_469762472[i_469762473[i_469762473_Idx]];
-          if (!((whiteSpace_637534219[cHEX60gensym36_469762490] != undefined))) {
+        if (!(i_469762483[i_469762483_Idx] < (s_469762482).length)) break Label8;
+          var cHEX60gensym36_469762500 = s_469762482[i_469762483[i_469762483_Idx]];
+          if (!((whiteSpace_1006632971[cHEX60gensym36_469762500] != undefined))) {
           break Label7;
           }
           
-          i_469762473[i_469762473_Idx] += 1;
+          i_469762483[i_469762483_Idx] += 1;
         }
     } while (false);
-    if (((s_469762472).length <= i_469762473[i_469762473_Idx])) {
-    raiseException({message: (makeNimstrLit("Expected { but end reached. At offset: ") || []).concat(HEX24_335544323(i_469762473[i_469762473_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    if (((s_469762482).length <= i_469762483[i_469762483_Idx])) {
+    raiseException({message: (makeNimstrLit("Expected { but end reached. At offset: ") || []).concat(HEX24_335544323(i_469762483[i_469762483_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
     }
     
-    if ((s_469762472[i_469762473[i_469762473_Idx]] == 123)) {
-    i_469762473[i_469762473_Idx] += 1;
+    if ((s_469762482[i_469762483[i_469762483_Idx]] == 123)) {
+    i_469762483[i_469762483_Idx] += 1;
     }
     else {
-      raiseException({message: (makeNimstrLit("Expected { but got ") || []).concat([s_469762472[i_469762473[i_469762473_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_469762473[i_469762473_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+      raiseException({message: (makeNimstrLit("Expected { but got ") || []).concat([s_469762482[i_469762483[i_469762483_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_469762483[i_469762483_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
     }
     
-    parseObjectInner_469762519(s_469762472, i_469762473, i_469762473_Idx, v_469762474);
+    parseObjectInner_469762529(s_469762482, i_469762483, i_469762483_Idx, v_469762484);
     Label9: do {
         Label10: while (true) {
-        if (!(i_469762473[i_469762473_Idx] < (s_469762472).length)) break Label10;
-          var cHEX60gensym99_469762654 = s_469762472[i_469762473[i_469762473_Idx]];
-          if (!((whiteSpace_637534219[cHEX60gensym99_469762654] != undefined))) {
+        if (!(i_469762483[i_469762483_Idx] < (s_469762482).length)) break Label10;
+          var cHEX60gensym100_469762667 = s_469762482[i_469762483[i_469762483_Idx]];
+          if (!((whiteSpace_1006632971[cHEX60gensym100_469762667] != undefined))) {
           break Label9;
           }
           
-          i_469762473[i_469762473_Idx] += 1;
+          i_469762483[i_469762483_Idx] += 1;
         }
     } while (false);
-    if (((s_469762472).length <= i_469762473[i_469762473_Idx])) {
-    raiseException({message: (makeNimstrLit("Expected } but end reached. At offset: ") || []).concat(HEX24_335544323(i_469762473[i_469762473_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    if (((s_469762482).length <= i_469762483[i_469762483_Idx])) {
+    raiseException({message: (makeNimstrLit("Expected } but end reached. At offset: ") || []).concat(HEX24_335544323(i_469762483[i_469762483_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
     }
     
-    if ((s_469762472[i_469762473[i_469762473_Idx]] == 125)) {
-    i_469762473[i_469762473_Idx] += 1;
+    if ((s_469762482[i_469762483[i_469762483_Idx]] == 125)) {
+    i_469762483[i_469762483_Idx] += 1;
     }
     else {
-      raiseException({message: (makeNimstrLit("Expected } but got ") || []).concat([s_469762472[i_469762473[i_469762473_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_469762473[i_469762473_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+      raiseException({message: (makeNimstrLit("Expected } but got ") || []).concat([s_469762482[i_469762483[i_469762483_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_469762483[i_469762483_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
     }
     
   } while (false);
@@ -2622,67 +2659,67 @@ function parseHook_469762470(s_469762472, i_469762473, i_469762473_Idx, v_469762
   
 }
 
-function parseHook_469762438(s_469762440, i_469762441, i_469762441_Idx, v_469762442, v_469762442_Idx) {
+function parseHook_469762448(s_469762450, i_469762451, i_469762451_Idx, v_469762452, v_469762452_Idx) {
             var Temporary7;
             var Temporary11;
 
     Label1: do {
         Label2: while (true) {
-        if (!(i_469762441[i_469762441_Idx] < (s_469762440).length)) break Label2;
-          var cHEX60gensym14_469762444 = s_469762440[i_469762441[i_469762441_Idx]];
-          if (!((whiteSpace_637534219[cHEX60gensym14_469762444] != undefined))) {
+        if (!(i_469762451[i_469762451_Idx] < (s_469762450).length)) break Label2;
+          var cHEX60gensym14_469762454 = s_469762450[i_469762451[i_469762451_Idx]];
+          if (!((whiteSpace_1006632971[cHEX60gensym14_469762454] != undefined))) {
           break Label1;
           }
           
-          i_469762441[i_469762441_Idx] += 1;
+          i_469762451[i_469762451_Idx] += 1;
         }
     } while (false);
-    if (((s_469762440).length <= i_469762441[i_469762441_Idx])) {
-    raiseException({message: (makeNimstrLit("Expected [ but end reached. At offset: ") || []).concat(HEX24_335544323(i_469762441[i_469762441_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    if (((s_469762450).length <= i_469762451[i_469762451_Idx])) {
+    raiseException({message: (makeNimstrLit("Expected [ but end reached. At offset: ") || []).concat(HEX24_335544323(i_469762451[i_469762451_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
     }
     
-    if ((s_469762440[i_469762441[i_469762441_Idx]] == 91)) {
-    i_469762441[i_469762441_Idx] += 1;
+    if ((s_469762450[i_469762451[i_469762451_Idx]] == 91)) {
+    i_469762451[i_469762451_Idx] += 1;
     }
     else {
-      raiseException({message: (makeNimstrLit("Expected [ but got ") || []).concat([s_469762440[i_469762441[i_469762441_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_469762441[i_469762441_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+      raiseException({message: (makeNimstrLit("Expected [ but got ") || []).concat([s_469762450[i_469762451[i_469762451_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_469762451[i_469762451_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
     }
     
     Label3: do {
         Label4: while (true) {
-        if (!(i_469762441[i_469762441_Idx] < (s_469762440).length)) break Label4;
+        if (!(i_469762451[i_469762451_Idx] < (s_469762450).length)) break Label4;
           Label5: do {
               Label6: while (true) {
-              if (!(i_469762441[i_469762441_Idx] < (s_469762440).length)) break Label6;
-                var cHEX60gensym24_469762460 = s_469762440[i_469762441[i_469762441_Idx]];
-                if (!((whiteSpace_637534219[cHEX60gensym24_469762460] != undefined))) {
+              if (!(i_469762451[i_469762451_Idx] < (s_469762450).length)) break Label6;
+                var cHEX60gensym24_469762470 = s_469762450[i_469762451[i_469762451_Idx]];
+                if (!((whiteSpace_1006632971[cHEX60gensym24_469762470] != undefined))) {
                 break Label5;
                 }
                 
-                i_469762441[i_469762441_Idx] += 1;
+                i_469762451[i_469762451_Idx] += 1;
               }
           } while (false);
-            if (!(i_469762441[i_469762441_Idx] < (s_469762440).length)) Temporary7 = false; else {              Temporary7 = (s_469762440[i_469762441[i_469762441_Idx]] == 93);            }          if (Temporary7) {
+            if (!(i_469762451[i_469762451_Idx] < (s_469762450).length)) Temporary7 = false; else {              Temporary7 = (s_469762450[i_469762451[i_469762451_Idx]] == 93);            }          if (Temporary7) {
           break Label3;
           }
           
-          var element_469762469 = [({title: [], slug: [], contentTokens: []})];
-          parseHook_469762470(s_469762440, i_469762441, i_469762441_Idx, element_469762469[0]);
-          var Temporary8 = nimCopy(null, element_469762469[0], NTI1392508932);
-          v_469762442[v_469762442_Idx].push(Temporary8);;
+          var element_469762479 = [({title: [], slug: [], contentTokens: [], displayContent: []})];
+          parseHook_469762480(s_469762450, i_469762451, i_469762451_Idx, element_469762479[0]);
+          var Temporary8 = nimCopy(null, element_469762479[0], NTI469762052);
+          v_469762452[v_469762452_Idx].push(Temporary8);;
           Label9: do {
               Label10: while (true) {
-              if (!(i_469762441[i_469762441_Idx] < (s_469762440).length)) break Label10;
-                var cHEX60gensym109_469762674 = s_469762440[i_469762441[i_469762441_Idx]];
-                if (!((whiteSpace_637534219[cHEX60gensym109_469762674] != undefined))) {
+              if (!(i_469762451[i_469762451_Idx] < (s_469762450).length)) break Label10;
+                var cHEX60gensym110_469762687 = s_469762450[i_469762451[i_469762451_Idx]];
+                if (!((whiteSpace_1006632971[cHEX60gensym110_469762687] != undefined))) {
                 break Label9;
                 }
                 
-                i_469762441[i_469762441_Idx] += 1;
+                i_469762451[i_469762451_Idx] += 1;
               }
           } while (false);
-            if (!(i_469762441[i_469762441_Idx] < (s_469762440).length)) Temporary11 = false; else {              Temporary11 = (s_469762440[i_469762441[i_469762441_Idx]] == 44);            }          if (Temporary11) {
-          i_469762441[i_469762441_Idx] += 1;
+            if (!(i_469762451[i_469762451_Idx] < (s_469762450).length)) Temporary11 = false; else {              Temporary11 = (s_469762450[i_469762451[i_469762451_Idx]] == 44);            }          if (Temporary11) {
+          i_469762451[i_469762451_Idx] += 1;
           }
           else {
             break Label3;
@@ -2692,59 +2729,59 @@ function parseHook_469762438(s_469762440, i_469762441, i_469762441_Idx, v_469762
     } while (false);
     Label12: do {
         Label13: while (true) {
-        if (!(i_469762441[i_469762441_Idx] < (s_469762440).length)) break Label13;
-          var cHEX60gensym114_469762688 = s_469762440[i_469762441[i_469762441_Idx]];
-          if (!((whiteSpace_637534219[cHEX60gensym114_469762688] != undefined))) {
+        if (!(i_469762451[i_469762451_Idx] < (s_469762450).length)) break Label13;
+          var cHEX60gensym115_469762701 = s_469762450[i_469762451[i_469762451_Idx]];
+          if (!((whiteSpace_1006632971[cHEX60gensym115_469762701] != undefined))) {
           break Label12;
           }
           
-          i_469762441[i_469762441_Idx] += 1;
+          i_469762451[i_469762451_Idx] += 1;
         }
     } while (false);
-    if (((s_469762440).length <= i_469762441[i_469762441_Idx])) {
-    raiseException({message: (makeNimstrLit("Expected ] but end reached. At offset: ") || []).concat(HEX24_335544323(i_469762441[i_469762441_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+    if (((s_469762450).length <= i_469762451[i_469762451_Idx])) {
+    raiseException({message: (makeNimstrLit("Expected ] but end reached. At offset: ") || []).concat(HEX24_335544323(i_469762451[i_469762451_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
     }
     
-    if ((s_469762440[i_469762441[i_469762441_Idx]] == 93)) {
-    i_469762441[i_469762441_Idx] += 1;
+    if ((s_469762450[i_469762451[i_469762451_Idx]] == 93)) {
+    i_469762451[i_469762451_Idx] += 1;
     }
     else {
-      raiseException({message: (makeNimstrLit("Expected ] but got ") || []).concat([s_469762440[i_469762441[i_469762441_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_469762441[i_469762441_Idx]) || []), parent: null, m_type: NTI637534211, name: null, trace: [], up: null}, "JsonError");
+      raiseException({message: (makeNimstrLit("Expected ] but got ") || []).concat([s_469762450[i_469762451[i_469762451_Idx]]],makeNimstrLit(" instead. At offset: ") || [],HEX24_335544323(i_469762451[i_469762451_Idx]) || []), parent: null, m_type: NTI1006632963, name: null, trace: [], up: null}, "JsonError");
     }
     
 
   
 }
 
-function fromJson_469762431(s_469762434) {
-  var result_469762436 = [[]];
+function fromJson_469762441(s_469762444) {
+  var result_469762446 = [[]];
 
-    var i_469762437 = [0];
-    parseHook_469762438(s_469762434, i_469762437, 0, result_469762436, 0);
+    var i_469762447 = [0];
+    parseHook_469762448(s_469762444, i_469762447, 0, result_469762446, 0);
 
-  return result_469762436[0];
+  return result_469762446[0];
 
 }
 
-function onDOMLoaded(e_469762425) {
+function onDOMLoaded(e_469762435) {
     rawEcho(makeNimstrLit("loaded"));
-    var seachContainer_469762426 = document.getElementById("search-container");
-    var searchResults_469762427 = document.createElement("div");
-    searchResults_469762427.id = "search-results";
-    var seachInp_469762428 = document.createElement("input");
-    seachInp_469762428.setAttribute("type", "text");
-    seachInp_469762428.setAttribute("placeholder", "Search");
-    var dbString_469762429 = null;
+    var seachContainer_469762436 = document.getElementById("search-container");
+    var searchResults_469762437 = document.createElement("div");
+    searchResults_469762437.id = "search-results";
+    var seachInp_469762438 = document.createElement("input");
+    seachInp_469762438.setAttribute("type", "text");
+    seachInp_469762438.setAttribute("placeholder", "Search");
+    var dbString_469762439 = null;
         var request = new XMLHttpRequest();
     request.open("GET", "search.json", false);
     request.send(null);
-    dbString_469762429 = request.responseText
+    dbString_469762439 = request.responseText
   
-    var s_469762430 = cstrToNimstr(dbString_469762429);
-    searchDB_469762055[0] = nimCopy(null, fromJson_469762431(s_469762430), NTI1392508934);
-    seachInp_469762428.addEventListener("keyup", onInput, false);
-    seachContainer_469762426.appendChild(seachInp_469762428);
-    seachContainer_469762426.appendChild(searchResults_469762427);
+    var s_469762440 = cstrToNimstr(dbString_469762439);
+    searchDB_469762065[0] = nimCopy(null, fromJson_469762441(s_469762440), NTI469762054);
+    seachInp_469762438.addEventListener("keyup", onInput, false);
+    seachContainer_469762436.appendChild(seachInp_469762438);
+    seachContainer_469762436.appendChild(searchResults_469762437);
 
   
 }
diff --git a/search.json b/search.json
index e7196a9..038b2a8 100644
--- a/search.json
+++ b/search.json
@@ -1 +1 @@
-[{"title": "docs/api.md", "slug": "api.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# API", "", "### General Guide", "", "commitlog also comes as a pkg that you could reuse to modify the behaviour of", "the commands and this is very limited at the moment since I'm still working on", "the best way to get plugins to work with the original CLI instead of having to", "write your own version of commitlog.", "", "The pkg contains the 2 base command's creators and behaviour modifiers", " or more", "commonly known as the golang options pattern.", "", "Briefly put", " You have one function that takes in unlimited amount of functions", "as parameter with each of these parameter functions being able to modify the", "behaviour of the returned instance.", "", "Easy way to explain this is with an example of the `releaser` API", "", "```go", "package main", "", "import (", "", "\"log\"", "", "", "\"github.com/barelyhuman/commitlog/pkg\"", ")", "", "func main() {", "", "versionString := \"v0.0.1\"", "", "releaser", " _ := pkg.CreateNewReleaser(", "", "", "versionString", "", "", "", "pkg.WithMajorIncrement()", "", "", ")", "", "", "log.Println(releaser.String())", "", "}", "```", "", "here the `pkg.CreateNewReleaser` takes in one mandatory value which is the", "`versionString` and the 2nd parameter is optional here.", "", "Though", " since we wish for the releaser to have a custom behaviour everytime the", "flags change", " instead of writing entire functionalities inside various releaser", "functions", " which would look like so", "", "```go", "releaser.IncrementMajor()", "releaser.IncrementMinor()", "```", "", "I'd be unable to expose the builders / option functions out to the public for", "them to write custom behaviours that work directly with the `struct` being used", "by commitlog itself and instead you'd be writing wrappers around existing", "functions. Thus", " adding another layer of abstraction which isn't needed for", "something that wants to be extended.", "", "This approach gives me the ability to expose a selected few properties for you", "to modify while writing your own builder/option function.", "", "The only pointer functions that releaser has is the one's that'll help with", "printing or identifying the final version's state.", "", "Since", " you now know how the API is written", " the go doc for this module should be", "able to help you with the remaining.", "", "[godoc&nearr;](https://pkg.go.dev/github.com/barelyhuman/commitlog)", "", "> **Note**: if the go doc still hasn't been generated for v2.0.0", " please go", "> through the source code to help you with the implementation details", ""]}, {"title": "docs/index.md", "slug": "index.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Index", "", "- [Source](https://github.com/barelyhuman/commitlog)", "- [Quick Start](#quick-start)", "- [About](#about)", "  - [Philosophy](#philosophy)", "  - [Installation](#installation)", "- [Manual](/commitlog/manual)", "- [License](#license)", "", "<h4 id=\"quick-start\">Quick Start</h4>", "", "For the one's who already know the tool and wanna get started quickly.", "", "You can get the CLI in the following ways", "", "1. You can get the binaries from the [download section](/commitlog/download)", "", "2. Using `go get`", "", "```sh", "go get -u github.com/barelyhuman/commitlog", "```", "", "3. Using goblin", "", "```sh", "curl -sf https://goblin.barelyhuman.xyz/github.com/barelyhuman/commitlog | sh", "```", "", "Once installed you can just run `commitlog generate` or the shorter version", "`commitlog g` to get all the changes between the recent tags.", "", "<h4 id=\"about\">About</h4>", "", "<h5 id=\"philosophy\">Philosophy</h5>", "", "**_commitlog_** simply exists because I wasn't able to find a decent enough tool", "to do this without being bound to a specific programming language and it's", "toolset. The closes one to this is the `git`'s own `shortlog` and `log` commands", "", "- **Language Agnostic** - No one needs the entire programming toolset or the", "  language to be setup on the system to be able to just generate logs", "", "- **Decently Sized** - Not everyone has a powerful system and CI systems are", "  still very limited in terms of resources since they give you shared spaces and", "  automating generating this is a common practice so it doesn't make sense for", "  it to install a runtime worth 100MB to run it.", "", "  The binary itself is around 10-13MB which is fairly big for a tool like this", "  but this is due to go's nature of embedding the platform runtime with the", "  binary and this might not be ideal for some and so there's another similar", "  smaller scoped version [nimclog](https://github.com/barelyhuman/nimclog) which", "  is in KB's", "", "- **Flexible** - There are no set standards for how you write commit messages.", "  Commitlint is a good standard and pretty widely used and also what commitlog", "  v1 used as the base for categorizing.", "", "  V2 however", " doesn't have a set commit category standard", " it accepts regex's", "  that you will categorize your commits for you.", "", "  This is more for experienced developers who have a their own pattern of", "  writing commits and would like a tool that'd work with their pattern instead", "  of creating friction", "", "- **Extensible** - The entire thing is open source and MIT licenses", "", "  specifically for you to be able to fix and add things as needed. Each command", "  has been kept away from the domain logic to be able to use `commitlog` even as", "  a library and build your own tool if you wish to", " though if there's something", "  you wish the CLI supported", " you are free to open issues and I really like", "  people helping with the development since that helps keeping the tool alive", "  longer.", "", "<h5 id=\"installation\">Installation</h5>", "", "The installation is pretty straightforwad. You [download](/commitlog/download) the binary", "from the download section of this website or use something like", "[goblin](https://goblin.barelyhuman.xyz) to build the binary for your specific", "system (rarely needed) since the releases actually accommodate the most used", "operating systems and architectures already.", "", "**Linux/Mac (Unix Systems)**", "", "Once downloaded", " you can use the `install` command on *nix systems to link the", "binary to a location that's already in your PATH variable.", "", "eg:", "", "```bash", "# install commitlog from current directory to the /usr/local/bin directory", "install $(pwd)/commitlog /usr/local/bin", "```", "", "This should give you the ability to use the `commitlog` command anywhere in your", "system", "", "**Windows**", "", "Similar to the linux setup", " you can download the `.exe` file and add it to a", "location that your environment path already has. An easier thing to do is to", "store the entire thing in your secondary partition and add that location to your", "PATH. You can use this resource from Java docs to help you with modifying the", "PATH variables", "", "- [Modifying PATH in Windows](https://www.java.com/en/download/help/path.html)", "", "<h4 id=\"manual\">Manual</h4>", "", "[Read Manual &rarr;](/commitlog/manual)", "", "<h4 id=\"license\">License</h4>", "", "commitlog is MIT Licensed and you can read the entire license in the", "[source code](https://github.com/barelyhuman/commitlog)", ""]}, {"title": "docs/download.md", "slug": "download.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | downloads", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Downloads", "", "[commitlog-v2.0.2-darwin-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-amd64.tar.gz)    ", "[commitlog-v2.0.2-darwin-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-amd64.tar.gz.md5)    ", "[commitlog-v2.0.2-darwin-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-arm64.tar.gz)    ", "[commitlog-v2.0.2-darwin-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-arm64.tar.gz.md5)    ", "[commitlog-v2.0.2-linux-386.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-386.tar.gz)    ", "[commitlog-v2.0.2-linux-386.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-386.tar.gz.md5)    ", "[commitlog-v2.0.2-linux-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-amd64.tar.gz)    ", "[commitlog-v2.0.2-linux-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-amd64.tar.gz.md5)    ", "[commitlog-v2.0.2-linux-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-arm64.tar.gz)    ", "[commitlog-v2.0.2-linux-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-arm64.tar.gz.md5)    ", "[commitlog-v2.0.2-windows-386.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-386.zip)    ", "[commitlog-v2.0.2-windows-386.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-386.zip.md5)    ", "[commitlog-v2.0.2-windows-amd64.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-amd64.zip)    ", "[commitlog-v2.0.2-windows-amd64.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-amd64.zip.md5)    ", ""]}, {"title": "docs/manual.md", "slug": "manual.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# Manual", "", "- [Basics](#basics)", "  - [generate](#generate)", "  - [release](#release)", "- [Advanced](#advanced)", "  - [Selective Log Ranges](#selective-log-ranges)", "  - [From a different repo](#from-a-different-repo)", "  - [Categorize](#categorize)", "- [CLI](#cli)", "- [API](/commitlog/api)", "", "<h3 id=\"basics\">Basics</h3>", "", "**_`commitlog`_** come with 2 basic functionalities", "", "- Generating commits as changelogs in markdown", "- Managing your version and tags", "", "Both the above are available as sub commands and we'll go through each one by", "one.", "", "Just running `commitlog` no longer works as it did in v1", " you'll need to specify", "a sub command to get it working.", "", "This has been done to keep it simpler to keep arbitrary behaviour to a minimum", "", "<h4 id=\"generate\">generate</h3>", "", "The first one is `generate` and in most cases you'll just be using this to", "handle generation of commits as a list of markdown notes", "", "Here's an example of what it'll look like to run the `generate` sub-command", "", "```sh", "$ commitlog generate", "# or ", "$ commitlog g", "```", "", "**Output**:", "", "```md", "## All Changes", "87ce3fc76b252908cdd81f9537713f8d67813652 chore: v2.0.0-beta.0", "", "09fc85c0d1d52d770bbbf39ac45907103a53d354 refactor: swap go-git for push with exec", "", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "909fd032facdeb4fb7633a4fad82dced28e8de83 chore: swap debugging logger with stderr printer", "<!-- .... more commits till the end of tag -->", "```", "", "The behaviour of the `generate` command is like so", "", "- go through all commits from the current `HEAD` (commit with the `HEAD`", "  reference) till the last commit or the most recent tagged commit.", "- the other case is where if the latest commit is also a tagged commit", " it'll", "  still go till the most recent tagged commit.", "", "  eg: v0.0.2 -> HEAD", " v0.0.1 -> SOMEHASH", " would give you the commits between", "  both the tags.", "", "The default behaviour of **_commitlog_** is to print to the stdout of your", "terminal which might not be what you wish to do.", "", "So", " if you wish to ever write to a file ", " you can use the `--out FILE` flag to", "write the output to a file instead.", "", "```sh", "$ commitlog g -o ./CHANGELOG.md", "```", "", "> **Note**: commitlog will overwrite the file with the new output", " make sure you", "> create a backup of the file when working with this.", "", "> **Note**: In coming versions an append mode will be added to the CLI to avoid", "> having to deal with this manually", "", "<h4 id=\"release\">release</h3>", "", "The `release` sub-command is a complimentary sub-command added to commitlog to", "help you with managing release versions. I understand that most languages have", "their own package version management and you might want to work with them but", "that's also why the `release` sub-command isn't something you need", " it's there", "for cases where you might wanna use it.", "", "My primary usecase is when working with repositories that work with multiple", "languages and I'd prefer a unified version.", "", "The `release` command doesn't modify your source code files but instead handles", "the version with it's own file named `.commitlog.release`", " which just holds the", "**version** number right now and while this does have the X.X.X format (semantic", "versioning format) the increments or how you handle them doesn't have to be.", "", "The command is flexible enough for you to combine and create your own way of", "versioning.", "", "##### Initialize", "", "```sh", "$ commitlog release --init", "# or ", "$ commitlog r --init", "```", "", "Once initialized", " you'll see a `.commitlog.release` file in your repo with the", "version `v0.0.0` to start with.", "", "##### Increments", "", "Post that you can use the remaining flags to help you incrementing the version", "as needed.", "", "```sh", "$ commitlog r --major # change to v1.0.0", "$ commitlog r --minor # change to v0.1.0", "$ commitlog r --patch # change to v0.0.1", "$ commitlog r --pre # change to v0.0.0-beta.0", "$ commitlog r --pre --pre-tag=\"dev\" # change to v0.0.0-dev.0", "", "# or go bonkers ", "$ commitlog r --patch --pre --pre-tag=\"dev\" # change to v0.0.1-dev.0", "$ commitlog r --major --patch --pre --pre-tag=\"dev\" # change to v1.0.1-dev.0", "```", "", "#### Git actions", "", "Most times you'd also want a tool like this to create commits and tags for you", "which is fair", " so `release` does come with a few git actions.", "", "- `--commit` (will create a commit and tag it for you)", "- `--push` (will push the commits and tags for you)", "", "The whole command would look a little something like this", "", "```sh", "$ commitlog r --patch --commit --push", "```", "", "<h3 id=\"advanced\">Advanced</h3>", "", "These are not really hard to guess or achieve but are in the advanced section as", "this isn't something a beginner user might need to mess with. If you have other", "use cases that you feel like should be added here", " raise a issue.", "", "<h4 id=\"selective-log-ranges\">Selective Log Ranges</h4>", "There's enough cases where the entire history between the tags makes no sense. You might just want a specific set of commits and this is very easy to do with commitlog", "", "```sh", "$ commitlog g --start HEAD --end HEAD~3 ", "# would return the last 3 commits", "```", "", "And as you might have understood", " commitlog does work with git's revision system", "so you can reuse git's own revision pointers as needed. Though it's mostly", "easier to just use the HASH since", " finding the hashes in `git log` is easier", "than finding the number you have to type after the `HEAD~`", "", "<h4 id=\"from-a-different-repo\">From a different repo</h4>", "A lot more often you might need to generate logs for a sub-repo when working with a huge multirepo folder which a lot of sub-modules and switching worktree for the changelog might not be something you wish to do.", "", "In cases like these the `-p` or `--path` flag can be used with the `generate`", "flag", "", "```sh", "$ commitlog g -p ./sub/module -s HEAD~3 ", "# would return the commits from HEAD~3 to the next tag or end of all commits.", "```", "", "<h4 id=\"categorize\">Categorize</h4>", "You wouldn't be using commitlog otherwise so this obviously has to exist.", "", "As for why is this turned off by default? I just don't use commit standards and", "mostly just need the commits between tags and very rarely need the categories to", "help me but doesn't change the fact that someone else might need it.", "", "So", " how does commitlog categorize? using regex's ", " or more like comma seperated", "regex's.", "", "The implementation approach might bring some issue but I'm going to wait for", "them instead of over fixing something that might never really happen.", "", "Anyway", " a simple example for a non-scoped commitlint styled categorization would", "look something like this .", "", "```sh", "$ commitlog g --categories=\"feat:", "fix:\"", "```", "", "**Output:**", "", "```md", "## feat:", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## fix:", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "```", "", "This could be made a little more neater using a better regex like so", "", "```sh", "$ commitlog g --categories=\"^feat", "^fix\"", "```", "", "**Output**:", "", "```md", "## ^feat", "e0ce9c693c554158b7b4841b799524164d9c3e83 feat(releaser): add init and pre-tag handlers", "", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## ^fix", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "540bb3d7419aab314fdb999dd57eeac3c53f5fad fix doc generation", "", "87d40ddbd463ad71b3af8b7edb8ac8176ecbf2f5 fix tests for new param", "```", "", "As visible", " you find more commits in the 2nd one since the regex matches more", "cases and gives you more information. You are free to modify these to make them", "work with other patterns that you might follow.", "", "Also the titles are going to be the regex's you pass. A future version will add", "a way for you to add label's to the regex though that's a little harder to", "achieve without making the flags very verbose so I've avoided it for now.", "", "> **Note**: This is the initial implementation of this and might change in a", "> future major version since this flag feels a little more frictional than the", "> other approaches I have in mind. Feel free to recommend other ways to do this.", "", "<h3 id=\"cli\">CLI</h3>", "", "This is the entire CLI reference", " which you can also access by using the `-h`", "flag on the downloaded binary.", "", "**`commitlog -h`**", "", "```", "NAME:", "   commitlog - commits to changelogs", "", "USAGE:", "   commitlog [global options] command [command options] [arguments...]", "", "COMMANDS:", "   generate", " g  commits to changelogs", "   release", " r   manage .commitlog.release version", "   help", " h      Shows a list of commands or help for one command", "", "GLOBAL OPTIONS:", "   --help", " -h  show help (default: false)", "```", "", "---", "", "**`commitlog g -h`**", "", "```", "NAME:", "   commitlog generate - commits to changelogs", "", "USAGE:", "   commitlog generate [command options] [arguments...]", "", "OPTIONS:", "   --categories value       categories to use", " includes all commits by default. any text you add here will be used to create categories out of the commits", "   --end END", " -e END        END reference for the commit to stop including commits at.This is exclusive of the given commit reference", "   --out FILE", " -o FILE      path to the output FILE", "   --path PATH", " -p PATH     root with the '.git' folder PATH (default: \".\")", "   --promo                  add promo text to the end of output (default: false)", "   --start START", " -s START  START reference for the commit to include commits from", "This is inclusive of the given commit reference", "   --stdio                  print to the stdout (default: true)", "```", "", "---", "", "**`commitlog r -h`**", "", "```", "NAME:", "   commitlog release - manage .commitlog.release version", "", "USAGE:", "   commitlog release [command options] [arguments...]", "", "OPTIONS:", "   --commit              if true will create a commit and tag", " of the changed version (default: false)", "   --init                initialise commitlog release (default: false)", "   --major               create a major version (default: false)", "   --minor               create a minor version (default: false)", "   --patch               create a patch version (default: false)", "   --path PATH", " -p PATH  PATH to a folder where .commitlog.release exists or is to be created.(note: do not use `--commit` or `--push` if the file isn't in the root) (default: \".\")", "   --pre                 create a pre-release version. will default to patch increment unlessspecified and not already a pre-release (default: false)", "   --pre-tag value       create a pre-release version (default: \"beta\")", "   --push                if true will create push the created release commit + tag on origin (default: false)", "```", ""]}]
\ No newline at end of file
+[{"title": "docs/download.md", "slug": "download.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | downloads", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Downloads", "", "[commitlog-v2.0.2-darwin-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-amd64.tar.gz)    ", "[commitlog-v2.0.2-darwin-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-amd64.tar.gz.md5)    ", "[commitlog-v2.0.2-darwin-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-arm64.tar.gz)    ", "[commitlog-v2.0.2-darwin-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-arm64.tar.gz.md5)    ", "[commitlog-v2.0.2-linux-386.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-386.tar.gz)    ", "[commitlog-v2.0.2-linux-386.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-386.tar.gz.md5)    ", "[commitlog-v2.0.2-linux-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-amd64.tar.gz)    ", "[commitlog-v2.0.2-linux-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-amd64.tar.gz.md5)    ", "[commitlog-v2.0.2-linux-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-arm64.tar.gz)    ", "[commitlog-v2.0.2-linux-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-arm64.tar.gz.md5)    ", "[commitlog-v2.0.2-windows-386.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-386.zip)    ", "[commitlog-v2.0.2-windows-386.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-386.zip.md5)    ", "[commitlog-v2.0.2-windows-amd64.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-amd64.zip)    ", "[commitlog-v2.0.2-windows-amd64.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-amd64.zip.md5)    ", ""]}, {"title": "docs/api.md", "slug": "api.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# API", "", "### General Guide", "", "commitlog also comes as a pkg that you could reuse to modify the behaviour of", "the commands and this is very limited at the moment since I'm still working on", "the best way to get plugins to work with the original CLI instead of having to", "write your own version of commitlog.", "", "The pkg contains the 2 base command's creators and behaviour modifiers", " or more", "commonly known as the golang options pattern.", "", "Briefly put", " You have one function that takes in unlimited amount of functions", "as parameter with each of these parameter functions being able to modify the", "behaviour of the returned instance.", "", "Easy way to explain this is with an example of the `releaser` API", "", "```go", "package main", "", "import (", "", "\"log\"", "", "", "\"github.com/barelyhuman/commitlog/pkg\"", ")", "", "func main() {", "", "versionString := \"v0.0.1\"", "", "releaser", " _ := pkg.CreateNewReleaser(", "", "", "versionString", "", "", "", "pkg.WithMajorIncrement()", "", "", ")", "", "", "log.Println(releaser.String())", "", "}", "```", "", "here the `pkg.CreateNewReleaser` takes in one mandatory value which is the", "`versionString` and the 2nd parameter is optional here.", "", "Though", " since we wish for the releaser to have a custom behaviour everytime the", "flags change", " instead of writing entire functionalities inside various releaser", "functions", " which would look like so", "", "```go", "releaser.IncrementMajor()", "releaser.IncrementMinor()", "```", "", "I'd be unable to expose the builders / option functions out to the public for", "them to write custom behaviours that work directly with the `struct` being used", "by commitlog itself and instead you'd be writing wrappers around existing", "functions. Thus", " adding another layer of abstraction which isn't needed for", "something that wants to be extended.", "", "This approach gives me the ability to expose a selected few properties for you", "to modify while writing your own builder/option function.", "", "The only pointer functions that releaser has is the one's that'll help with", "printing or identifying the final version's state.", "", "Since", " you now know how the API is written", " the go doc for this module should be", "able to help you with the remaining.", "", "[godoc&nearr;](https://pkg.go.dev/github.com/barelyhuman/commitlog)", "", "> **Note**: if the go doc still hasn't been generated for v2.0.0", " please go", "> through the source code to help you with the implementation details", ""]}, {"title": "docs/index.md", "slug": "index.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Index", "", "- [Source](https://github.com/barelyhuman/commitlog)", "- [Quick Start](#quick-start)", "- [About](#about)", "  - [Philosophy](#philosophy)", "  - [Installation](#installation)", "- [Manual](/commitlog/manual)", "- [License](#license)", "", "<h4 id=\"quick-start\">Quick Start</h4>", "", "For the one's who already know the tool and wanna get started quickly.", "", "You can get the CLI in the following ways", "", "1. You can get the binaries from the [download section](/commitlog/download)", "", "2. Using `go get`", "", "```sh", "go get -u github.com/barelyhuman/commitlog", "```", "", "3. Using goblin", "", "```sh", "curl -sf https://goblin.run/github.com/barelyhuman/commitlog | sh", "```", "", "Once installed you can just run `commitlog generate` or the shorter version", "`commitlog g` to get all the changes between the recent tags.", "", "<h4 id=\"about\">About</h4>", "", "<h5 id=\"philosophy\">Philosophy</h5>", "", "**_commitlog_** simply exists because I wasn't able to find a decent enough tool", "to do this without being bound to a specific programming language and it's", "toolset. The closes one to this is the `git`'s own `shortlog` and `log` commands", "", "- **Language Agnostic** - No one needs the entire programming toolset or the", "  language to be setup on the system to be able to just generate logs", "", "- **Decently Sized** - Not everyone has a powerful system and CI systems are", "  still very limited in terms of resources since they give you shared spaces and", "  automating generating this is a common practice so it doesn't make sense for", "  it to install a runtime worth 100MB to run it.", "", "  The binary itself is around 10-13MB which is fairly big for a tool like this", "  but this is due to go's nature of embedding the platform runtime with the", "  binary and this might not be ideal for some and so there's another similar", "  smaller scoped version [nimclog](https://github.com/barelyhuman/nimclog) which", "  is in KB's", "", "- **Flexible** - There are no set standards for how you write commit messages.", "  Commitlint is a good standard and pretty widely used and also what commitlog", "  v1 used as the base for categorizing.", "", "  V2 however", " doesn't have a set commit category standard", " it accepts regex's", "  that you will categorize your commits for you.", "", "  This is more for experienced developers who have a their own pattern of", "  writing commits and would like a tool that'd work with their pattern instead", "  of creating friction", "", "- **Extensible** - The entire thing is open source and MIT licenses", "", "  specifically for you to be able to fix and add things as needed. Each command", "  has been kept away from the domain logic to be able to use `commitlog` even as", "  a library and build your own tool if you wish to", " though if there's something", "  you wish the CLI supported", " you are free to open issues and I really like", "  people helping with the development since that helps keeping the tool alive", "  longer.", "", "<h5 id=\"installation\">Installation</h5>", "", "The installation is pretty straightforwad. You [download](/commitlog/download) the binary", "from the download section of this website or use something like", "[goblin](https://goblin.run) to build the binary for your specific", "system (rarely needed) since the releases actually accommodate the most used", "operating systems and architectures already.", "", "**Linux/Mac (Unix Systems)**", "", "Once downloaded", " you can use the `install` command on *nix systems to link the", "binary to a location that's already in your PATH variable.", "", "eg:", "", "```bash", "# install commitlog from current directory to the /usr/local/bin directory", "install $(pwd)/commitlog /usr/local/bin", "```", "", "This should give you the ability to use the `commitlog` command anywhere in your", "system", "", "**Windows**", "", "Similar to the linux setup", " you can download the `.exe` file and add it to a", "location that your environment path already has. An easier thing to do is to", "store the entire thing in your secondary partition and add that location to your", "PATH. You can use this resource from Java docs to help you with modifying the", "PATH variables", "", "- [Modifying PATH in Windows](https://www.java.com/en/download/help/path.html)", "", "<h4 id=\"manual\">Manual</h4>", "", "[Read Manual &rarr;](/commitlog/manual)", "", "<h4 id=\"license\">License</h4>", "", "commitlog is MIT Licensed and you can read the entire license in the", "[source code](https://github.com/barelyhuman/commitlog)", ""]}, {"title": "docs/manual.md", "slug": "manual.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# Manual", "", "- [Basics](#basics)", "  - [generate](#generate)", "  - [release](#release)", "- [Advanced](#advanced)", "  - [Selective Log Ranges](#selective-log-ranges)", "  - [From a different repo](#from-a-different-repo)", "  - [Categorize](#categorize)", "- [CLI](#cli)", "- [API](/commitlog/api)", "", "<h3 id=\"basics\">Basics</h3>", "", "**_`commitlog`_** come with 2 basic functionalities", "", "- Generating commits as changelogs in markdown", "- Managing your version and tags", "", "Both the above are available as sub commands and we'll go through each one by", "one.", "", "Just running `commitlog` no longer works as it did in v1", " you'll need to specify", "a sub command to get it working.", "", "This has been done to keep it simpler to keep arbitrary behaviour to a minimum", "", "<h4 id=\"generate\">generate</h3>", "", "The first one is `generate` and in most cases you'll just be using this to", "handle generation of commits as a list of markdown notes", "", "Here's an example of what it'll look like to run the `generate` sub-command", "", "```sh", "$ commitlog generate", "# or ", "$ commitlog g", "```", "", "**Output**:", "", "```md", "## All Changes", "87ce3fc76b252908cdd81f9537713f8d67813652 chore: v2.0.0-beta.0", "", "09fc85c0d1d52d770bbbf39ac45907103a53d354 refactor: swap go-git for push with exec", "", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "909fd032facdeb4fb7633a4fad82dced28e8de83 chore: swap debugging logger with stderr printer", "<!-- .... more commits till the end of tag -->", "```", "", "The behaviour of the `generate` command is like so", "", "- go through all commits from the current `HEAD` (commit with the `HEAD`", "  reference) till the last commit or the most recent tagged commit.", "- the other case is where if the latest commit is also a tagged commit", " it'll", "  still go till the most recent tagged commit.", "", "  eg: v0.0.2 -> HEAD", " v0.0.1 -> SOMEHASH", " would give you the commits between", "  both the tags.", "", "The default behaviour of **_commitlog_** is to print to the stdout of your", "terminal which might not be what you wish to do.", "", "So", " if you wish to ever write to a file ", " you can use the `--out FILE` flag to", "write the output to a file instead.", "", "```sh", "$ commitlog g -o ./CHANGELOG.md", "```", "", "> **Note**: commitlog will overwrite the file with the new output", " make sure you", "> create a backup of the file when working with this.", "", "> **Note**: In coming versions an append mode will be added to the CLI to avoid", "> having to deal with this manually", "", "<h4 id=\"release\">release</h3>", "", "The `release` sub-command is a complimentary sub-command added to commitlog to", "help you with managing release versions. I understand that most languages have", "their own package version management and you might want to work with them but", "that's also why the `release` sub-command isn't something you need", " it's there", "for cases where you might wanna use it.", "", "My primary usecase is when working with repositories that work with multiple", "languages and I'd prefer a unified version.", "", "The `release` command doesn't modify your source code files but instead handles", "the version with it's own file named `.commitlog.release`", " which just holds the", "**version** number right now and while this does have the X.X.X format (semantic", "versioning format) the increments or how you handle them doesn't have to be.", "", "The command is flexible enough for you to combine and create your own way of", "versioning.", "", "##### Initialize", "", "```sh", "$ commitlog release --init", "# or ", "$ commitlog r --init", "```", "", "Once initialized", " you'll see a `.commitlog.release` file in your repo with the", "version `v0.0.0` to start with.", "", "##### Increments", "", "Post that you can use the remaining flags to help you incrementing the version", "as needed.", "", "```sh", "$ commitlog r --major # change to v1.0.0", "$ commitlog r --minor # change to v0.1.0", "$ commitlog r --patch # change to v0.0.1", "$ commitlog r --pre # change to v0.0.0-beta.0", "$ commitlog r --pre --pre-tag=\"dev\" # change to v0.0.0-dev.0", "", "# or go bonkers ", "$ commitlog r --patch --pre --pre-tag=\"dev\" # change to v0.0.1-dev.0", "$ commitlog r --major --patch --pre --pre-tag=\"dev\" # change to v1.0.1-dev.0", "```", "", "#### Git actions", "", "Most times you'd also want a tool like this to create commits and tags for you", "which is fair", " so `release` does come with a few git actions.", "", "- `--commit` (will create a commit and tag it for you)", "- `--push` (will push the commits and tags for you)", "", "The whole command would look a little something like this", "", "```sh", "$ commitlog r --patch --commit --push", "```", "", "<h3 id=\"advanced\">Advanced</h3>", "", "These are not really hard to guess or achieve but are in the advanced section as", "this isn't something a beginner user might need to mess with. If you have other", "use cases that you feel like should be added here", " raise a issue.", "", "<h4 id=\"selective-log-ranges\">Selective Log Ranges</h4>", "There's enough cases where the entire history between the tags makes no sense. You might just want a specific set of commits and this is very easy to do with commitlog", "", "```sh", "$ commitlog g --start HEAD --end HEAD~3 ", "# would return the last 3 commits", "```", "", "And as you might have understood", " commitlog does work with git's revision system", "so you can reuse git's own revision pointers as needed. Though it's mostly", "easier to just use the HASH since", " finding the hashes in `git log` is easier", "than finding the number you have to type after the `HEAD~`", "", "<h4 id=\"from-a-different-repo\">From a different repo</h4>", "A lot more often you might need to generate logs for a sub-repo when working with a huge multirepo folder which a lot of sub-modules and switching worktree for the changelog might not be something you wish to do.", "", "In cases like these the `-p` or `--path` flag can be used with the `generate`", "flag", "", "```sh", "$ commitlog g -p ./sub/module -s HEAD~3 ", "# would return the commits from HEAD~3 to the next tag or end of all commits.", "```", "", "<h4 id=\"categorize\">Categorize</h4>", "You wouldn't be using commitlog otherwise so this obviously has to exist.", "", "As for why is this turned off by default? I just don't use commit standards and", "mostly just need the commits between tags and very rarely need the categories to", "help me but doesn't change the fact that someone else might need it.", "", "So", " how does commitlog categorize? using regex's ", " or more like comma seperated", "regex's.", "", "The implementation approach might bring some issue but I'm going to wait for", "them instead of over fixing something that might never really happen.", "", "Anyway", " a simple example for a non-scoped commitlint styled categorization would", "look something like this .", "", "```sh", "$ commitlog g --categories=\"feat:", "fix:\"", "```", "", "**Output:**", "", "```md", "## feat:", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## fix:", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "```", "", "This could be made a little more neater using a better regex like so", "", "```sh", "$ commitlog g --categories=\"^feat", "^fix\"", "```", "", "**Output**:", "", "```md", "## ^feat", "e0ce9c693c554158b7b4841b799524164d9c3e83 feat(releaser): add init and pre-tag handlers", "", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## ^fix", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "540bb3d7419aab314fdb999dd57eeac3c53f5fad fix doc generation", "", "87d40ddbd463ad71b3af8b7edb8ac8176ecbf2f5 fix tests for new param", "```", "", "As visible", " you find more commits in the 2nd one since the regex matches more", "cases and gives you more information. You are free to modify these to make them", "work with other patterns that you might follow.", "", "Also the titles are going to be the regex's you pass. A future version will add", "a way for you to add label's to the regex though that's a little harder to", "achieve without making the flags very verbose so I've avoided it for now.", "", "> **Note**: This is the initial implementation of this and might change in a", "> future major version since this flag feels a little more frictional than the", "> other approaches I have in mind. Feel free to recommend other ways to do this.", "", "<h3 id=\"cli\">CLI</h3>", "", "This is the entire CLI reference", " which you can also access by using the `-h`", "flag on the downloaded binary.", "", "**`commitlog -h`**", "", "```", "NAME:", "   commitlog - commits to changelogs", "", "USAGE:", "   commitlog [global options] command [command options] [arguments...]", "", "COMMANDS:", "   generate", " g  commits to changelogs", "   release", " r   manage .commitlog.release version", "   help", " h      Shows a list of commands or help for one command", "", "GLOBAL OPTIONS:", "   --help", " -h  show help (default: false)", "```", "", "---", "", "**`commitlog g -h`**", "", "```", "NAME:", "   commitlog generate - commits to changelogs", "", "USAGE:", "   commitlog generate [command options] [arguments...]", "", "OPTIONS:", "   --categories value       categories to use", " includes all commits by default. any text you add here will be used to create categories out of the commits", "   --end END", " -e END        END reference for the commit to stop including commits at.This is exclusive of the given commit reference", "   --out FILE", " -o FILE      path to the output FILE", "   --path PATH", " -p PATH     root with the '.git' folder PATH (default: \".\")", "   --promo                  add promo text to the end of output (default: false)", "   --start START", " -s START  START reference for the commit to include commits from", "This is inclusive of the given commit reference", "   --stdio                  print to the stdout (default: true)", "```", "", "---", "", "**`commitlog r -h`**", "", "```", "NAME:", "   commitlog release - manage .commitlog.release version", "", "USAGE:", "   commitlog release [command options] [arguments...]", "", "OPTIONS:", "   --commit              if true will create a commit and tag", " of the changed version (default: false)", "   --init                initialise commitlog release (default: false)", "   --major               create a major version (default: false)", "   --minor               create a minor version (default: false)", "   --patch               create a patch version (default: false)", "   --path PATH", " -p PATH  PATH to a folder where .commitlog.release exists or is to be created.(note: do not use `--commit` or `--push` if the file isn't in the root) (default: \".\")", "   --pre                 create a pre-release version. will default to patch increment unlessspecified and not already a pre-release (default: false)", "   --pre-tag value       create a pre-release version (default: \"beta\")", "   --push                if true will create push the created release commit + tag on origin (default: false)", "```", ""]}]
\ No newline at end of file

From 60e34462141096ddaa114820aaacfec930c73576 Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Wed, 30 Aug 2023 17:54:06 +0000
Subject: [PATCH 23/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@8794d22bcbcae550551805caa98751f4c91fc007=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 download.html | 21 +++++++--------------
 search.json   |  2 +-
 2 files changed, 8 insertions(+), 15 deletions(-)

diff --git a/download.html b/download.html
index 6004f56..215d1b5 100644
--- a/download.html
+++ b/download.html
@@ -7,18 +7,11 @@
 <h3><a href="/commitlog/">commitlog</a></h3>
 <p><a href="/commitlog/">Home</a> <a href="/commitlog/manual">Manual</a> <a href="/commitlog/download">Download</a> <a href="/commitlog/api">API</a></p>
 <h4>Downloads</h4>
-<p><a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-amd64.tar.gz">commitlog-v2.0.2-darwin-amd64.tar.gz</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-amd64.tar.gz.md5">commitlog-v2.0.2-darwin-amd64.tar.gz.md5</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-arm64.tar.gz">commitlog-v2.0.2-darwin-arm64.tar.gz</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-arm64.tar.gz.md5">commitlog-v2.0.2-darwin-arm64.tar.gz.md5</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-386.tar.gz">commitlog-v2.0.2-linux-386.tar.gz</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-386.tar.gz.md5">commitlog-v2.0.2-linux-386.tar.gz.md5</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-amd64.tar.gz">commitlog-v2.0.2-linux-amd64.tar.gz</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-amd64.tar.gz.md5">commitlog-v2.0.2-linux-amd64.tar.gz.md5</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-arm64.tar.gz">commitlog-v2.0.2-linux-arm64.tar.gz</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-arm64.tar.gz.md5">commitlog-v2.0.2-linux-arm64.tar.gz.md5</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-386.zip">commitlog-v2.0.2-windows-386.zip</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-386.zip.md5">commitlog-v2.0.2-windows-386.zip.md5</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-amd64.zip">commitlog-v2.0.2-windows-amd64.zip</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-amd64.zip.md5">commitlog-v2.0.2-windows-amd64.zip.md5</a></p>
+<p><a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/darwin-amd64.tgz">darwin-amd64.tgz</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/darwin-arm64.tgz">darwin-arm64.tgz</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/linux-amd64.tgz">linux-amd64.tgz</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/linux-arm.tgz">linux-arm.tgz</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/linux-arm64.tgz">linux-arm64.tgz</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/windows-386.tgz">windows-386.tgz</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/windows-amd64.tgz">windows-amd64.tgz</a></p>
 </section></div><script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script><script>hljs.highlightAll()</script><script src="mudkip.js"></script></body></html>
\ No newline at end of file
diff --git a/search.json b/search.json
index 038b2a8..3d7d3df 100644
--- a/search.json
+++ b/search.json
@@ -1 +1 @@
-[{"title": "docs/download.md", "slug": "download.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | downloads", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Downloads", "", "[commitlog-v2.0.2-darwin-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-amd64.tar.gz)    ", "[commitlog-v2.0.2-darwin-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-amd64.tar.gz.md5)    ", "[commitlog-v2.0.2-darwin-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-arm64.tar.gz)    ", "[commitlog-v2.0.2-darwin-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-darwin-arm64.tar.gz.md5)    ", "[commitlog-v2.0.2-linux-386.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-386.tar.gz)    ", "[commitlog-v2.0.2-linux-386.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-386.tar.gz.md5)    ", "[commitlog-v2.0.2-linux-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-amd64.tar.gz)    ", "[commitlog-v2.0.2-linux-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-amd64.tar.gz.md5)    ", "[commitlog-v2.0.2-linux-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-arm64.tar.gz)    ", "[commitlog-v2.0.2-linux-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-linux-arm64.tar.gz.md5)    ", "[commitlog-v2.0.2-windows-386.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-386.zip)    ", "[commitlog-v2.0.2-windows-386.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-386.zip.md5)    ", "[commitlog-v2.0.2-windows-amd64.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-amd64.zip)    ", "[commitlog-v2.0.2-windows-amd64.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.2/commitlog-v2.0.2-windows-amd64.zip.md5)    ", ""]}, {"title": "docs/api.md", "slug": "api.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# API", "", "### General Guide", "", "commitlog also comes as a pkg that you could reuse to modify the behaviour of", "the commands and this is very limited at the moment since I'm still working on", "the best way to get plugins to work with the original CLI instead of having to", "write your own version of commitlog.", "", "The pkg contains the 2 base command's creators and behaviour modifiers", " or more", "commonly known as the golang options pattern.", "", "Briefly put", " You have one function that takes in unlimited amount of functions", "as parameter with each of these parameter functions being able to modify the", "behaviour of the returned instance.", "", "Easy way to explain this is with an example of the `releaser` API", "", "```go", "package main", "", "import (", "", "\"log\"", "", "", "\"github.com/barelyhuman/commitlog/pkg\"", ")", "", "func main() {", "", "versionString := \"v0.0.1\"", "", "releaser", " _ := pkg.CreateNewReleaser(", "", "", "versionString", "", "", "", "pkg.WithMajorIncrement()", "", "", ")", "", "", "log.Println(releaser.String())", "", "}", "```", "", "here the `pkg.CreateNewReleaser` takes in one mandatory value which is the", "`versionString` and the 2nd parameter is optional here.", "", "Though", " since we wish for the releaser to have a custom behaviour everytime the", "flags change", " instead of writing entire functionalities inside various releaser", "functions", " which would look like so", "", "```go", "releaser.IncrementMajor()", "releaser.IncrementMinor()", "```", "", "I'd be unable to expose the builders / option functions out to the public for", "them to write custom behaviours that work directly with the `struct` being used", "by commitlog itself and instead you'd be writing wrappers around existing", "functions. Thus", " adding another layer of abstraction which isn't needed for", "something that wants to be extended.", "", "This approach gives me the ability to expose a selected few properties for you", "to modify while writing your own builder/option function.", "", "The only pointer functions that releaser has is the one's that'll help with", "printing or identifying the final version's state.", "", "Since", " you now know how the API is written", " the go doc for this module should be", "able to help you with the remaining.", "", "[godoc&nearr;](https://pkg.go.dev/github.com/barelyhuman/commitlog)", "", "> **Note**: if the go doc still hasn't been generated for v2.0.0", " please go", "> through the source code to help you with the implementation details", ""]}, {"title": "docs/index.md", "slug": "index.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Index", "", "- [Source](https://github.com/barelyhuman/commitlog)", "- [Quick Start](#quick-start)", "- [About](#about)", "  - [Philosophy](#philosophy)", "  - [Installation](#installation)", "- [Manual](/commitlog/manual)", "- [License](#license)", "", "<h4 id=\"quick-start\">Quick Start</h4>", "", "For the one's who already know the tool and wanna get started quickly.", "", "You can get the CLI in the following ways", "", "1. You can get the binaries from the [download section](/commitlog/download)", "", "2. Using `go get`", "", "```sh", "go get -u github.com/barelyhuman/commitlog", "```", "", "3. Using goblin", "", "```sh", "curl -sf https://goblin.run/github.com/barelyhuman/commitlog | sh", "```", "", "Once installed you can just run `commitlog generate` or the shorter version", "`commitlog g` to get all the changes between the recent tags.", "", "<h4 id=\"about\">About</h4>", "", "<h5 id=\"philosophy\">Philosophy</h5>", "", "**_commitlog_** simply exists because I wasn't able to find a decent enough tool", "to do this without being bound to a specific programming language and it's", "toolset. The closes one to this is the `git`'s own `shortlog` and `log` commands", "", "- **Language Agnostic** - No one needs the entire programming toolset or the", "  language to be setup on the system to be able to just generate logs", "", "- **Decently Sized** - Not everyone has a powerful system and CI systems are", "  still very limited in terms of resources since they give you shared spaces and", "  automating generating this is a common practice so it doesn't make sense for", "  it to install a runtime worth 100MB to run it.", "", "  The binary itself is around 10-13MB which is fairly big for a tool like this", "  but this is due to go's nature of embedding the platform runtime with the", "  binary and this might not be ideal for some and so there's another similar", "  smaller scoped version [nimclog](https://github.com/barelyhuman/nimclog) which", "  is in KB's", "", "- **Flexible** - There are no set standards for how you write commit messages.", "  Commitlint is a good standard and pretty widely used and also what commitlog", "  v1 used as the base for categorizing.", "", "  V2 however", " doesn't have a set commit category standard", " it accepts regex's", "  that you will categorize your commits for you.", "", "  This is more for experienced developers who have a their own pattern of", "  writing commits and would like a tool that'd work with their pattern instead", "  of creating friction", "", "- **Extensible** - The entire thing is open source and MIT licenses", "", "  specifically for you to be able to fix and add things as needed. Each command", "  has been kept away from the domain logic to be able to use `commitlog` even as", "  a library and build your own tool if you wish to", " though if there's something", "  you wish the CLI supported", " you are free to open issues and I really like", "  people helping with the development since that helps keeping the tool alive", "  longer.", "", "<h5 id=\"installation\">Installation</h5>", "", "The installation is pretty straightforwad. You [download](/commitlog/download) the binary", "from the download section of this website or use something like", "[goblin](https://goblin.run) to build the binary for your specific", "system (rarely needed) since the releases actually accommodate the most used", "operating systems and architectures already.", "", "**Linux/Mac (Unix Systems)**", "", "Once downloaded", " you can use the `install` command on *nix systems to link the", "binary to a location that's already in your PATH variable.", "", "eg:", "", "```bash", "# install commitlog from current directory to the /usr/local/bin directory", "install $(pwd)/commitlog /usr/local/bin", "```", "", "This should give you the ability to use the `commitlog` command anywhere in your", "system", "", "**Windows**", "", "Similar to the linux setup", " you can download the `.exe` file and add it to a", "location that your environment path already has. An easier thing to do is to", "store the entire thing in your secondary partition and add that location to your", "PATH. You can use this resource from Java docs to help you with modifying the", "PATH variables", "", "- [Modifying PATH in Windows](https://www.java.com/en/download/help/path.html)", "", "<h4 id=\"manual\">Manual</h4>", "", "[Read Manual &rarr;](/commitlog/manual)", "", "<h4 id=\"license\">License</h4>", "", "commitlog is MIT Licensed and you can read the entire license in the", "[source code](https://github.com/barelyhuman/commitlog)", ""]}, {"title": "docs/manual.md", "slug": "manual.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# Manual", "", "- [Basics](#basics)", "  - [generate](#generate)", "  - [release](#release)", "- [Advanced](#advanced)", "  - [Selective Log Ranges](#selective-log-ranges)", "  - [From a different repo](#from-a-different-repo)", "  - [Categorize](#categorize)", "- [CLI](#cli)", "- [API](/commitlog/api)", "", "<h3 id=\"basics\">Basics</h3>", "", "**_`commitlog`_** come with 2 basic functionalities", "", "- Generating commits as changelogs in markdown", "- Managing your version and tags", "", "Both the above are available as sub commands and we'll go through each one by", "one.", "", "Just running `commitlog` no longer works as it did in v1", " you'll need to specify", "a sub command to get it working.", "", "This has been done to keep it simpler to keep arbitrary behaviour to a minimum", "", "<h4 id=\"generate\">generate</h3>", "", "The first one is `generate` and in most cases you'll just be using this to", "handle generation of commits as a list of markdown notes", "", "Here's an example of what it'll look like to run the `generate` sub-command", "", "```sh", "$ commitlog generate", "# or ", "$ commitlog g", "```", "", "**Output**:", "", "```md", "## All Changes", "87ce3fc76b252908cdd81f9537713f8d67813652 chore: v2.0.0-beta.0", "", "09fc85c0d1d52d770bbbf39ac45907103a53d354 refactor: swap go-git for push with exec", "", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "909fd032facdeb4fb7633a4fad82dced28e8de83 chore: swap debugging logger with stderr printer", "<!-- .... more commits till the end of tag -->", "```", "", "The behaviour of the `generate` command is like so", "", "- go through all commits from the current `HEAD` (commit with the `HEAD`", "  reference) till the last commit or the most recent tagged commit.", "- the other case is where if the latest commit is also a tagged commit", " it'll", "  still go till the most recent tagged commit.", "", "  eg: v0.0.2 -> HEAD", " v0.0.1 -> SOMEHASH", " would give you the commits between", "  both the tags.", "", "The default behaviour of **_commitlog_** is to print to the stdout of your", "terminal which might not be what you wish to do.", "", "So", " if you wish to ever write to a file ", " you can use the `--out FILE` flag to", "write the output to a file instead.", "", "```sh", "$ commitlog g -o ./CHANGELOG.md", "```", "", "> **Note**: commitlog will overwrite the file with the new output", " make sure you", "> create a backup of the file when working with this.", "", "> **Note**: In coming versions an append mode will be added to the CLI to avoid", "> having to deal with this manually", "", "<h4 id=\"release\">release</h3>", "", "The `release` sub-command is a complimentary sub-command added to commitlog to", "help you with managing release versions. I understand that most languages have", "their own package version management and you might want to work with them but", "that's also why the `release` sub-command isn't something you need", " it's there", "for cases where you might wanna use it.", "", "My primary usecase is when working with repositories that work with multiple", "languages and I'd prefer a unified version.", "", "The `release` command doesn't modify your source code files but instead handles", "the version with it's own file named `.commitlog.release`", " which just holds the", "**version** number right now and while this does have the X.X.X format (semantic", "versioning format) the increments or how you handle them doesn't have to be.", "", "The command is flexible enough for you to combine and create your own way of", "versioning.", "", "##### Initialize", "", "```sh", "$ commitlog release --init", "# or ", "$ commitlog r --init", "```", "", "Once initialized", " you'll see a `.commitlog.release` file in your repo with the", "version `v0.0.0` to start with.", "", "##### Increments", "", "Post that you can use the remaining flags to help you incrementing the version", "as needed.", "", "```sh", "$ commitlog r --major # change to v1.0.0", "$ commitlog r --minor # change to v0.1.0", "$ commitlog r --patch # change to v0.0.1", "$ commitlog r --pre # change to v0.0.0-beta.0", "$ commitlog r --pre --pre-tag=\"dev\" # change to v0.0.0-dev.0", "", "# or go bonkers ", "$ commitlog r --patch --pre --pre-tag=\"dev\" # change to v0.0.1-dev.0", "$ commitlog r --major --patch --pre --pre-tag=\"dev\" # change to v1.0.1-dev.0", "```", "", "#### Git actions", "", "Most times you'd also want a tool like this to create commits and tags for you", "which is fair", " so `release` does come with a few git actions.", "", "- `--commit` (will create a commit and tag it for you)", "- `--push` (will push the commits and tags for you)", "", "The whole command would look a little something like this", "", "```sh", "$ commitlog r --patch --commit --push", "```", "", "<h3 id=\"advanced\">Advanced</h3>", "", "These are not really hard to guess or achieve but are in the advanced section as", "this isn't something a beginner user might need to mess with. If you have other", "use cases that you feel like should be added here", " raise a issue.", "", "<h4 id=\"selective-log-ranges\">Selective Log Ranges</h4>", "There's enough cases where the entire history between the tags makes no sense. You might just want a specific set of commits and this is very easy to do with commitlog", "", "```sh", "$ commitlog g --start HEAD --end HEAD~3 ", "# would return the last 3 commits", "```", "", "And as you might have understood", " commitlog does work with git's revision system", "so you can reuse git's own revision pointers as needed. Though it's mostly", "easier to just use the HASH since", " finding the hashes in `git log` is easier", "than finding the number you have to type after the `HEAD~`", "", "<h4 id=\"from-a-different-repo\">From a different repo</h4>", "A lot more often you might need to generate logs for a sub-repo when working with a huge multirepo folder which a lot of sub-modules and switching worktree for the changelog might not be something you wish to do.", "", "In cases like these the `-p` or `--path` flag can be used with the `generate`", "flag", "", "```sh", "$ commitlog g -p ./sub/module -s HEAD~3 ", "# would return the commits from HEAD~3 to the next tag or end of all commits.", "```", "", "<h4 id=\"categorize\">Categorize</h4>", "You wouldn't be using commitlog otherwise so this obviously has to exist.", "", "As for why is this turned off by default? I just don't use commit standards and", "mostly just need the commits between tags and very rarely need the categories to", "help me but doesn't change the fact that someone else might need it.", "", "So", " how does commitlog categorize? using regex's ", " or more like comma seperated", "regex's.", "", "The implementation approach might bring some issue but I'm going to wait for", "them instead of over fixing something that might never really happen.", "", "Anyway", " a simple example for a non-scoped commitlint styled categorization would", "look something like this .", "", "```sh", "$ commitlog g --categories=\"feat:", "fix:\"", "```", "", "**Output:**", "", "```md", "## feat:", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## fix:", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "```", "", "This could be made a little more neater using a better regex like so", "", "```sh", "$ commitlog g --categories=\"^feat", "^fix\"", "```", "", "**Output**:", "", "```md", "## ^feat", "e0ce9c693c554158b7b4841b799524164d9c3e83 feat(releaser): add init and pre-tag handlers", "", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## ^fix", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "540bb3d7419aab314fdb999dd57eeac3c53f5fad fix doc generation", "", "87d40ddbd463ad71b3af8b7edb8ac8176ecbf2f5 fix tests for new param", "```", "", "As visible", " you find more commits in the 2nd one since the regex matches more", "cases and gives you more information. You are free to modify these to make them", "work with other patterns that you might follow.", "", "Also the titles are going to be the regex's you pass. A future version will add", "a way for you to add label's to the regex though that's a little harder to", "achieve without making the flags very verbose so I've avoided it for now.", "", "> **Note**: This is the initial implementation of this and might change in a", "> future major version since this flag feels a little more frictional than the", "> other approaches I have in mind. Feel free to recommend other ways to do this.", "", "<h3 id=\"cli\">CLI</h3>", "", "This is the entire CLI reference", " which you can also access by using the `-h`", "flag on the downloaded binary.", "", "**`commitlog -h`**", "", "```", "NAME:", "   commitlog - commits to changelogs", "", "USAGE:", "   commitlog [global options] command [command options] [arguments...]", "", "COMMANDS:", "   generate", " g  commits to changelogs", "   release", " r   manage .commitlog.release version", "   help", " h      Shows a list of commands or help for one command", "", "GLOBAL OPTIONS:", "   --help", " -h  show help (default: false)", "```", "", "---", "", "**`commitlog g -h`**", "", "```", "NAME:", "   commitlog generate - commits to changelogs", "", "USAGE:", "   commitlog generate [command options] [arguments...]", "", "OPTIONS:", "   --categories value       categories to use", " includes all commits by default. any text you add here will be used to create categories out of the commits", "   --end END", " -e END        END reference for the commit to stop including commits at.This is exclusive of the given commit reference", "   --out FILE", " -o FILE      path to the output FILE", "   --path PATH", " -p PATH     root with the '.git' folder PATH (default: \".\")", "   --promo                  add promo text to the end of output (default: false)", "   --start START", " -s START  START reference for the commit to include commits from", "This is inclusive of the given commit reference", "   --stdio                  print to the stdout (default: true)", "```", "", "---", "", "**`commitlog r -h`**", "", "```", "NAME:", "   commitlog release - manage .commitlog.release version", "", "USAGE:", "   commitlog release [command options] [arguments...]", "", "OPTIONS:", "   --commit              if true will create a commit and tag", " of the changed version (default: false)", "   --init                initialise commitlog release (default: false)", "   --major               create a major version (default: false)", "   --minor               create a minor version (default: false)", "   --patch               create a patch version (default: false)", "   --path PATH", " -p PATH  PATH to a folder where .commitlog.release exists or is to be created.(note: do not use `--commit` or `--push` if the file isn't in the root) (default: \".\")", "   --pre                 create a pre-release version. will default to patch increment unlessspecified and not already a pre-release (default: false)", "   --pre-tag value       create a pre-release version (default: \"beta\")", "   --push                if true will create push the created release commit + tag on origin (default: false)", "```", ""]}]
\ No newline at end of file
+[{"title": "docs/download.md", "slug": "download.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | downloads", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Downloads", "", "[darwin-amd64.tgz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/darwin-amd64.tgz)    ", "[darwin-arm64.tgz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/darwin-arm64.tgz)    ", "[linux-amd64.tgz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/linux-amd64.tgz)    ", "[linux-arm.tgz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/linux-arm.tgz)    ", "[linux-arm64.tgz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/linux-arm64.tgz)    ", "[windows-386.tgz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/windows-386.tgz)    ", "[windows-amd64.tgz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/windows-amd64.tgz)    ", ""]}, {"title": "docs/api.md", "slug": "api.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# API", "", "### General Guide", "", "commitlog also comes as a pkg that you could reuse to modify the behaviour of", "the commands and this is very limited at the moment since I'm still working on", "the best way to get plugins to work with the original CLI instead of having to", "write your own version of commitlog.", "", "The pkg contains the 2 base command's creators and behaviour modifiers", " or more", "commonly known as the golang options pattern.", "", "Briefly put", " You have one function that takes in unlimited amount of functions", "as parameter with each of these parameter functions being able to modify the", "behaviour of the returned instance.", "", "Easy way to explain this is with an example of the `releaser` API", "", "```go", "package main", "", "import (", "", "\"log\"", "", "", "\"github.com/barelyhuman/commitlog/pkg\"", ")", "", "func main() {", "", "versionString := \"v0.0.1\"", "", "releaser", " _ := pkg.CreateNewReleaser(", "", "", "versionString", "", "", "", "pkg.WithMajorIncrement()", "", "", ")", "", "", "log.Println(releaser.String())", "", "}", "```", "", "here the `pkg.CreateNewReleaser` takes in one mandatory value which is the", "`versionString` and the 2nd parameter is optional here.", "", "Though", " since we wish for the releaser to have a custom behaviour everytime the", "flags change", " instead of writing entire functionalities inside various releaser", "functions", " which would look like so", "", "```go", "releaser.IncrementMajor()", "releaser.IncrementMinor()", "```", "", "I'd be unable to expose the builders / option functions out to the public for", "them to write custom behaviours that work directly with the `struct` being used", "by commitlog itself and instead you'd be writing wrappers around existing", "functions. Thus", " adding another layer of abstraction which isn't needed for", "something that wants to be extended.", "", "This approach gives me the ability to expose a selected few properties for you", "to modify while writing your own builder/option function.", "", "The only pointer functions that releaser has is the one's that'll help with", "printing or identifying the final version's state.", "", "Since", " you now know how the API is written", " the go doc for this module should be", "able to help you with the remaining.", "", "[godoc&nearr;](https://pkg.go.dev/github.com/barelyhuman/commitlog)", "", "> **Note**: if the go doc still hasn't been generated for v2.0.0", " please go", "> through the source code to help you with the implementation details", ""]}, {"title": "docs/index.md", "slug": "index.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Index", "", "- [Source](https://github.com/barelyhuman/commitlog)", "- [Quick Start](#quick-start)", "- [About](#about)", "  - [Philosophy](#philosophy)", "  - [Installation](#installation)", "- [Manual](/commitlog/manual)", "- [License](#license)", "", "<h4 id=\"quick-start\">Quick Start</h4>", "", "For the one's who already know the tool and wanna get started quickly.", "", "You can get the CLI in the following ways", "", "1. You can get the binaries from the [download section](/commitlog/download)", "", "2. Using `go get`", "", "```sh", "go get -u github.com/barelyhuman/commitlog", "```", "", "3. Using goblin", "", "```sh", "curl -sf https://goblin.run/github.com/barelyhuman/commitlog | sh", "```", "", "Once installed you can just run `commitlog generate` or the shorter version", "`commitlog g` to get all the changes between the recent tags.", "", "<h4 id=\"about\">About</h4>", "", "<h5 id=\"philosophy\">Philosophy</h5>", "", "**_commitlog_** simply exists because I wasn't able to find a decent enough tool", "to do this without being bound to a specific programming language and it's", "toolset. The closes one to this is the `git`'s own `shortlog` and `log` commands", "", "- **Language Agnostic** - No one needs the entire programming toolset or the", "  language to be setup on the system to be able to just generate logs", "", "- **Decently Sized** - Not everyone has a powerful system and CI systems are", "  still very limited in terms of resources since they give you shared spaces and", "  automating generating this is a common practice so it doesn't make sense for", "  it to install a runtime worth 100MB to run it.", "", "  The binary itself is around 10-13MB which is fairly big for a tool like this", "  but this is due to go's nature of embedding the platform runtime with the", "  binary and this might not be ideal for some and so there's another similar", "  smaller scoped version [nimclog](https://github.com/barelyhuman/nimclog) which", "  is in KB's", "", "- **Flexible** - There are no set standards for how you write commit messages.", "  Commitlint is a good standard and pretty widely used and also what commitlog", "  v1 used as the base for categorizing.", "", "  V2 however", " doesn't have a set commit category standard", " it accepts regex's", "  that you will categorize your commits for you.", "", "  This is more for experienced developers who have a their own pattern of", "  writing commits and would like a tool that'd work with their pattern instead", "  of creating friction", "", "- **Extensible** - The entire thing is open source and MIT licenses", "", "  specifically for you to be able to fix and add things as needed. Each command", "  has been kept away from the domain logic to be able to use `commitlog` even as", "  a library and build your own tool if you wish to", " though if there's something", "  you wish the CLI supported", " you are free to open issues and I really like", "  people helping with the development since that helps keeping the tool alive", "  longer.", "", "<h5 id=\"installation\">Installation</h5>", "", "The installation is pretty straightforwad. You [download](/commitlog/download) the binary", "from the download section of this website or use something like", "[goblin](https://goblin.run) to build the binary for your specific", "system (rarely needed) since the releases actually accommodate the most used", "operating systems and architectures already.", "", "**Linux/Mac (Unix Systems)**", "", "Once downloaded", " you can use the `install` command on *nix systems to link the", "binary to a location that's already in your PATH variable.", "", "eg:", "", "```bash", "# install commitlog from current directory to the /usr/local/bin directory", "install $(pwd)/commitlog /usr/local/bin", "```", "", "This should give you the ability to use the `commitlog` command anywhere in your", "system", "", "**Windows**", "", "Similar to the linux setup", " you can download the `.exe` file and add it to a", "location that your environment path already has. An easier thing to do is to", "store the entire thing in your secondary partition and add that location to your", "PATH. You can use this resource from Java docs to help you with modifying the", "PATH variables", "", "- [Modifying PATH in Windows](https://www.java.com/en/download/help/path.html)", "", "<h4 id=\"manual\">Manual</h4>", "", "[Read Manual &rarr;](/commitlog/manual)", "", "<h4 id=\"license\">License</h4>", "", "commitlog is MIT Licensed and you can read the entire license in the", "[source code](https://github.com/barelyhuman/commitlog)", ""]}, {"title": "docs/manual.md", "slug": "manual.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# Manual", "", "- [Basics](#basics)", "  - [generate](#generate)", "  - [release](#release)", "- [Advanced](#advanced)", "  - [Selective Log Ranges](#selective-log-ranges)", "  - [From a different repo](#from-a-different-repo)", "  - [Categorize](#categorize)", "- [CLI](#cli)", "- [API](/commitlog/api)", "", "<h3 id=\"basics\">Basics</h3>", "", "**_`commitlog`_** come with 2 basic functionalities", "", "- Generating commits as changelogs in markdown", "- Managing your version and tags", "", "Both the above are available as sub commands and we'll go through each one by", "one.", "", "Just running `commitlog` no longer works as it did in v1", " you'll need to specify", "a sub command to get it working.", "", "This has been done to keep it simpler to keep arbitrary behaviour to a minimum", "", "<h4 id=\"generate\">generate</h3>", "", "The first one is `generate` and in most cases you'll just be using this to", "handle generation of commits as a list of markdown notes", "", "Here's an example of what it'll look like to run the `generate` sub-command", "", "```sh", "$ commitlog generate", "# or ", "$ commitlog g", "```", "", "**Output**:", "", "```md", "## All Changes", "87ce3fc76b252908cdd81f9537713f8d67813652 chore: v2.0.0-beta.0", "", "09fc85c0d1d52d770bbbf39ac45907103a53d354 refactor: swap go-git for push with exec", "", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "909fd032facdeb4fb7633a4fad82dced28e8de83 chore: swap debugging logger with stderr printer", "<!-- .... more commits till the end of tag -->", "```", "", "The behaviour of the `generate` command is like so", "", "- go through all commits from the current `HEAD` (commit with the `HEAD`", "  reference) till the last commit or the most recent tagged commit.", "- the other case is where if the latest commit is also a tagged commit", " it'll", "  still go till the most recent tagged commit.", "", "  eg: v0.0.2 -> HEAD", " v0.0.1 -> SOMEHASH", " would give you the commits between", "  both the tags.", "", "The default behaviour of **_commitlog_** is to print to the stdout of your", "terminal which might not be what you wish to do.", "", "So", " if you wish to ever write to a file ", " you can use the `--out FILE` flag to", "write the output to a file instead.", "", "```sh", "$ commitlog g -o ./CHANGELOG.md", "```", "", "> **Note**: commitlog will overwrite the file with the new output", " make sure you", "> create a backup of the file when working with this.", "", "> **Note**: In coming versions an append mode will be added to the CLI to avoid", "> having to deal with this manually", "", "<h4 id=\"release\">release</h3>", "", "The `release` sub-command is a complimentary sub-command added to commitlog to", "help you with managing release versions. I understand that most languages have", "their own package version management and you might want to work with them but", "that's also why the `release` sub-command isn't something you need", " it's there", "for cases where you might wanna use it.", "", "My primary usecase is when working with repositories that work with multiple", "languages and I'd prefer a unified version.", "", "The `release` command doesn't modify your source code files but instead handles", "the version with it's own file named `.commitlog.release`", " which just holds the", "**version** number right now and while this does have the X.X.X format (semantic", "versioning format) the increments or how you handle them doesn't have to be.", "", "The command is flexible enough for you to combine and create your own way of", "versioning.", "", "##### Initialize", "", "```sh", "$ commitlog release --init", "# or ", "$ commitlog r --init", "```", "", "Once initialized", " you'll see a `.commitlog.release` file in your repo with the", "version `v0.0.0` to start with.", "", "##### Increments", "", "Post that you can use the remaining flags to help you incrementing the version", "as needed.", "", "```sh", "$ commitlog r --major # change to v1.0.0", "$ commitlog r --minor # change to v0.1.0", "$ commitlog r --patch # change to v0.0.1", "$ commitlog r --pre # change to v0.0.0-beta.0", "$ commitlog r --pre --pre-tag=\"dev\" # change to v0.0.0-dev.0", "", "# or go bonkers ", "$ commitlog r --patch --pre --pre-tag=\"dev\" # change to v0.0.1-dev.0", "$ commitlog r --major --patch --pre --pre-tag=\"dev\" # change to v1.0.1-dev.0", "```", "", "#### Git actions", "", "Most times you'd also want a tool like this to create commits and tags for you", "which is fair", " so `release` does come with a few git actions.", "", "- `--commit` (will create a commit and tag it for you)", "- `--push` (will push the commits and tags for you)", "", "The whole command would look a little something like this", "", "```sh", "$ commitlog r --patch --commit --push", "```", "", "<h3 id=\"advanced\">Advanced</h3>", "", "These are not really hard to guess or achieve but are in the advanced section as", "this isn't something a beginner user might need to mess with. If you have other", "use cases that you feel like should be added here", " raise a issue.", "", "<h4 id=\"selective-log-ranges\">Selective Log Ranges</h4>", "There's enough cases where the entire history between the tags makes no sense. You might just want a specific set of commits and this is very easy to do with commitlog", "", "```sh", "$ commitlog g --start HEAD --end HEAD~3 ", "# would return the last 3 commits", "```", "", "And as you might have understood", " commitlog does work with git's revision system", "so you can reuse git's own revision pointers as needed. Though it's mostly", "easier to just use the HASH since", " finding the hashes in `git log` is easier", "than finding the number you have to type after the `HEAD~`", "", "<h4 id=\"from-a-different-repo\">From a different repo</h4>", "A lot more often you might need to generate logs for a sub-repo when working with a huge multirepo folder which a lot of sub-modules and switching worktree for the changelog might not be something you wish to do.", "", "In cases like these the `-p` or `--path` flag can be used with the `generate`", "flag", "", "```sh", "$ commitlog g -p ./sub/module -s HEAD~3 ", "# would return the commits from HEAD~3 to the next tag or end of all commits.", "```", "", "<h4 id=\"categorize\">Categorize</h4>", "You wouldn't be using commitlog otherwise so this obviously has to exist.", "", "As for why is this turned off by default? I just don't use commit standards and", "mostly just need the commits between tags and very rarely need the categories to", "help me but doesn't change the fact that someone else might need it.", "", "So", " how does commitlog categorize? using regex's ", " or more like comma seperated", "regex's.", "", "The implementation approach might bring some issue but I'm going to wait for", "them instead of over fixing something that might never really happen.", "", "Anyway", " a simple example for a non-scoped commitlint styled categorization would", "look something like this .", "", "```sh", "$ commitlog g --categories=\"feat:", "fix:\"", "```", "", "**Output:**", "", "```md", "## feat:", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## fix:", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "```", "", "This could be made a little more neater using a better regex like so", "", "```sh", "$ commitlog g --categories=\"^feat", "^fix\"", "```", "", "**Output**:", "", "```md", "## ^feat", "e0ce9c693c554158b7b4841b799524164d9c3e83 feat(releaser): add init and pre-tag handlers", "", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## ^fix", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "540bb3d7419aab314fdb999dd57eeac3c53f5fad fix doc generation", "", "87d40ddbd463ad71b3af8b7edb8ac8176ecbf2f5 fix tests for new param", "```", "", "As visible", " you find more commits in the 2nd one since the regex matches more", "cases and gives you more information. You are free to modify these to make them", "work with other patterns that you might follow.", "", "Also the titles are going to be the regex's you pass. A future version will add", "a way for you to add label's to the regex though that's a little harder to", "achieve without making the flags very verbose so I've avoided it for now.", "", "> **Note**: This is the initial implementation of this and might change in a", "> future major version since this flag feels a little more frictional than the", "> other approaches I have in mind. Feel free to recommend other ways to do this.", "", "<h3 id=\"cli\">CLI</h3>", "", "This is the entire CLI reference", " which you can also access by using the `-h`", "flag on the downloaded binary.", "", "**`commitlog -h`**", "", "```", "NAME:", "   commitlog - commits to changelogs", "", "USAGE:", "   commitlog [global options] command [command options] [arguments...]", "", "COMMANDS:", "   generate", " g  commits to changelogs", "   release", " r   manage .commitlog.release version", "   help", " h      Shows a list of commands or help for one command", "", "GLOBAL OPTIONS:", "   --help", " -h  show help (default: false)", "```", "", "---", "", "**`commitlog g -h`**", "", "```", "NAME:", "   commitlog generate - commits to changelogs", "", "USAGE:", "   commitlog generate [command options] [arguments...]", "", "OPTIONS:", "   --categories value       categories to use", " includes all commits by default. any text you add here will be used to create categories out of the commits", "   --end END", " -e END        END reference for the commit to stop including commits at.This is exclusive of the given commit reference", "   --out FILE", " -o FILE      path to the output FILE", "   --path PATH", " -p PATH     root with the '.git' folder PATH (default: \".\")", "   --promo                  add promo text to the end of output (default: false)", "   --start START", " -s START  START reference for the commit to include commits from", "This is inclusive of the given commit reference", "   --stdio                  print to the stdout (default: true)", "```", "", "---", "", "**`commitlog r -h`**", "", "```", "NAME:", "   commitlog release - manage .commitlog.release version", "", "USAGE:", "   commitlog release [command options] [arguments...]", "", "OPTIONS:", "   --commit              if true will create a commit and tag", " of the changed version (default: false)", "   --init                initialise commitlog release (default: false)", "   --major               create a major version (default: false)", "   --minor               create a minor version (default: false)", "   --patch               create a patch version (default: false)", "   --path PATH", " -p PATH  PATH to a folder where .commitlog.release exists or is to be created.(note: do not use `--commit` or `--push` if the file isn't in the root) (default: \".\")", "   --pre                 create a pre-release version. will default to patch increment unlessspecified and not already a pre-release (default: false)", "   --pre-tag value       create a pre-release version (default: \"beta\")", "   --push                if true will create push the created release commit + tag on origin (default: false)", "```", ""]}]
\ No newline at end of file

From ab7b39152f9aa8fa6ba6ef2e5dc291394a9b0926 Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Wed, 30 Aug 2023 18:09:40 +0000
Subject: [PATCH 24/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@18ffe2fe61b71fb8574cbb259a701722c5e88aaa=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 download.html | 21 ++++++++++++++-------
 search.json   |  2 +-
 2 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/download.html b/download.html
index 215d1b5..66dbd9b 100644
--- a/download.html
+++ b/download.html
@@ -7,11 +7,18 @@
 <h3><a href="/commitlog/">commitlog</a></h3>
 <p><a href="/commitlog/">Home</a> <a href="/commitlog/manual">Manual</a> <a href="/commitlog/download">Download</a> <a href="/commitlog/api">API</a></p>
 <h4>Downloads</h4>
-<p><a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/darwin-amd64.tgz">darwin-amd64.tgz</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/darwin-arm64.tgz">darwin-arm64.tgz</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/linux-amd64.tgz">linux-amd64.tgz</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/linux-arm.tgz">linux-arm.tgz</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/linux-arm64.tgz">linux-arm64.tgz</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/windows-386.tgz">windows-386.tgz</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/windows-amd64.tgz">windows-amd64.tgz</a></p>
+<p><a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz">commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz.md5">commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz.md5</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz">commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz.md5">commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz.md5</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-386.tar.gz">commitlog-v2.0.6-beta.0-linux-386.tar.gz</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-386.tar.gz.md5">commitlog-v2.0.6-beta.0-linux-386.tar.gz.md5</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-amd64.tar.gz">commitlog-v2.0.6-beta.0-linux-amd64.tar.gz</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-amd64.tar.gz.md5">commitlog-v2.0.6-beta.0-linux-amd64.tar.gz.md5</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-arm64.tar.gz">commitlog-v2.0.6-beta.0-linux-arm64.tar.gz</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-arm64.tar.gz.md5">commitlog-v2.0.6-beta.0-linux-arm64.tar.gz.md5</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-386.zip">commitlog-v2.0.6-beta.0-windows-386.zip</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-386.zip.md5">commitlog-v2.0.6-beta.0-windows-386.zip.md5</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-amd64.zip">commitlog-v2.0.6-beta.0-windows-amd64.zip</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-amd64.zip.md5">commitlog-v2.0.6-beta.0-windows-amd64.zip.md5</a></p>
 </section></div><script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script><script>hljs.highlightAll()</script><script src="mudkip.js"></script></body></html>
\ No newline at end of file
diff --git a/search.json b/search.json
index 3d7d3df..7799da5 100644
--- a/search.json
+++ b/search.json
@@ -1 +1 @@
-[{"title": "docs/download.md", "slug": "download.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | downloads", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Downloads", "", "[darwin-amd64.tgz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/darwin-amd64.tgz)    ", "[darwin-arm64.tgz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/darwin-arm64.tgz)    ", "[linux-amd64.tgz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/linux-amd64.tgz)    ", "[linux-arm.tgz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/linux-arm.tgz)    ", "[linux-arm64.tgz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/linux-arm64.tgz)    ", "[windows-386.tgz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/windows-386.tgz)    ", "[windows-amd64.tgz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.4/windows-amd64.tgz)    ", ""]}, {"title": "docs/api.md", "slug": "api.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# API", "", "### General Guide", "", "commitlog also comes as a pkg that you could reuse to modify the behaviour of", "the commands and this is very limited at the moment since I'm still working on", "the best way to get plugins to work with the original CLI instead of having to", "write your own version of commitlog.", "", "The pkg contains the 2 base command's creators and behaviour modifiers", " or more", "commonly known as the golang options pattern.", "", "Briefly put", " You have one function that takes in unlimited amount of functions", "as parameter with each of these parameter functions being able to modify the", "behaviour of the returned instance.", "", "Easy way to explain this is with an example of the `releaser` API", "", "```go", "package main", "", "import (", "", "\"log\"", "", "", "\"github.com/barelyhuman/commitlog/pkg\"", ")", "", "func main() {", "", "versionString := \"v0.0.1\"", "", "releaser", " _ := pkg.CreateNewReleaser(", "", "", "versionString", "", "", "", "pkg.WithMajorIncrement()", "", "", ")", "", "", "log.Println(releaser.String())", "", "}", "```", "", "here the `pkg.CreateNewReleaser` takes in one mandatory value which is the", "`versionString` and the 2nd parameter is optional here.", "", "Though", " since we wish for the releaser to have a custom behaviour everytime the", "flags change", " instead of writing entire functionalities inside various releaser", "functions", " which would look like so", "", "```go", "releaser.IncrementMajor()", "releaser.IncrementMinor()", "```", "", "I'd be unable to expose the builders / option functions out to the public for", "them to write custom behaviours that work directly with the `struct` being used", "by commitlog itself and instead you'd be writing wrappers around existing", "functions. Thus", " adding another layer of abstraction which isn't needed for", "something that wants to be extended.", "", "This approach gives me the ability to expose a selected few properties for you", "to modify while writing your own builder/option function.", "", "The only pointer functions that releaser has is the one's that'll help with", "printing or identifying the final version's state.", "", "Since", " you now know how the API is written", " the go doc for this module should be", "able to help you with the remaining.", "", "[godoc&nearr;](https://pkg.go.dev/github.com/barelyhuman/commitlog)", "", "> **Note**: if the go doc still hasn't been generated for v2.0.0", " please go", "> through the source code to help you with the implementation details", ""]}, {"title": "docs/index.md", "slug": "index.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Index", "", "- [Source](https://github.com/barelyhuman/commitlog)", "- [Quick Start](#quick-start)", "- [About](#about)", "  - [Philosophy](#philosophy)", "  - [Installation](#installation)", "- [Manual](/commitlog/manual)", "- [License](#license)", "", "<h4 id=\"quick-start\">Quick Start</h4>", "", "For the one's who already know the tool and wanna get started quickly.", "", "You can get the CLI in the following ways", "", "1. You can get the binaries from the [download section](/commitlog/download)", "", "2. Using `go get`", "", "```sh", "go get -u github.com/barelyhuman/commitlog", "```", "", "3. Using goblin", "", "```sh", "curl -sf https://goblin.run/github.com/barelyhuman/commitlog | sh", "```", "", "Once installed you can just run `commitlog generate` or the shorter version", "`commitlog g` to get all the changes between the recent tags.", "", "<h4 id=\"about\">About</h4>", "", "<h5 id=\"philosophy\">Philosophy</h5>", "", "**_commitlog_** simply exists because I wasn't able to find a decent enough tool", "to do this without being bound to a specific programming language and it's", "toolset. The closes one to this is the `git`'s own `shortlog` and `log` commands", "", "- **Language Agnostic** - No one needs the entire programming toolset or the", "  language to be setup on the system to be able to just generate logs", "", "- **Decently Sized** - Not everyone has a powerful system and CI systems are", "  still very limited in terms of resources since they give you shared spaces and", "  automating generating this is a common practice so it doesn't make sense for", "  it to install a runtime worth 100MB to run it.", "", "  The binary itself is around 10-13MB which is fairly big for a tool like this", "  but this is due to go's nature of embedding the platform runtime with the", "  binary and this might not be ideal for some and so there's another similar", "  smaller scoped version [nimclog](https://github.com/barelyhuman/nimclog) which", "  is in KB's", "", "- **Flexible** - There are no set standards for how you write commit messages.", "  Commitlint is a good standard and pretty widely used and also what commitlog", "  v1 used as the base for categorizing.", "", "  V2 however", " doesn't have a set commit category standard", " it accepts regex's", "  that you will categorize your commits for you.", "", "  This is more for experienced developers who have a their own pattern of", "  writing commits and would like a tool that'd work with their pattern instead", "  of creating friction", "", "- **Extensible** - The entire thing is open source and MIT licenses", "", "  specifically for you to be able to fix and add things as needed. Each command", "  has been kept away from the domain logic to be able to use `commitlog` even as", "  a library and build your own tool if you wish to", " though if there's something", "  you wish the CLI supported", " you are free to open issues and I really like", "  people helping with the development since that helps keeping the tool alive", "  longer.", "", "<h5 id=\"installation\">Installation</h5>", "", "The installation is pretty straightforwad. You [download](/commitlog/download) the binary", "from the download section of this website or use something like", "[goblin](https://goblin.run) to build the binary for your specific", "system (rarely needed) since the releases actually accommodate the most used", "operating systems and architectures already.", "", "**Linux/Mac (Unix Systems)**", "", "Once downloaded", " you can use the `install` command on *nix systems to link the", "binary to a location that's already in your PATH variable.", "", "eg:", "", "```bash", "# install commitlog from current directory to the /usr/local/bin directory", "install $(pwd)/commitlog /usr/local/bin", "```", "", "This should give you the ability to use the `commitlog` command anywhere in your", "system", "", "**Windows**", "", "Similar to the linux setup", " you can download the `.exe` file and add it to a", "location that your environment path already has. An easier thing to do is to", "store the entire thing in your secondary partition and add that location to your", "PATH. You can use this resource from Java docs to help you with modifying the", "PATH variables", "", "- [Modifying PATH in Windows](https://www.java.com/en/download/help/path.html)", "", "<h4 id=\"manual\">Manual</h4>", "", "[Read Manual &rarr;](/commitlog/manual)", "", "<h4 id=\"license\">License</h4>", "", "commitlog is MIT Licensed and you can read the entire license in the", "[source code](https://github.com/barelyhuman/commitlog)", ""]}, {"title": "docs/manual.md", "slug": "manual.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# Manual", "", "- [Basics](#basics)", "  - [generate](#generate)", "  - [release](#release)", "- [Advanced](#advanced)", "  - [Selective Log Ranges](#selective-log-ranges)", "  - [From a different repo](#from-a-different-repo)", "  - [Categorize](#categorize)", "- [CLI](#cli)", "- [API](/commitlog/api)", "", "<h3 id=\"basics\">Basics</h3>", "", "**_`commitlog`_** come with 2 basic functionalities", "", "- Generating commits as changelogs in markdown", "- Managing your version and tags", "", "Both the above are available as sub commands and we'll go through each one by", "one.", "", "Just running `commitlog` no longer works as it did in v1", " you'll need to specify", "a sub command to get it working.", "", "This has been done to keep it simpler to keep arbitrary behaviour to a minimum", "", "<h4 id=\"generate\">generate</h3>", "", "The first one is `generate` and in most cases you'll just be using this to", "handle generation of commits as a list of markdown notes", "", "Here's an example of what it'll look like to run the `generate` sub-command", "", "```sh", "$ commitlog generate", "# or ", "$ commitlog g", "```", "", "**Output**:", "", "```md", "## All Changes", "87ce3fc76b252908cdd81f9537713f8d67813652 chore: v2.0.0-beta.0", "", "09fc85c0d1d52d770bbbf39ac45907103a53d354 refactor: swap go-git for push with exec", "", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "909fd032facdeb4fb7633a4fad82dced28e8de83 chore: swap debugging logger with stderr printer", "<!-- .... more commits till the end of tag -->", "```", "", "The behaviour of the `generate` command is like so", "", "- go through all commits from the current `HEAD` (commit with the `HEAD`", "  reference) till the last commit or the most recent tagged commit.", "- the other case is where if the latest commit is also a tagged commit", " it'll", "  still go till the most recent tagged commit.", "", "  eg: v0.0.2 -> HEAD", " v0.0.1 -> SOMEHASH", " would give you the commits between", "  both the tags.", "", "The default behaviour of **_commitlog_** is to print to the stdout of your", "terminal which might not be what you wish to do.", "", "So", " if you wish to ever write to a file ", " you can use the `--out FILE` flag to", "write the output to a file instead.", "", "```sh", "$ commitlog g -o ./CHANGELOG.md", "```", "", "> **Note**: commitlog will overwrite the file with the new output", " make sure you", "> create a backup of the file when working with this.", "", "> **Note**: In coming versions an append mode will be added to the CLI to avoid", "> having to deal with this manually", "", "<h4 id=\"release\">release</h3>", "", "The `release` sub-command is a complimentary sub-command added to commitlog to", "help you with managing release versions. I understand that most languages have", "their own package version management and you might want to work with them but", "that's also why the `release` sub-command isn't something you need", " it's there", "for cases where you might wanna use it.", "", "My primary usecase is when working with repositories that work with multiple", "languages and I'd prefer a unified version.", "", "The `release` command doesn't modify your source code files but instead handles", "the version with it's own file named `.commitlog.release`", " which just holds the", "**version** number right now and while this does have the X.X.X format (semantic", "versioning format) the increments or how you handle them doesn't have to be.", "", "The command is flexible enough for you to combine and create your own way of", "versioning.", "", "##### Initialize", "", "```sh", "$ commitlog release --init", "# or ", "$ commitlog r --init", "```", "", "Once initialized", " you'll see a `.commitlog.release` file in your repo with the", "version `v0.0.0` to start with.", "", "##### Increments", "", "Post that you can use the remaining flags to help you incrementing the version", "as needed.", "", "```sh", "$ commitlog r --major # change to v1.0.0", "$ commitlog r --minor # change to v0.1.0", "$ commitlog r --patch # change to v0.0.1", "$ commitlog r --pre # change to v0.0.0-beta.0", "$ commitlog r --pre --pre-tag=\"dev\" # change to v0.0.0-dev.0", "", "# or go bonkers ", "$ commitlog r --patch --pre --pre-tag=\"dev\" # change to v0.0.1-dev.0", "$ commitlog r --major --patch --pre --pre-tag=\"dev\" # change to v1.0.1-dev.0", "```", "", "#### Git actions", "", "Most times you'd also want a tool like this to create commits and tags for you", "which is fair", " so `release` does come with a few git actions.", "", "- `--commit` (will create a commit and tag it for you)", "- `--push` (will push the commits and tags for you)", "", "The whole command would look a little something like this", "", "```sh", "$ commitlog r --patch --commit --push", "```", "", "<h3 id=\"advanced\">Advanced</h3>", "", "These are not really hard to guess or achieve but are in the advanced section as", "this isn't something a beginner user might need to mess with. If you have other", "use cases that you feel like should be added here", " raise a issue.", "", "<h4 id=\"selective-log-ranges\">Selective Log Ranges</h4>", "There's enough cases where the entire history between the tags makes no sense. You might just want a specific set of commits and this is very easy to do with commitlog", "", "```sh", "$ commitlog g --start HEAD --end HEAD~3 ", "# would return the last 3 commits", "```", "", "And as you might have understood", " commitlog does work with git's revision system", "so you can reuse git's own revision pointers as needed. Though it's mostly", "easier to just use the HASH since", " finding the hashes in `git log` is easier", "than finding the number you have to type after the `HEAD~`", "", "<h4 id=\"from-a-different-repo\">From a different repo</h4>", "A lot more often you might need to generate logs for a sub-repo when working with a huge multirepo folder which a lot of sub-modules and switching worktree for the changelog might not be something you wish to do.", "", "In cases like these the `-p` or `--path` flag can be used with the `generate`", "flag", "", "```sh", "$ commitlog g -p ./sub/module -s HEAD~3 ", "# would return the commits from HEAD~3 to the next tag or end of all commits.", "```", "", "<h4 id=\"categorize\">Categorize</h4>", "You wouldn't be using commitlog otherwise so this obviously has to exist.", "", "As for why is this turned off by default? I just don't use commit standards and", "mostly just need the commits between tags and very rarely need the categories to", "help me but doesn't change the fact that someone else might need it.", "", "So", " how does commitlog categorize? using regex's ", " or more like comma seperated", "regex's.", "", "The implementation approach might bring some issue but I'm going to wait for", "them instead of over fixing something that might never really happen.", "", "Anyway", " a simple example for a non-scoped commitlint styled categorization would", "look something like this .", "", "```sh", "$ commitlog g --categories=\"feat:", "fix:\"", "```", "", "**Output:**", "", "```md", "## feat:", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## fix:", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "```", "", "This could be made a little more neater using a better regex like so", "", "```sh", "$ commitlog g --categories=\"^feat", "^fix\"", "```", "", "**Output**:", "", "```md", "## ^feat", "e0ce9c693c554158b7b4841b799524164d9c3e83 feat(releaser): add init and pre-tag handlers", "", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## ^fix", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "540bb3d7419aab314fdb999dd57eeac3c53f5fad fix doc generation", "", "87d40ddbd463ad71b3af8b7edb8ac8176ecbf2f5 fix tests for new param", "```", "", "As visible", " you find more commits in the 2nd one since the regex matches more", "cases and gives you more information. You are free to modify these to make them", "work with other patterns that you might follow.", "", "Also the titles are going to be the regex's you pass. A future version will add", "a way for you to add label's to the regex though that's a little harder to", "achieve without making the flags very verbose so I've avoided it for now.", "", "> **Note**: This is the initial implementation of this and might change in a", "> future major version since this flag feels a little more frictional than the", "> other approaches I have in mind. Feel free to recommend other ways to do this.", "", "<h3 id=\"cli\">CLI</h3>", "", "This is the entire CLI reference", " which you can also access by using the `-h`", "flag on the downloaded binary.", "", "**`commitlog -h`**", "", "```", "NAME:", "   commitlog - commits to changelogs", "", "USAGE:", "   commitlog [global options] command [command options] [arguments...]", "", "COMMANDS:", "   generate", " g  commits to changelogs", "   release", " r   manage .commitlog.release version", "   help", " h      Shows a list of commands or help for one command", "", "GLOBAL OPTIONS:", "   --help", " -h  show help (default: false)", "```", "", "---", "", "**`commitlog g -h`**", "", "```", "NAME:", "   commitlog generate - commits to changelogs", "", "USAGE:", "   commitlog generate [command options] [arguments...]", "", "OPTIONS:", "   --categories value       categories to use", " includes all commits by default. any text you add here will be used to create categories out of the commits", "   --end END", " -e END        END reference for the commit to stop including commits at.This is exclusive of the given commit reference", "   --out FILE", " -o FILE      path to the output FILE", "   --path PATH", " -p PATH     root with the '.git' folder PATH (default: \".\")", "   --promo                  add promo text to the end of output (default: false)", "   --start START", " -s START  START reference for the commit to include commits from", "This is inclusive of the given commit reference", "   --stdio                  print to the stdout (default: true)", "```", "", "---", "", "**`commitlog r -h`**", "", "```", "NAME:", "   commitlog release - manage .commitlog.release version", "", "USAGE:", "   commitlog release [command options] [arguments...]", "", "OPTIONS:", "   --commit              if true will create a commit and tag", " of the changed version (default: false)", "   --init                initialise commitlog release (default: false)", "   --major               create a major version (default: false)", "   --minor               create a minor version (default: false)", "   --patch               create a patch version (default: false)", "   --path PATH", " -p PATH  PATH to a folder where .commitlog.release exists or is to be created.(note: do not use `--commit` or `--push` if the file isn't in the root) (default: \".\")", "   --pre                 create a pre-release version. will default to patch increment unlessspecified and not already a pre-release (default: false)", "   --pre-tag value       create a pre-release version (default: \"beta\")", "   --push                if true will create push the created release commit + tag on origin (default: false)", "```", ""]}]
\ No newline at end of file
+[{"title": "docs/download.md", "slug": "download.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | downloads", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Downloads", "", "[commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-386.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-386.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-386.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-386.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-amd64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-amd64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-arm64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-arm64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-windows-386.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-386.zip)    ", "[commitlog-v2.0.6-beta.0-windows-386.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-386.zip.md5)    ", "[commitlog-v2.0.6-beta.0-windows-amd64.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-amd64.zip)    ", "[commitlog-v2.0.6-beta.0-windows-amd64.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-amd64.zip.md5)    ", ""]}, {"title": "docs/api.md", "slug": "api.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# API", "", "### General Guide", "", "commitlog also comes as a pkg that you could reuse to modify the behaviour of", "the commands and this is very limited at the moment since I'm still working on", "the best way to get plugins to work with the original CLI instead of having to", "write your own version of commitlog.", "", "The pkg contains the 2 base command's creators and behaviour modifiers", " or more", "commonly known as the golang options pattern.", "", "Briefly put", " You have one function that takes in unlimited amount of functions", "as parameter with each of these parameter functions being able to modify the", "behaviour of the returned instance.", "", "Easy way to explain this is with an example of the `releaser` API", "", "```go", "package main", "", "import (", "", "\"log\"", "", "", "\"github.com/barelyhuman/commitlog/pkg\"", ")", "", "func main() {", "", "versionString := \"v0.0.1\"", "", "releaser", " _ := pkg.CreateNewReleaser(", "", "", "versionString", "", "", "", "pkg.WithMajorIncrement()", "", "", ")", "", "", "log.Println(releaser.String())", "", "}", "```", "", "here the `pkg.CreateNewReleaser` takes in one mandatory value which is the", "`versionString` and the 2nd parameter is optional here.", "", "Though", " since we wish for the releaser to have a custom behaviour everytime the", "flags change", " instead of writing entire functionalities inside various releaser", "functions", " which would look like so", "", "```go", "releaser.IncrementMajor()", "releaser.IncrementMinor()", "```", "", "I'd be unable to expose the builders / option functions out to the public for", "them to write custom behaviours that work directly with the `struct` being used", "by commitlog itself and instead you'd be writing wrappers around existing", "functions. Thus", " adding another layer of abstraction which isn't needed for", "something that wants to be extended.", "", "This approach gives me the ability to expose a selected few properties for you", "to modify while writing your own builder/option function.", "", "The only pointer functions that releaser has is the one's that'll help with", "printing or identifying the final version's state.", "", "Since", " you now know how the API is written", " the go doc for this module should be", "able to help you with the remaining.", "", "[godoc&nearr;](https://pkg.go.dev/github.com/barelyhuman/commitlog)", "", "> **Note**: if the go doc still hasn't been generated for v2.0.0", " please go", "> through the source code to help you with the implementation details", ""]}, {"title": "docs/index.md", "slug": "index.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Index", "", "- [Source](https://github.com/barelyhuman/commitlog)", "- [Quick Start](#quick-start)", "- [About](#about)", "  - [Philosophy](#philosophy)", "  - [Installation](#installation)", "- [Manual](/commitlog/manual)", "- [License](#license)", "", "<h4 id=\"quick-start\">Quick Start</h4>", "", "For the one's who already know the tool and wanna get started quickly.", "", "You can get the CLI in the following ways", "", "1. You can get the binaries from the [download section](/commitlog/download)", "", "2. Using `go get`", "", "```sh", "go get -u github.com/barelyhuman/commitlog", "```", "", "3. Using goblin", "", "```sh", "curl -sf https://goblin.run/github.com/barelyhuman/commitlog | sh", "```", "", "Once installed you can just run `commitlog generate` or the shorter version", "`commitlog g` to get all the changes between the recent tags.", "", "<h4 id=\"about\">About</h4>", "", "<h5 id=\"philosophy\">Philosophy</h5>", "", "**_commitlog_** simply exists because I wasn't able to find a decent enough tool", "to do this without being bound to a specific programming language and it's", "toolset. The closes one to this is the `git`'s own `shortlog` and `log` commands", "", "- **Language Agnostic** - No one needs the entire programming toolset or the", "  language to be setup on the system to be able to just generate logs", "", "- **Decently Sized** - Not everyone has a powerful system and CI systems are", "  still very limited in terms of resources since they give you shared spaces and", "  automating generating this is a common practice so it doesn't make sense for", "  it to install a runtime worth 100MB to run it.", "", "  The binary itself is around 10-13MB which is fairly big for a tool like this", "  but this is due to go's nature of embedding the platform runtime with the", "  binary and this might not be ideal for some and so there's another similar", "  smaller scoped version [nimclog](https://github.com/barelyhuman/nimclog) which", "  is in KB's", "", "- **Flexible** - There are no set standards for how you write commit messages.", "  Commitlint is a good standard and pretty widely used and also what commitlog", "  v1 used as the base for categorizing.", "", "  V2 however", " doesn't have a set commit category standard", " it accepts regex's", "  that you will categorize your commits for you.", "", "  This is more for experienced developers who have a their own pattern of", "  writing commits and would like a tool that'd work with their pattern instead", "  of creating friction", "", "- **Extensible** - The entire thing is open source and MIT licenses", "", "  specifically for you to be able to fix and add things as needed. Each command", "  has been kept away from the domain logic to be able to use `commitlog` even as", "  a library and build your own tool if you wish to", " though if there's something", "  you wish the CLI supported", " you are free to open issues and I really like", "  people helping with the development since that helps keeping the tool alive", "  longer.", "", "<h5 id=\"installation\">Installation</h5>", "", "The installation is pretty straightforwad. You [download](/commitlog/download) the binary", "from the download section of this website or use something like", "[goblin](https://goblin.run) to build the binary for your specific", "system (rarely needed) since the releases actually accommodate the most used", "operating systems and architectures already.", "", "**Linux/Mac (Unix Systems)**", "", "Once downloaded", " you can use the `install` command on *nix systems to link the", "binary to a location that's already in your PATH variable.", "", "eg:", "", "```bash", "# install commitlog from current directory to the /usr/local/bin directory", "install $(pwd)/commitlog /usr/local/bin", "```", "", "This should give you the ability to use the `commitlog` command anywhere in your", "system", "", "**Windows**", "", "Similar to the linux setup", " you can download the `.exe` file and add it to a", "location that your environment path already has. An easier thing to do is to", "store the entire thing in your secondary partition and add that location to your", "PATH. You can use this resource from Java docs to help you with modifying the", "PATH variables", "", "- [Modifying PATH in Windows](https://www.java.com/en/download/help/path.html)", "", "<h4 id=\"manual\">Manual</h4>", "", "[Read Manual &rarr;](/commitlog/manual)", "", "<h4 id=\"license\">License</h4>", "", "commitlog is MIT Licensed and you can read the entire license in the", "[source code](https://github.com/barelyhuman/commitlog)", ""]}, {"title": "docs/manual.md", "slug": "manual.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# Manual", "", "- [Basics](#basics)", "  - [generate](#generate)", "  - [release](#release)", "- [Advanced](#advanced)", "  - [Selective Log Ranges](#selective-log-ranges)", "  - [From a different repo](#from-a-different-repo)", "  - [Categorize](#categorize)", "- [CLI](#cli)", "- [API](/commitlog/api)", "", "<h3 id=\"basics\">Basics</h3>", "", "**_`commitlog`_** come with 2 basic functionalities", "", "- Generating commits as changelogs in markdown", "- Managing your version and tags", "", "Both the above are available as sub commands and we'll go through each one by", "one.", "", "Just running `commitlog` no longer works as it did in v1", " you'll need to specify", "a sub command to get it working.", "", "This has been done to keep it simpler to keep arbitrary behaviour to a minimum", "", "<h4 id=\"generate\">generate</h3>", "", "The first one is `generate` and in most cases you'll just be using this to", "handle generation of commits as a list of markdown notes", "", "Here's an example of what it'll look like to run the `generate` sub-command", "", "```sh", "$ commitlog generate", "# or ", "$ commitlog g", "```", "", "**Output**:", "", "```md", "## All Changes", "87ce3fc76b252908cdd81f9537713f8d67813652 chore: v2.0.0-beta.0", "", "09fc85c0d1d52d770bbbf39ac45907103a53d354 refactor: swap go-git for push with exec", "", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "909fd032facdeb4fb7633a4fad82dced28e8de83 chore: swap debugging logger with stderr printer", "<!-- .... more commits till the end of tag -->", "```", "", "The behaviour of the `generate` command is like so", "", "- go through all commits from the current `HEAD` (commit with the `HEAD`", "  reference) till the last commit or the most recent tagged commit.", "- the other case is where if the latest commit is also a tagged commit", " it'll", "  still go till the most recent tagged commit.", "", "  eg: v0.0.2 -> HEAD", " v0.0.1 -> SOMEHASH", " would give you the commits between", "  both the tags.", "", "The default behaviour of **_commitlog_** is to print to the stdout of your", "terminal which might not be what you wish to do.", "", "So", " if you wish to ever write to a file ", " you can use the `--out FILE` flag to", "write the output to a file instead.", "", "```sh", "$ commitlog g -o ./CHANGELOG.md", "```", "", "> **Note**: commitlog will overwrite the file with the new output", " make sure you", "> create a backup of the file when working with this.", "", "> **Note**: In coming versions an append mode will be added to the CLI to avoid", "> having to deal with this manually", "", "<h4 id=\"release\">release</h3>", "", "The `release` sub-command is a complimentary sub-command added to commitlog to", "help you with managing release versions. I understand that most languages have", "their own package version management and you might want to work with them but", "that's also why the `release` sub-command isn't something you need", " it's there", "for cases where you might wanna use it.", "", "My primary usecase is when working with repositories that work with multiple", "languages and I'd prefer a unified version.", "", "The `release` command doesn't modify your source code files but instead handles", "the version with it's own file named `.commitlog.release`", " which just holds the", "**version** number right now and while this does have the X.X.X format (semantic", "versioning format) the increments or how you handle them doesn't have to be.", "", "The command is flexible enough for you to combine and create your own way of", "versioning.", "", "##### Initialize", "", "```sh", "$ commitlog release --init", "# or ", "$ commitlog r --init", "```", "", "Once initialized", " you'll see a `.commitlog.release` file in your repo with the", "version `v0.0.0` to start with.", "", "##### Increments", "", "Post that you can use the remaining flags to help you incrementing the version", "as needed.", "", "```sh", "$ commitlog r --major # change to v1.0.0", "$ commitlog r --minor # change to v0.1.0", "$ commitlog r --patch # change to v0.0.1", "$ commitlog r --pre # change to v0.0.0-beta.0", "$ commitlog r --pre --pre-tag=\"dev\" # change to v0.0.0-dev.0", "", "# or go bonkers ", "$ commitlog r --patch --pre --pre-tag=\"dev\" # change to v0.0.1-dev.0", "$ commitlog r --major --patch --pre --pre-tag=\"dev\" # change to v1.0.1-dev.0", "```", "", "#### Git actions", "", "Most times you'd also want a tool like this to create commits and tags for you", "which is fair", " so `release` does come with a few git actions.", "", "- `--commit` (will create a commit and tag it for you)", "- `--push` (will push the commits and tags for you)", "", "The whole command would look a little something like this", "", "```sh", "$ commitlog r --patch --commit --push", "```", "", "<h3 id=\"advanced\">Advanced</h3>", "", "These are not really hard to guess or achieve but are in the advanced section as", "this isn't something a beginner user might need to mess with. If you have other", "use cases that you feel like should be added here", " raise a issue.", "", "<h4 id=\"selective-log-ranges\">Selective Log Ranges</h4>", "There's enough cases where the entire history between the tags makes no sense. You might just want a specific set of commits and this is very easy to do with commitlog", "", "```sh", "$ commitlog g --start HEAD --end HEAD~3 ", "# would return the last 3 commits", "```", "", "And as you might have understood", " commitlog does work with git's revision system", "so you can reuse git's own revision pointers as needed. Though it's mostly", "easier to just use the HASH since", " finding the hashes in `git log` is easier", "than finding the number you have to type after the `HEAD~`", "", "<h4 id=\"from-a-different-repo\">From a different repo</h4>", "A lot more often you might need to generate logs for a sub-repo when working with a huge multirepo folder which a lot of sub-modules and switching worktree for the changelog might not be something you wish to do.", "", "In cases like these the `-p` or `--path` flag can be used with the `generate`", "flag", "", "```sh", "$ commitlog g -p ./sub/module -s HEAD~3 ", "# would return the commits from HEAD~3 to the next tag or end of all commits.", "```", "", "<h4 id=\"categorize\">Categorize</h4>", "You wouldn't be using commitlog otherwise so this obviously has to exist.", "", "As for why is this turned off by default? I just don't use commit standards and", "mostly just need the commits between tags and very rarely need the categories to", "help me but doesn't change the fact that someone else might need it.", "", "So", " how does commitlog categorize? using regex's ", " or more like comma seperated", "regex's.", "", "The implementation approach might bring some issue but I'm going to wait for", "them instead of over fixing something that might never really happen.", "", "Anyway", " a simple example for a non-scoped commitlint styled categorization would", "look something like this .", "", "```sh", "$ commitlog g --categories=\"feat:", "fix:\"", "```", "", "**Output:**", "", "```md", "## feat:", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## fix:", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "```", "", "This could be made a little more neater using a better regex like so", "", "```sh", "$ commitlog g --categories=\"^feat", "^fix\"", "```", "", "**Output**:", "", "```md", "## ^feat", "e0ce9c693c554158b7b4841b799524164d9c3e83 feat(releaser): add init and pre-tag handlers", "", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## ^fix", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "540bb3d7419aab314fdb999dd57eeac3c53f5fad fix doc generation", "", "87d40ddbd463ad71b3af8b7edb8ac8176ecbf2f5 fix tests for new param", "```", "", "As visible", " you find more commits in the 2nd one since the regex matches more", "cases and gives you more information. You are free to modify these to make them", "work with other patterns that you might follow.", "", "Also the titles are going to be the regex's you pass. A future version will add", "a way for you to add label's to the regex though that's a little harder to", "achieve without making the flags very verbose so I've avoided it for now.", "", "> **Note**: This is the initial implementation of this and might change in a", "> future major version since this flag feels a little more frictional than the", "> other approaches I have in mind. Feel free to recommend other ways to do this.", "", "<h3 id=\"cli\">CLI</h3>", "", "This is the entire CLI reference", " which you can also access by using the `-h`", "flag on the downloaded binary.", "", "**`commitlog -h`**", "", "```", "NAME:", "   commitlog - commits to changelogs", "", "USAGE:", "   commitlog [global options] command [command options] [arguments...]", "", "COMMANDS:", "   generate", " g  commits to changelogs", "   release", " r   manage .commitlog.release version", "   help", " h      Shows a list of commands or help for one command", "", "GLOBAL OPTIONS:", "   --help", " -h  show help (default: false)", "```", "", "---", "", "**`commitlog g -h`**", "", "```", "NAME:", "   commitlog generate - commits to changelogs", "", "USAGE:", "   commitlog generate [command options] [arguments...]", "", "OPTIONS:", "   --categories value       categories to use", " includes all commits by default. any text you add here will be used to create categories out of the commits", "   --end END", " -e END        END reference for the commit to stop including commits at.This is exclusive of the given commit reference", "   --out FILE", " -o FILE      path to the output FILE", "   --path PATH", " -p PATH     root with the '.git' folder PATH (default: \".\")", "   --promo                  add promo text to the end of output (default: false)", "   --start START", " -s START  START reference for the commit to include commits from", "This is inclusive of the given commit reference", "   --stdio                  print to the stdout (default: true)", "```", "", "---", "", "**`commitlog r -h`**", "", "```", "NAME:", "   commitlog release - manage .commitlog.release version", "", "USAGE:", "   commitlog release [command options] [arguments...]", "", "OPTIONS:", "   --commit              if true will create a commit and tag", " of the changed version (default: false)", "   --init                initialise commitlog release (default: false)", "   --major               create a major version (default: false)", "   --minor               create a minor version (default: false)", "   --patch               create a patch version (default: false)", "   --path PATH", " -p PATH  PATH to a folder where .commitlog.release exists or is to be created.(note: do not use `--commit` or `--push` if the file isn't in the root) (default: \".\")", "   --pre                 create a pre-release version. will default to patch increment unlessspecified and not already a pre-release (default: false)", "   --pre-tag value       create a pre-release version (default: \"beta\")", "   --push                if true will create push the created release commit + tag on origin (default: false)", "```", ""]}]
\ No newline at end of file

From ec8db1e27290a0ca6a1bbaa95c32ff84bc5c1b7c Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Wed, 30 Aug 2023 20:55:30 +0000
Subject: [PATCH 25/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@2133a18fc157f756451f03c4fb48d91d64cdaec0=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 api.html    | 2 +-
 search.json | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/api.html b/api.html
index 76faee5..a125db5 100644
--- a/api.html
+++ b/api.html
@@ -23,7 +23,7 @@ <h3>General Guide</h3>
 import (
     &quot;log&quot;
 
-    &quot;github.com/barelyhuman/commitlog/pkg&quot;
+    &quot;github.com/barelyhuman/commitlog/v2/pkg&quot;
 )
 
 func main() {
diff --git a/search.json b/search.json
index 7799da5..1f2c87b 100644
--- a/search.json
+++ b/search.json
@@ -1 +1 @@
-[{"title": "docs/download.md", "slug": "download.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | downloads", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Downloads", "", "[commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-386.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-386.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-386.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-386.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-amd64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-amd64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-arm64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-arm64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-windows-386.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-386.zip)    ", "[commitlog-v2.0.6-beta.0-windows-386.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-386.zip.md5)    ", "[commitlog-v2.0.6-beta.0-windows-amd64.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-amd64.zip)    ", "[commitlog-v2.0.6-beta.0-windows-amd64.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-amd64.zip.md5)    ", ""]}, {"title": "docs/api.md", "slug": "api.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# API", "", "### General Guide", "", "commitlog also comes as a pkg that you could reuse to modify the behaviour of", "the commands and this is very limited at the moment since I'm still working on", "the best way to get plugins to work with the original CLI instead of having to", "write your own version of commitlog.", "", "The pkg contains the 2 base command's creators and behaviour modifiers", " or more", "commonly known as the golang options pattern.", "", "Briefly put", " You have one function that takes in unlimited amount of functions", "as parameter with each of these parameter functions being able to modify the", "behaviour of the returned instance.", "", "Easy way to explain this is with an example of the `releaser` API", "", "```go", "package main", "", "import (", "", "\"log\"", "", "", "\"github.com/barelyhuman/commitlog/pkg\"", ")", "", "func main() {", "", "versionString := \"v0.0.1\"", "", "releaser", " _ := pkg.CreateNewReleaser(", "", "", "versionString", "", "", "", "pkg.WithMajorIncrement()", "", "", ")", "", "", "log.Println(releaser.String())", "", "}", "```", "", "here the `pkg.CreateNewReleaser` takes in one mandatory value which is the", "`versionString` and the 2nd parameter is optional here.", "", "Though", " since we wish for the releaser to have a custom behaviour everytime the", "flags change", " instead of writing entire functionalities inside various releaser", "functions", " which would look like so", "", "```go", "releaser.IncrementMajor()", "releaser.IncrementMinor()", "```", "", "I'd be unable to expose the builders / option functions out to the public for", "them to write custom behaviours that work directly with the `struct` being used", "by commitlog itself and instead you'd be writing wrappers around existing", "functions. Thus", " adding another layer of abstraction which isn't needed for", "something that wants to be extended.", "", "This approach gives me the ability to expose a selected few properties for you", "to modify while writing your own builder/option function.", "", "The only pointer functions that releaser has is the one's that'll help with", "printing or identifying the final version's state.", "", "Since", " you now know how the API is written", " the go doc for this module should be", "able to help you with the remaining.", "", "[godoc&nearr;](https://pkg.go.dev/github.com/barelyhuman/commitlog)", "", "> **Note**: if the go doc still hasn't been generated for v2.0.0", " please go", "> through the source code to help you with the implementation details", ""]}, {"title": "docs/index.md", "slug": "index.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Index", "", "- [Source](https://github.com/barelyhuman/commitlog)", "- [Quick Start](#quick-start)", "- [About](#about)", "  - [Philosophy](#philosophy)", "  - [Installation](#installation)", "- [Manual](/commitlog/manual)", "- [License](#license)", "", "<h4 id=\"quick-start\">Quick Start</h4>", "", "For the one's who already know the tool and wanna get started quickly.", "", "You can get the CLI in the following ways", "", "1. You can get the binaries from the [download section](/commitlog/download)", "", "2. Using `go get`", "", "```sh", "go get -u github.com/barelyhuman/commitlog", "```", "", "3. Using goblin", "", "```sh", "curl -sf https://goblin.run/github.com/barelyhuman/commitlog | sh", "```", "", "Once installed you can just run `commitlog generate` or the shorter version", "`commitlog g` to get all the changes between the recent tags.", "", "<h4 id=\"about\">About</h4>", "", "<h5 id=\"philosophy\">Philosophy</h5>", "", "**_commitlog_** simply exists because I wasn't able to find a decent enough tool", "to do this without being bound to a specific programming language and it's", "toolset. The closes one to this is the `git`'s own `shortlog` and `log` commands", "", "- **Language Agnostic** - No one needs the entire programming toolset or the", "  language to be setup on the system to be able to just generate logs", "", "- **Decently Sized** - Not everyone has a powerful system and CI systems are", "  still very limited in terms of resources since they give you shared spaces and", "  automating generating this is a common practice so it doesn't make sense for", "  it to install a runtime worth 100MB to run it.", "", "  The binary itself is around 10-13MB which is fairly big for a tool like this", "  but this is due to go's nature of embedding the platform runtime with the", "  binary and this might not be ideal for some and so there's another similar", "  smaller scoped version [nimclog](https://github.com/barelyhuman/nimclog) which", "  is in KB's", "", "- **Flexible** - There are no set standards for how you write commit messages.", "  Commitlint is a good standard and pretty widely used and also what commitlog", "  v1 used as the base for categorizing.", "", "  V2 however", " doesn't have a set commit category standard", " it accepts regex's", "  that you will categorize your commits for you.", "", "  This is more for experienced developers who have a their own pattern of", "  writing commits and would like a tool that'd work with their pattern instead", "  of creating friction", "", "- **Extensible** - The entire thing is open source and MIT licenses", "", "  specifically for you to be able to fix and add things as needed. Each command", "  has been kept away from the domain logic to be able to use `commitlog` even as", "  a library and build your own tool if you wish to", " though if there's something", "  you wish the CLI supported", " you are free to open issues and I really like", "  people helping with the development since that helps keeping the tool alive", "  longer.", "", "<h5 id=\"installation\">Installation</h5>", "", "The installation is pretty straightforwad. You [download](/commitlog/download) the binary", "from the download section of this website or use something like", "[goblin](https://goblin.run) to build the binary for your specific", "system (rarely needed) since the releases actually accommodate the most used", "operating systems and architectures already.", "", "**Linux/Mac (Unix Systems)**", "", "Once downloaded", " you can use the `install` command on *nix systems to link the", "binary to a location that's already in your PATH variable.", "", "eg:", "", "```bash", "# install commitlog from current directory to the /usr/local/bin directory", "install $(pwd)/commitlog /usr/local/bin", "```", "", "This should give you the ability to use the `commitlog` command anywhere in your", "system", "", "**Windows**", "", "Similar to the linux setup", " you can download the `.exe` file and add it to a", "location that your environment path already has. An easier thing to do is to", "store the entire thing in your secondary partition and add that location to your", "PATH. You can use this resource from Java docs to help you with modifying the", "PATH variables", "", "- [Modifying PATH in Windows](https://www.java.com/en/download/help/path.html)", "", "<h4 id=\"manual\">Manual</h4>", "", "[Read Manual &rarr;](/commitlog/manual)", "", "<h4 id=\"license\">License</h4>", "", "commitlog is MIT Licensed and you can read the entire license in the", "[source code](https://github.com/barelyhuman/commitlog)", ""]}, {"title": "docs/manual.md", "slug": "manual.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# Manual", "", "- [Basics](#basics)", "  - [generate](#generate)", "  - [release](#release)", "- [Advanced](#advanced)", "  - [Selective Log Ranges](#selective-log-ranges)", "  - [From a different repo](#from-a-different-repo)", "  - [Categorize](#categorize)", "- [CLI](#cli)", "- [API](/commitlog/api)", "", "<h3 id=\"basics\">Basics</h3>", "", "**_`commitlog`_** come with 2 basic functionalities", "", "- Generating commits as changelogs in markdown", "- Managing your version and tags", "", "Both the above are available as sub commands and we'll go through each one by", "one.", "", "Just running `commitlog` no longer works as it did in v1", " you'll need to specify", "a sub command to get it working.", "", "This has been done to keep it simpler to keep arbitrary behaviour to a minimum", "", "<h4 id=\"generate\">generate</h3>", "", "The first one is `generate` and in most cases you'll just be using this to", "handle generation of commits as a list of markdown notes", "", "Here's an example of what it'll look like to run the `generate` sub-command", "", "```sh", "$ commitlog generate", "# or ", "$ commitlog g", "```", "", "**Output**:", "", "```md", "## All Changes", "87ce3fc76b252908cdd81f9537713f8d67813652 chore: v2.0.0-beta.0", "", "09fc85c0d1d52d770bbbf39ac45907103a53d354 refactor: swap go-git for push with exec", "", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "909fd032facdeb4fb7633a4fad82dced28e8de83 chore: swap debugging logger with stderr printer", "<!-- .... more commits till the end of tag -->", "```", "", "The behaviour of the `generate` command is like so", "", "- go through all commits from the current `HEAD` (commit with the `HEAD`", "  reference) till the last commit or the most recent tagged commit.", "- the other case is where if the latest commit is also a tagged commit", " it'll", "  still go till the most recent tagged commit.", "", "  eg: v0.0.2 -> HEAD", " v0.0.1 -> SOMEHASH", " would give you the commits between", "  both the tags.", "", "The default behaviour of **_commitlog_** is to print to the stdout of your", "terminal which might not be what you wish to do.", "", "So", " if you wish to ever write to a file ", " you can use the `--out FILE` flag to", "write the output to a file instead.", "", "```sh", "$ commitlog g -o ./CHANGELOG.md", "```", "", "> **Note**: commitlog will overwrite the file with the new output", " make sure you", "> create a backup of the file when working with this.", "", "> **Note**: In coming versions an append mode will be added to the CLI to avoid", "> having to deal with this manually", "", "<h4 id=\"release\">release</h3>", "", "The `release` sub-command is a complimentary sub-command added to commitlog to", "help you with managing release versions. I understand that most languages have", "their own package version management and you might want to work with them but", "that's also why the `release` sub-command isn't something you need", " it's there", "for cases where you might wanna use it.", "", "My primary usecase is when working with repositories that work with multiple", "languages and I'd prefer a unified version.", "", "The `release` command doesn't modify your source code files but instead handles", "the version with it's own file named `.commitlog.release`", " which just holds the", "**version** number right now and while this does have the X.X.X format (semantic", "versioning format) the increments or how you handle them doesn't have to be.", "", "The command is flexible enough for you to combine and create your own way of", "versioning.", "", "##### Initialize", "", "```sh", "$ commitlog release --init", "# or ", "$ commitlog r --init", "```", "", "Once initialized", " you'll see a `.commitlog.release` file in your repo with the", "version `v0.0.0` to start with.", "", "##### Increments", "", "Post that you can use the remaining flags to help you incrementing the version", "as needed.", "", "```sh", "$ commitlog r --major # change to v1.0.0", "$ commitlog r --minor # change to v0.1.0", "$ commitlog r --patch # change to v0.0.1", "$ commitlog r --pre # change to v0.0.0-beta.0", "$ commitlog r --pre --pre-tag=\"dev\" # change to v0.0.0-dev.0", "", "# or go bonkers ", "$ commitlog r --patch --pre --pre-tag=\"dev\" # change to v0.0.1-dev.0", "$ commitlog r --major --patch --pre --pre-tag=\"dev\" # change to v1.0.1-dev.0", "```", "", "#### Git actions", "", "Most times you'd also want a tool like this to create commits and tags for you", "which is fair", " so `release` does come with a few git actions.", "", "- `--commit` (will create a commit and tag it for you)", "- `--push` (will push the commits and tags for you)", "", "The whole command would look a little something like this", "", "```sh", "$ commitlog r --patch --commit --push", "```", "", "<h3 id=\"advanced\">Advanced</h3>", "", "These are not really hard to guess or achieve but are in the advanced section as", "this isn't something a beginner user might need to mess with. If you have other", "use cases that you feel like should be added here", " raise a issue.", "", "<h4 id=\"selective-log-ranges\">Selective Log Ranges</h4>", "There's enough cases where the entire history between the tags makes no sense. You might just want a specific set of commits and this is very easy to do with commitlog", "", "```sh", "$ commitlog g --start HEAD --end HEAD~3 ", "# would return the last 3 commits", "```", "", "And as you might have understood", " commitlog does work with git's revision system", "so you can reuse git's own revision pointers as needed. Though it's mostly", "easier to just use the HASH since", " finding the hashes in `git log` is easier", "than finding the number you have to type after the `HEAD~`", "", "<h4 id=\"from-a-different-repo\">From a different repo</h4>", "A lot more often you might need to generate logs for a sub-repo when working with a huge multirepo folder which a lot of sub-modules and switching worktree for the changelog might not be something you wish to do.", "", "In cases like these the `-p` or `--path` flag can be used with the `generate`", "flag", "", "```sh", "$ commitlog g -p ./sub/module -s HEAD~3 ", "# would return the commits from HEAD~3 to the next tag or end of all commits.", "```", "", "<h4 id=\"categorize\">Categorize</h4>", "You wouldn't be using commitlog otherwise so this obviously has to exist.", "", "As for why is this turned off by default? I just don't use commit standards and", "mostly just need the commits between tags and very rarely need the categories to", "help me but doesn't change the fact that someone else might need it.", "", "So", " how does commitlog categorize? using regex's ", " or more like comma seperated", "regex's.", "", "The implementation approach might bring some issue but I'm going to wait for", "them instead of over fixing something that might never really happen.", "", "Anyway", " a simple example for a non-scoped commitlint styled categorization would", "look something like this .", "", "```sh", "$ commitlog g --categories=\"feat:", "fix:\"", "```", "", "**Output:**", "", "```md", "## feat:", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## fix:", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "```", "", "This could be made a little more neater using a better regex like so", "", "```sh", "$ commitlog g --categories=\"^feat", "^fix\"", "```", "", "**Output**:", "", "```md", "## ^feat", "e0ce9c693c554158b7b4841b799524164d9c3e83 feat(releaser): add init and pre-tag handlers", "", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## ^fix", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "540bb3d7419aab314fdb999dd57eeac3c53f5fad fix doc generation", "", "87d40ddbd463ad71b3af8b7edb8ac8176ecbf2f5 fix tests for new param", "```", "", "As visible", " you find more commits in the 2nd one since the regex matches more", "cases and gives you more information. You are free to modify these to make them", "work with other patterns that you might follow.", "", "Also the titles are going to be the regex's you pass. A future version will add", "a way for you to add label's to the regex though that's a little harder to", "achieve without making the flags very verbose so I've avoided it for now.", "", "> **Note**: This is the initial implementation of this and might change in a", "> future major version since this flag feels a little more frictional than the", "> other approaches I have in mind. Feel free to recommend other ways to do this.", "", "<h3 id=\"cli\">CLI</h3>", "", "This is the entire CLI reference", " which you can also access by using the `-h`", "flag on the downloaded binary.", "", "**`commitlog -h`**", "", "```", "NAME:", "   commitlog - commits to changelogs", "", "USAGE:", "   commitlog [global options] command [command options] [arguments...]", "", "COMMANDS:", "   generate", " g  commits to changelogs", "   release", " r   manage .commitlog.release version", "   help", " h      Shows a list of commands or help for one command", "", "GLOBAL OPTIONS:", "   --help", " -h  show help (default: false)", "```", "", "---", "", "**`commitlog g -h`**", "", "```", "NAME:", "   commitlog generate - commits to changelogs", "", "USAGE:", "   commitlog generate [command options] [arguments...]", "", "OPTIONS:", "   --categories value       categories to use", " includes all commits by default. any text you add here will be used to create categories out of the commits", "   --end END", " -e END        END reference for the commit to stop including commits at.This is exclusive of the given commit reference", "   --out FILE", " -o FILE      path to the output FILE", "   --path PATH", " -p PATH     root with the '.git' folder PATH (default: \".\")", "   --promo                  add promo text to the end of output (default: false)", "   --start START", " -s START  START reference for the commit to include commits from", "This is inclusive of the given commit reference", "   --stdio                  print to the stdout (default: true)", "```", "", "---", "", "**`commitlog r -h`**", "", "```", "NAME:", "   commitlog release - manage .commitlog.release version", "", "USAGE:", "   commitlog release [command options] [arguments...]", "", "OPTIONS:", "   --commit              if true will create a commit and tag", " of the changed version (default: false)", "   --init                initialise commitlog release (default: false)", "   --major               create a major version (default: false)", "   --minor               create a minor version (default: false)", "   --patch               create a patch version (default: false)", "   --path PATH", " -p PATH  PATH to a folder where .commitlog.release exists or is to be created.(note: do not use `--commit` or `--push` if the file isn't in the root) (default: \".\")", "   --pre                 create a pre-release version. will default to patch increment unlessspecified and not already a pre-release (default: false)", "   --pre-tag value       create a pre-release version (default: \"beta\")", "   --push                if true will create push the created release commit + tag on origin (default: false)", "```", ""]}]
\ No newline at end of file
+[{"title": "docs/download.md", "slug": "download.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | downloads", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Downloads", "", "[commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-386.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-386.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-386.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-386.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-amd64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-amd64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-arm64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-arm64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-windows-386.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-386.zip)    ", "[commitlog-v2.0.6-beta.0-windows-386.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-386.zip.md5)    ", "[commitlog-v2.0.6-beta.0-windows-amd64.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-amd64.zip)    ", "[commitlog-v2.0.6-beta.0-windows-amd64.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-amd64.zip.md5)    ", ""]}, {"title": "docs/api.md", "slug": "api.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# API", "", "### General Guide", "", "commitlog also comes as a pkg that you could reuse to modify the behaviour of", "the commands and this is very limited at the moment since I'm still working on", "the best way to get plugins to work with the original CLI instead of having to", "write your own version of commitlog.", "", "The pkg contains the 2 base command's creators and behaviour modifiers", " or more", "commonly known as the golang options pattern.", "", "Briefly put", " You have one function that takes in unlimited amount of functions", "as parameter with each of these parameter functions being able to modify the", "behaviour of the returned instance.", "", "Easy way to explain this is with an example of the `releaser` API", "", "```go", "package main", "", "import (", "", "\"log\"", "", "", "\"github.com/barelyhuman/commitlog/v2/pkg\"", ")", "", "func main() {", "", "versionString := \"v0.0.1\"", "", "releaser", " _ := pkg.CreateNewReleaser(", "", "", "versionString", "", "", "", "pkg.WithMajorIncrement()", "", "", ")", "", "", "log.Println(releaser.String())", "", "}", "```", "", "here the `pkg.CreateNewReleaser` takes in one mandatory value which is the", "`versionString` and the 2nd parameter is optional here.", "", "Though", " since we wish for the releaser to have a custom behaviour everytime the", "flags change", " instead of writing entire functionalities inside various releaser", "functions", " which would look like so", "", "```go", "releaser.IncrementMajor()", "releaser.IncrementMinor()", "```", "", "I'd be unable to expose the builders / option functions out to the public for", "them to write custom behaviours that work directly with the `struct` being used", "by commitlog itself and instead you'd be writing wrappers around existing", "functions. Thus", " adding another layer of abstraction which isn't needed for", "something that wants to be extended.", "", "This approach gives me the ability to expose a selected few properties for you", "to modify while writing your own builder/option function.", "", "The only pointer functions that releaser has is the one's that'll help with", "printing or identifying the final version's state.", "", "Since", " you now know how the API is written", " the go doc for this module should be", "able to help you with the remaining.", "", "[godoc&nearr;](https://pkg.go.dev/github.com/barelyhuman/commitlog)", "", "> **Note**: if the go doc still hasn't been generated for v2.0.0", " please go", "> through the source code to help you with the implementation details", ""]}, {"title": "docs/index.md", "slug": "index.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Index", "", "- [Source](https://github.com/barelyhuman/commitlog)", "- [Quick Start](#quick-start)", "- [About](#about)", "  - [Philosophy](#philosophy)", "  - [Installation](#installation)", "- [Manual](/commitlog/manual)", "- [License](#license)", "", "<h4 id=\"quick-start\">Quick Start</h4>", "", "For the one's who already know the tool and wanna get started quickly.", "", "You can get the CLI in the following ways", "", "1. You can get the binaries from the [download section](/commitlog/download)", "", "2. Using `go get`", "", "```sh", "go get -u github.com/barelyhuman/commitlog", "```", "", "3. Using goblin", "", "```sh", "curl -sf https://goblin.run/github.com/barelyhuman/commitlog | sh", "```", "", "Once installed you can just run `commitlog generate` or the shorter version", "`commitlog g` to get all the changes between the recent tags.", "", "<h4 id=\"about\">About</h4>", "", "<h5 id=\"philosophy\">Philosophy</h5>", "", "**_commitlog_** simply exists because I wasn't able to find a decent enough tool", "to do this without being bound to a specific programming language and it's", "toolset. The closes one to this is the `git`'s own `shortlog` and `log` commands", "", "- **Language Agnostic** - No one needs the entire programming toolset or the", "  language to be setup on the system to be able to just generate logs", "", "- **Decently Sized** - Not everyone has a powerful system and CI systems are", "  still very limited in terms of resources since they give you shared spaces and", "  automating generating this is a common practice so it doesn't make sense for", "  it to install a runtime worth 100MB to run it.", "", "  The binary itself is around 10-13MB which is fairly big for a tool like this", "  but this is due to go's nature of embedding the platform runtime with the", "  binary and this might not be ideal for some and so there's another similar", "  smaller scoped version [nimclog](https://github.com/barelyhuman/nimclog) which", "  is in KB's", "", "- **Flexible** - There are no set standards for how you write commit messages.", "  Commitlint is a good standard and pretty widely used and also what commitlog", "  v1 used as the base for categorizing.", "", "  V2 however", " doesn't have a set commit category standard", " it accepts regex's", "  that you will categorize your commits for you.", "", "  This is more for experienced developers who have a their own pattern of", "  writing commits and would like a tool that'd work with their pattern instead", "  of creating friction", "", "- **Extensible** - The entire thing is open source and MIT licenses", "", "  specifically for you to be able to fix and add things as needed. Each command", "  has been kept away from the domain logic to be able to use `commitlog` even as", "  a library and build your own tool if you wish to", " though if there's something", "  you wish the CLI supported", " you are free to open issues and I really like", "  people helping with the development since that helps keeping the tool alive", "  longer.", "", "<h5 id=\"installation\">Installation</h5>", "", "The installation is pretty straightforwad. You [download](/commitlog/download) the binary", "from the download section of this website or use something like", "[goblin](https://goblin.run) to build the binary for your specific", "system (rarely needed) since the releases actually accommodate the most used", "operating systems and architectures already.", "", "**Linux/Mac (Unix Systems)**", "", "Once downloaded", " you can use the `install` command on *nix systems to link the", "binary to a location that's already in your PATH variable.", "", "eg:", "", "```bash", "# install commitlog from current directory to the /usr/local/bin directory", "install $(pwd)/commitlog /usr/local/bin", "```", "", "This should give you the ability to use the `commitlog` command anywhere in your", "system", "", "**Windows**", "", "Similar to the linux setup", " you can download the `.exe` file and add it to a", "location that your environment path already has. An easier thing to do is to", "store the entire thing in your secondary partition and add that location to your", "PATH. You can use this resource from Java docs to help you with modifying the", "PATH variables", "", "- [Modifying PATH in Windows](https://www.java.com/en/download/help/path.html)", "", "<h4 id=\"manual\">Manual</h4>", "", "[Read Manual &rarr;](/commitlog/manual)", "", "<h4 id=\"license\">License</h4>", "", "commitlog is MIT Licensed and you can read the entire license in the", "[source code](https://github.com/barelyhuman/commitlog)", ""]}, {"title": "docs/manual.md", "slug": "manual.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# Manual", "", "- [Basics](#basics)", "  - [generate](#generate)", "  - [release](#release)", "- [Advanced](#advanced)", "  - [Selective Log Ranges](#selective-log-ranges)", "  - [From a different repo](#from-a-different-repo)", "  - [Categorize](#categorize)", "- [CLI](#cli)", "- [API](/commitlog/api)", "", "<h3 id=\"basics\">Basics</h3>", "", "**_`commitlog`_** come with 2 basic functionalities", "", "- Generating commits as changelogs in markdown", "- Managing your version and tags", "", "Both the above are available as sub commands and we'll go through each one by", "one.", "", "Just running `commitlog` no longer works as it did in v1", " you'll need to specify", "a sub command to get it working.", "", "This has been done to keep it simpler to keep arbitrary behaviour to a minimum", "", "<h4 id=\"generate\">generate</h3>", "", "The first one is `generate` and in most cases you'll just be using this to", "handle generation of commits as a list of markdown notes", "", "Here's an example of what it'll look like to run the `generate` sub-command", "", "```sh", "$ commitlog generate", "# or ", "$ commitlog g", "```", "", "**Output**:", "", "```md", "## All Changes", "87ce3fc76b252908cdd81f9537713f8d67813652 chore: v2.0.0-beta.0", "", "09fc85c0d1d52d770bbbf39ac45907103a53d354 refactor: swap go-git for push with exec", "", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "909fd032facdeb4fb7633a4fad82dced28e8de83 chore: swap debugging logger with stderr printer", "<!-- .... more commits till the end of tag -->", "```", "", "The behaviour of the `generate` command is like so", "", "- go through all commits from the current `HEAD` (commit with the `HEAD`", "  reference) till the last commit or the most recent tagged commit.", "- the other case is where if the latest commit is also a tagged commit", " it'll", "  still go till the most recent tagged commit.", "", "  eg: v0.0.2 -> HEAD", " v0.0.1 -> SOMEHASH", " would give you the commits between", "  both the tags.", "", "The default behaviour of **_commitlog_** is to print to the stdout of your", "terminal which might not be what you wish to do.", "", "So", " if you wish to ever write to a file ", " you can use the `--out FILE` flag to", "write the output to a file instead.", "", "```sh", "$ commitlog g -o ./CHANGELOG.md", "```", "", "> **Note**: commitlog will overwrite the file with the new output", " make sure you", "> create a backup of the file when working with this.", "", "> **Note**: In coming versions an append mode will be added to the CLI to avoid", "> having to deal with this manually", "", "<h4 id=\"release\">release</h3>", "", "The `release` sub-command is a complimentary sub-command added to commitlog to", "help you with managing release versions. I understand that most languages have", "their own package version management and you might want to work with them but", "that's also why the `release` sub-command isn't something you need", " it's there", "for cases where you might wanna use it.", "", "My primary usecase is when working with repositories that work with multiple", "languages and I'd prefer a unified version.", "", "The `release` command doesn't modify your source code files but instead handles", "the version with it's own file named `.commitlog.release`", " which just holds the", "**version** number right now and while this does have the X.X.X format (semantic", "versioning format) the increments or how you handle them doesn't have to be.", "", "The command is flexible enough for you to combine and create your own way of", "versioning.", "", "##### Initialize", "", "```sh", "$ commitlog release --init", "# or ", "$ commitlog r --init", "```", "", "Once initialized", " you'll see a `.commitlog.release` file in your repo with the", "version `v0.0.0` to start with.", "", "##### Increments", "", "Post that you can use the remaining flags to help you incrementing the version", "as needed.", "", "```sh", "$ commitlog r --major # change to v1.0.0", "$ commitlog r --minor # change to v0.1.0", "$ commitlog r --patch # change to v0.0.1", "$ commitlog r --pre # change to v0.0.0-beta.0", "$ commitlog r --pre --pre-tag=\"dev\" # change to v0.0.0-dev.0", "", "# or go bonkers ", "$ commitlog r --patch --pre --pre-tag=\"dev\" # change to v0.0.1-dev.0", "$ commitlog r --major --patch --pre --pre-tag=\"dev\" # change to v1.0.1-dev.0", "```", "", "#### Git actions", "", "Most times you'd also want a tool like this to create commits and tags for you", "which is fair", " so `release` does come with a few git actions.", "", "- `--commit` (will create a commit and tag it for you)", "- `--push` (will push the commits and tags for you)", "", "The whole command would look a little something like this", "", "```sh", "$ commitlog r --patch --commit --push", "```", "", "<h3 id=\"advanced\">Advanced</h3>", "", "These are not really hard to guess or achieve but are in the advanced section as", "this isn't something a beginner user might need to mess with. If you have other", "use cases that you feel like should be added here", " raise a issue.", "", "<h4 id=\"selective-log-ranges\">Selective Log Ranges</h4>", "There's enough cases where the entire history between the tags makes no sense. You might just want a specific set of commits and this is very easy to do with commitlog", "", "```sh", "$ commitlog g --start HEAD --end HEAD~3 ", "# would return the last 3 commits", "```", "", "And as you might have understood", " commitlog does work with git's revision system", "so you can reuse git's own revision pointers as needed. Though it's mostly", "easier to just use the HASH since", " finding the hashes in `git log` is easier", "than finding the number you have to type after the `HEAD~`", "", "<h4 id=\"from-a-different-repo\">From a different repo</h4>", "A lot more often you might need to generate logs for a sub-repo when working with a huge multirepo folder which a lot of sub-modules and switching worktree for the changelog might not be something you wish to do.", "", "In cases like these the `-p` or `--path` flag can be used with the `generate`", "flag", "", "```sh", "$ commitlog g -p ./sub/module -s HEAD~3 ", "# would return the commits from HEAD~3 to the next tag or end of all commits.", "```", "", "<h4 id=\"categorize\">Categorize</h4>", "You wouldn't be using commitlog otherwise so this obviously has to exist.", "", "As for why is this turned off by default? I just don't use commit standards and", "mostly just need the commits between tags and very rarely need the categories to", "help me but doesn't change the fact that someone else might need it.", "", "So", " how does commitlog categorize? using regex's ", " or more like comma seperated", "regex's.", "", "The implementation approach might bring some issue but I'm going to wait for", "them instead of over fixing something that might never really happen.", "", "Anyway", " a simple example for a non-scoped commitlint styled categorization would", "look something like this .", "", "```sh", "$ commitlog g --categories=\"feat:", "fix:\"", "```", "", "**Output:**", "", "```md", "## feat:", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## fix:", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "```", "", "This could be made a little more neater using a better regex like so", "", "```sh", "$ commitlog g --categories=\"^feat", "^fix\"", "```", "", "**Output**:", "", "```md", "## ^feat", "e0ce9c693c554158b7b4841b799524164d9c3e83 feat(releaser): add init and pre-tag handlers", "", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## ^fix", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "540bb3d7419aab314fdb999dd57eeac3c53f5fad fix doc generation", "", "87d40ddbd463ad71b3af8b7edb8ac8176ecbf2f5 fix tests for new param", "```", "", "As visible", " you find more commits in the 2nd one since the regex matches more", "cases and gives you more information. You are free to modify these to make them", "work with other patterns that you might follow.", "", "Also the titles are going to be the regex's you pass. A future version will add", "a way for you to add label's to the regex though that's a little harder to", "achieve without making the flags very verbose so I've avoided it for now.", "", "> **Note**: This is the initial implementation of this and might change in a", "> future major version since this flag feels a little more frictional than the", "> other approaches I have in mind. Feel free to recommend other ways to do this.", "", "<h3 id=\"cli\">CLI</h3>", "", "This is the entire CLI reference", " which you can also access by using the `-h`", "flag on the downloaded binary.", "", "**`commitlog -h`**", "", "```", "NAME:", "   commitlog - commits to changelogs", "", "USAGE:", "   commitlog [global options] command [command options] [arguments...]", "", "COMMANDS:", "   generate", " g  commits to changelogs", "   release", " r   manage .commitlog.release version", "   help", " h      Shows a list of commands or help for one command", "", "GLOBAL OPTIONS:", "   --help", " -h  show help (default: false)", "```", "", "---", "", "**`commitlog g -h`**", "", "```", "NAME:", "   commitlog generate - commits to changelogs", "", "USAGE:", "   commitlog generate [command options] [arguments...]", "", "OPTIONS:", "   --categories value       categories to use", " includes all commits by default. any text you add here will be used to create categories out of the commits", "   --end END", " -e END        END reference for the commit to stop including commits at.This is exclusive of the given commit reference", "   --out FILE", " -o FILE      path to the output FILE", "   --path PATH", " -p PATH     root with the '.git' folder PATH (default: \".\")", "   --promo                  add promo text to the end of output (default: false)", "   --start START", " -s START  START reference for the commit to include commits from", "This is inclusive of the given commit reference", "   --stdio                  print to the stdout (default: true)", "```", "", "---", "", "**`commitlog r -h`**", "", "```", "NAME:", "   commitlog release - manage .commitlog.release version", "", "USAGE:", "   commitlog release [command options] [arguments...]", "", "OPTIONS:", "   --commit              if true will create a commit and tag", " of the changed version (default: false)", "   --init                initialise commitlog release (default: false)", "   --major               create a major version (default: false)", "   --minor               create a minor version (default: false)", "   --patch               create a patch version (default: false)", "   --path PATH", " -p PATH  PATH to a folder where .commitlog.release exists or is to be created.(note: do not use `--commit` or `--push` if the file isn't in the root) (default: \".\")", "   --pre                 create a pre-release version. will default to patch increment unlessspecified and not already a pre-release (default: false)", "   --pre-tag value       create a pre-release version (default: \"beta\")", "   --push                if true will create push the created release commit + tag on origin (default: false)", "```", ""]}]
\ No newline at end of file

From 5606208dd0b19ff07e4c95e0aa9b6c561bfbc1d2 Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Wed, 30 Aug 2023 21:02:08 +0000
Subject: [PATCH 26/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@48470943c32b5fdc08d9706db3bde9fa5253bdff=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 api.html    | 2 +-
 search.json | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/api.html b/api.html
index a125db5..9f341f8 100644
--- a/api.html
+++ b/api.html
@@ -23,7 +23,7 @@ <h3>General Guide</h3>
 import (
     &quot;log&quot;
 
-    &quot;github.com/barelyhuman/commitlog/v2/pkg&quot;
+    &quot;github.com/barelyhuman/commitlog/v3/pkg&quot;
 )
 
 func main() {
diff --git a/search.json b/search.json
index 1f2c87b..7d84aa8 100644
--- a/search.json
+++ b/search.json
@@ -1 +1 @@
-[{"title": "docs/download.md", "slug": "download.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | downloads", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Downloads", "", "[commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-386.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-386.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-386.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-386.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-amd64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-amd64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-arm64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-arm64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-windows-386.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-386.zip)    ", "[commitlog-v2.0.6-beta.0-windows-386.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-386.zip.md5)    ", "[commitlog-v2.0.6-beta.0-windows-amd64.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-amd64.zip)    ", "[commitlog-v2.0.6-beta.0-windows-amd64.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-amd64.zip.md5)    ", ""]}, {"title": "docs/api.md", "slug": "api.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# API", "", "### General Guide", "", "commitlog also comes as a pkg that you could reuse to modify the behaviour of", "the commands and this is very limited at the moment since I'm still working on", "the best way to get plugins to work with the original CLI instead of having to", "write your own version of commitlog.", "", "The pkg contains the 2 base command's creators and behaviour modifiers", " or more", "commonly known as the golang options pattern.", "", "Briefly put", " You have one function that takes in unlimited amount of functions", "as parameter with each of these parameter functions being able to modify the", "behaviour of the returned instance.", "", "Easy way to explain this is with an example of the `releaser` API", "", "```go", "package main", "", "import (", "", "\"log\"", "", "", "\"github.com/barelyhuman/commitlog/v2/pkg\"", ")", "", "func main() {", "", "versionString := \"v0.0.1\"", "", "releaser", " _ := pkg.CreateNewReleaser(", "", "", "versionString", "", "", "", "pkg.WithMajorIncrement()", "", "", ")", "", "", "log.Println(releaser.String())", "", "}", "```", "", "here the `pkg.CreateNewReleaser` takes in one mandatory value which is the", "`versionString` and the 2nd parameter is optional here.", "", "Though", " since we wish for the releaser to have a custom behaviour everytime the", "flags change", " instead of writing entire functionalities inside various releaser", "functions", " which would look like so", "", "```go", "releaser.IncrementMajor()", "releaser.IncrementMinor()", "```", "", "I'd be unable to expose the builders / option functions out to the public for", "them to write custom behaviours that work directly with the `struct` being used", "by commitlog itself and instead you'd be writing wrappers around existing", "functions. Thus", " adding another layer of abstraction which isn't needed for", "something that wants to be extended.", "", "This approach gives me the ability to expose a selected few properties for you", "to modify while writing your own builder/option function.", "", "The only pointer functions that releaser has is the one's that'll help with", "printing or identifying the final version's state.", "", "Since", " you now know how the API is written", " the go doc for this module should be", "able to help you with the remaining.", "", "[godoc&nearr;](https://pkg.go.dev/github.com/barelyhuman/commitlog)", "", "> **Note**: if the go doc still hasn't been generated for v2.0.0", " please go", "> through the source code to help you with the implementation details", ""]}, {"title": "docs/index.md", "slug": "index.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Index", "", "- [Source](https://github.com/barelyhuman/commitlog)", "- [Quick Start](#quick-start)", "- [About](#about)", "  - [Philosophy](#philosophy)", "  - [Installation](#installation)", "- [Manual](/commitlog/manual)", "- [License](#license)", "", "<h4 id=\"quick-start\">Quick Start</h4>", "", "For the one's who already know the tool and wanna get started quickly.", "", "You can get the CLI in the following ways", "", "1. You can get the binaries from the [download section](/commitlog/download)", "", "2. Using `go get`", "", "```sh", "go get -u github.com/barelyhuman/commitlog", "```", "", "3. Using goblin", "", "```sh", "curl -sf https://goblin.run/github.com/barelyhuman/commitlog | sh", "```", "", "Once installed you can just run `commitlog generate` or the shorter version", "`commitlog g` to get all the changes between the recent tags.", "", "<h4 id=\"about\">About</h4>", "", "<h5 id=\"philosophy\">Philosophy</h5>", "", "**_commitlog_** simply exists because I wasn't able to find a decent enough tool", "to do this without being bound to a specific programming language and it's", "toolset. The closes one to this is the `git`'s own `shortlog` and `log` commands", "", "- **Language Agnostic** - No one needs the entire programming toolset or the", "  language to be setup on the system to be able to just generate logs", "", "- **Decently Sized** - Not everyone has a powerful system and CI systems are", "  still very limited in terms of resources since they give you shared spaces and", "  automating generating this is a common practice so it doesn't make sense for", "  it to install a runtime worth 100MB to run it.", "", "  The binary itself is around 10-13MB which is fairly big for a tool like this", "  but this is due to go's nature of embedding the platform runtime with the", "  binary and this might not be ideal for some and so there's another similar", "  smaller scoped version [nimclog](https://github.com/barelyhuman/nimclog) which", "  is in KB's", "", "- **Flexible** - There are no set standards for how you write commit messages.", "  Commitlint is a good standard and pretty widely used and also what commitlog", "  v1 used as the base for categorizing.", "", "  V2 however", " doesn't have a set commit category standard", " it accepts regex's", "  that you will categorize your commits for you.", "", "  This is more for experienced developers who have a their own pattern of", "  writing commits and would like a tool that'd work with their pattern instead", "  of creating friction", "", "- **Extensible** - The entire thing is open source and MIT licenses", "", "  specifically for you to be able to fix and add things as needed. Each command", "  has been kept away from the domain logic to be able to use `commitlog` even as", "  a library and build your own tool if you wish to", " though if there's something", "  you wish the CLI supported", " you are free to open issues and I really like", "  people helping with the development since that helps keeping the tool alive", "  longer.", "", "<h5 id=\"installation\">Installation</h5>", "", "The installation is pretty straightforwad. You [download](/commitlog/download) the binary", "from the download section of this website or use something like", "[goblin](https://goblin.run) to build the binary for your specific", "system (rarely needed) since the releases actually accommodate the most used", "operating systems and architectures already.", "", "**Linux/Mac (Unix Systems)**", "", "Once downloaded", " you can use the `install` command on *nix systems to link the", "binary to a location that's already in your PATH variable.", "", "eg:", "", "```bash", "# install commitlog from current directory to the /usr/local/bin directory", "install $(pwd)/commitlog /usr/local/bin", "```", "", "This should give you the ability to use the `commitlog` command anywhere in your", "system", "", "**Windows**", "", "Similar to the linux setup", " you can download the `.exe` file and add it to a", "location that your environment path already has. An easier thing to do is to", "store the entire thing in your secondary partition and add that location to your", "PATH. You can use this resource from Java docs to help you with modifying the", "PATH variables", "", "- [Modifying PATH in Windows](https://www.java.com/en/download/help/path.html)", "", "<h4 id=\"manual\">Manual</h4>", "", "[Read Manual &rarr;](/commitlog/manual)", "", "<h4 id=\"license\">License</h4>", "", "commitlog is MIT Licensed and you can read the entire license in the", "[source code](https://github.com/barelyhuman/commitlog)", ""]}, {"title": "docs/manual.md", "slug": "manual.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# Manual", "", "- [Basics](#basics)", "  - [generate](#generate)", "  - [release](#release)", "- [Advanced](#advanced)", "  - [Selective Log Ranges](#selective-log-ranges)", "  - [From a different repo](#from-a-different-repo)", "  - [Categorize](#categorize)", "- [CLI](#cli)", "- [API](/commitlog/api)", "", "<h3 id=\"basics\">Basics</h3>", "", "**_`commitlog`_** come with 2 basic functionalities", "", "- Generating commits as changelogs in markdown", "- Managing your version and tags", "", "Both the above are available as sub commands and we'll go through each one by", "one.", "", "Just running `commitlog` no longer works as it did in v1", " you'll need to specify", "a sub command to get it working.", "", "This has been done to keep it simpler to keep arbitrary behaviour to a minimum", "", "<h4 id=\"generate\">generate</h3>", "", "The first one is `generate` and in most cases you'll just be using this to", "handle generation of commits as a list of markdown notes", "", "Here's an example of what it'll look like to run the `generate` sub-command", "", "```sh", "$ commitlog generate", "# or ", "$ commitlog g", "```", "", "**Output**:", "", "```md", "## All Changes", "87ce3fc76b252908cdd81f9537713f8d67813652 chore: v2.0.0-beta.0", "", "09fc85c0d1d52d770bbbf39ac45907103a53d354 refactor: swap go-git for push with exec", "", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "909fd032facdeb4fb7633a4fad82dced28e8de83 chore: swap debugging logger with stderr printer", "<!-- .... more commits till the end of tag -->", "```", "", "The behaviour of the `generate` command is like so", "", "- go through all commits from the current `HEAD` (commit with the `HEAD`", "  reference) till the last commit or the most recent tagged commit.", "- the other case is where if the latest commit is also a tagged commit", " it'll", "  still go till the most recent tagged commit.", "", "  eg: v0.0.2 -> HEAD", " v0.0.1 -> SOMEHASH", " would give you the commits between", "  both the tags.", "", "The default behaviour of **_commitlog_** is to print to the stdout of your", "terminal which might not be what you wish to do.", "", "So", " if you wish to ever write to a file ", " you can use the `--out FILE` flag to", "write the output to a file instead.", "", "```sh", "$ commitlog g -o ./CHANGELOG.md", "```", "", "> **Note**: commitlog will overwrite the file with the new output", " make sure you", "> create a backup of the file when working with this.", "", "> **Note**: In coming versions an append mode will be added to the CLI to avoid", "> having to deal with this manually", "", "<h4 id=\"release\">release</h3>", "", "The `release` sub-command is a complimentary sub-command added to commitlog to", "help you with managing release versions. I understand that most languages have", "their own package version management and you might want to work with them but", "that's also why the `release` sub-command isn't something you need", " it's there", "for cases where you might wanna use it.", "", "My primary usecase is when working with repositories that work with multiple", "languages and I'd prefer a unified version.", "", "The `release` command doesn't modify your source code files but instead handles", "the version with it's own file named `.commitlog.release`", " which just holds the", "**version** number right now and while this does have the X.X.X format (semantic", "versioning format) the increments or how you handle them doesn't have to be.", "", "The command is flexible enough for you to combine and create your own way of", "versioning.", "", "##### Initialize", "", "```sh", "$ commitlog release --init", "# or ", "$ commitlog r --init", "```", "", "Once initialized", " you'll see a `.commitlog.release` file in your repo with the", "version `v0.0.0` to start with.", "", "##### Increments", "", "Post that you can use the remaining flags to help you incrementing the version", "as needed.", "", "```sh", "$ commitlog r --major # change to v1.0.0", "$ commitlog r --minor # change to v0.1.0", "$ commitlog r --patch # change to v0.0.1", "$ commitlog r --pre # change to v0.0.0-beta.0", "$ commitlog r --pre --pre-tag=\"dev\" # change to v0.0.0-dev.0", "", "# or go bonkers ", "$ commitlog r --patch --pre --pre-tag=\"dev\" # change to v0.0.1-dev.0", "$ commitlog r --major --patch --pre --pre-tag=\"dev\" # change to v1.0.1-dev.0", "```", "", "#### Git actions", "", "Most times you'd also want a tool like this to create commits and tags for you", "which is fair", " so `release` does come with a few git actions.", "", "- `--commit` (will create a commit and tag it for you)", "- `--push` (will push the commits and tags for you)", "", "The whole command would look a little something like this", "", "```sh", "$ commitlog r --patch --commit --push", "```", "", "<h3 id=\"advanced\">Advanced</h3>", "", "These are not really hard to guess or achieve but are in the advanced section as", "this isn't something a beginner user might need to mess with. If you have other", "use cases that you feel like should be added here", " raise a issue.", "", "<h4 id=\"selective-log-ranges\">Selective Log Ranges</h4>", "There's enough cases where the entire history between the tags makes no sense. You might just want a specific set of commits and this is very easy to do with commitlog", "", "```sh", "$ commitlog g --start HEAD --end HEAD~3 ", "# would return the last 3 commits", "```", "", "And as you might have understood", " commitlog does work with git's revision system", "so you can reuse git's own revision pointers as needed. Though it's mostly", "easier to just use the HASH since", " finding the hashes in `git log` is easier", "than finding the number you have to type after the `HEAD~`", "", "<h4 id=\"from-a-different-repo\">From a different repo</h4>", "A lot more often you might need to generate logs for a sub-repo when working with a huge multirepo folder which a lot of sub-modules and switching worktree for the changelog might not be something you wish to do.", "", "In cases like these the `-p` or `--path` flag can be used with the `generate`", "flag", "", "```sh", "$ commitlog g -p ./sub/module -s HEAD~3 ", "# would return the commits from HEAD~3 to the next tag or end of all commits.", "```", "", "<h4 id=\"categorize\">Categorize</h4>", "You wouldn't be using commitlog otherwise so this obviously has to exist.", "", "As for why is this turned off by default? I just don't use commit standards and", "mostly just need the commits between tags and very rarely need the categories to", "help me but doesn't change the fact that someone else might need it.", "", "So", " how does commitlog categorize? using regex's ", " or more like comma seperated", "regex's.", "", "The implementation approach might bring some issue but I'm going to wait for", "them instead of over fixing something that might never really happen.", "", "Anyway", " a simple example for a non-scoped commitlint styled categorization would", "look something like this .", "", "```sh", "$ commitlog g --categories=\"feat:", "fix:\"", "```", "", "**Output:**", "", "```md", "## feat:", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## fix:", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "```", "", "This could be made a little more neater using a better regex like so", "", "```sh", "$ commitlog g --categories=\"^feat", "^fix\"", "```", "", "**Output**:", "", "```md", "## ^feat", "e0ce9c693c554158b7b4841b799524164d9c3e83 feat(releaser): add init and pre-tag handlers", "", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## ^fix", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "540bb3d7419aab314fdb999dd57eeac3c53f5fad fix doc generation", "", "87d40ddbd463ad71b3af8b7edb8ac8176ecbf2f5 fix tests for new param", "```", "", "As visible", " you find more commits in the 2nd one since the regex matches more", "cases and gives you more information. You are free to modify these to make them", "work with other patterns that you might follow.", "", "Also the titles are going to be the regex's you pass. A future version will add", "a way for you to add label's to the regex though that's a little harder to", "achieve without making the flags very verbose so I've avoided it for now.", "", "> **Note**: This is the initial implementation of this and might change in a", "> future major version since this flag feels a little more frictional than the", "> other approaches I have in mind. Feel free to recommend other ways to do this.", "", "<h3 id=\"cli\">CLI</h3>", "", "This is the entire CLI reference", " which you can also access by using the `-h`", "flag on the downloaded binary.", "", "**`commitlog -h`**", "", "```", "NAME:", "   commitlog - commits to changelogs", "", "USAGE:", "   commitlog [global options] command [command options] [arguments...]", "", "COMMANDS:", "   generate", " g  commits to changelogs", "   release", " r   manage .commitlog.release version", "   help", " h      Shows a list of commands or help for one command", "", "GLOBAL OPTIONS:", "   --help", " -h  show help (default: false)", "```", "", "---", "", "**`commitlog g -h`**", "", "```", "NAME:", "   commitlog generate - commits to changelogs", "", "USAGE:", "   commitlog generate [command options] [arguments...]", "", "OPTIONS:", "   --categories value       categories to use", " includes all commits by default. any text you add here will be used to create categories out of the commits", "   --end END", " -e END        END reference for the commit to stop including commits at.This is exclusive of the given commit reference", "   --out FILE", " -o FILE      path to the output FILE", "   --path PATH", " -p PATH     root with the '.git' folder PATH (default: \".\")", "   --promo                  add promo text to the end of output (default: false)", "   --start START", " -s START  START reference for the commit to include commits from", "This is inclusive of the given commit reference", "   --stdio                  print to the stdout (default: true)", "```", "", "---", "", "**`commitlog r -h`**", "", "```", "NAME:", "   commitlog release - manage .commitlog.release version", "", "USAGE:", "   commitlog release [command options] [arguments...]", "", "OPTIONS:", "   --commit              if true will create a commit and tag", " of the changed version (default: false)", "   --init                initialise commitlog release (default: false)", "   --major               create a major version (default: false)", "   --minor               create a minor version (default: false)", "   --patch               create a patch version (default: false)", "   --path PATH", " -p PATH  PATH to a folder where .commitlog.release exists or is to be created.(note: do not use `--commit` or `--push` if the file isn't in the root) (default: \".\")", "   --pre                 create a pre-release version. will default to patch increment unlessspecified and not already a pre-release (default: false)", "   --pre-tag value       create a pre-release version (default: \"beta\")", "   --push                if true will create push the created release commit + tag on origin (default: false)", "```", ""]}]
\ No newline at end of file
+[{"title": "docs/download.md", "slug": "download.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | downloads", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Downloads", "", "[commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-386.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-386.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-386.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-386.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-amd64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-amd64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-arm64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-arm64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-windows-386.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-386.zip)    ", "[commitlog-v2.0.6-beta.0-windows-386.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-386.zip.md5)    ", "[commitlog-v2.0.6-beta.0-windows-amd64.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-amd64.zip)    ", "[commitlog-v2.0.6-beta.0-windows-amd64.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-amd64.zip.md5)    ", ""]}, {"title": "docs/api.md", "slug": "api.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# API", "", "### General Guide", "", "commitlog also comes as a pkg that you could reuse to modify the behaviour of", "the commands and this is very limited at the moment since I'm still working on", "the best way to get plugins to work with the original CLI instead of having to", "write your own version of commitlog.", "", "The pkg contains the 2 base command's creators and behaviour modifiers", " or more", "commonly known as the golang options pattern.", "", "Briefly put", " You have one function that takes in unlimited amount of functions", "as parameter with each of these parameter functions being able to modify the", "behaviour of the returned instance.", "", "Easy way to explain this is with an example of the `releaser` API", "", "```go", "package main", "", "import (", "", "\"log\"", "", "", "\"github.com/barelyhuman/commitlog/v3/pkg\"", ")", "", "func main() {", "", "versionString := \"v0.0.1\"", "", "releaser", " _ := pkg.CreateNewReleaser(", "", "", "versionString", "", "", "", "pkg.WithMajorIncrement()", "", "", ")", "", "", "log.Println(releaser.String())", "", "}", "```", "", "here the `pkg.CreateNewReleaser` takes in one mandatory value which is the", "`versionString` and the 2nd parameter is optional here.", "", "Though", " since we wish for the releaser to have a custom behaviour everytime the", "flags change", " instead of writing entire functionalities inside various releaser", "functions", " which would look like so", "", "```go", "releaser.IncrementMajor()", "releaser.IncrementMinor()", "```", "", "I'd be unable to expose the builders / option functions out to the public for", "them to write custom behaviours that work directly with the `struct` being used", "by commitlog itself and instead you'd be writing wrappers around existing", "functions. Thus", " adding another layer of abstraction which isn't needed for", "something that wants to be extended.", "", "This approach gives me the ability to expose a selected few properties for you", "to modify while writing your own builder/option function.", "", "The only pointer functions that releaser has is the one's that'll help with", "printing or identifying the final version's state.", "", "Since", " you now know how the API is written", " the go doc for this module should be", "able to help you with the remaining.", "", "[godoc&nearr;](https://pkg.go.dev/github.com/barelyhuman/commitlog)", "", "> **Note**: if the go doc still hasn't been generated for v2.0.0", " please go", "> through the source code to help you with the implementation details", ""]}, {"title": "docs/index.md", "slug": "index.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Index", "", "- [Source](https://github.com/barelyhuman/commitlog)", "- [Quick Start](#quick-start)", "- [About](#about)", "  - [Philosophy](#philosophy)", "  - [Installation](#installation)", "- [Manual](/commitlog/manual)", "- [License](#license)", "", "<h4 id=\"quick-start\">Quick Start</h4>", "", "For the one's who already know the tool and wanna get started quickly.", "", "You can get the CLI in the following ways", "", "1. You can get the binaries from the [download section](/commitlog/download)", "", "2. Using `go get`", "", "```sh", "go get -u github.com/barelyhuman/commitlog", "```", "", "3. Using goblin", "", "```sh", "curl -sf https://goblin.run/github.com/barelyhuman/commitlog | sh", "```", "", "Once installed you can just run `commitlog generate` or the shorter version", "`commitlog g` to get all the changes between the recent tags.", "", "<h4 id=\"about\">About</h4>", "", "<h5 id=\"philosophy\">Philosophy</h5>", "", "**_commitlog_** simply exists because I wasn't able to find a decent enough tool", "to do this without being bound to a specific programming language and it's", "toolset. The closes one to this is the `git`'s own `shortlog` and `log` commands", "", "- **Language Agnostic** - No one needs the entire programming toolset or the", "  language to be setup on the system to be able to just generate logs", "", "- **Decently Sized** - Not everyone has a powerful system and CI systems are", "  still very limited in terms of resources since they give you shared spaces and", "  automating generating this is a common practice so it doesn't make sense for", "  it to install a runtime worth 100MB to run it.", "", "  The binary itself is around 10-13MB which is fairly big for a tool like this", "  but this is due to go's nature of embedding the platform runtime with the", "  binary and this might not be ideal for some and so there's another similar", "  smaller scoped version [nimclog](https://github.com/barelyhuman/nimclog) which", "  is in KB's", "", "- **Flexible** - There are no set standards for how you write commit messages.", "  Commitlint is a good standard and pretty widely used and also what commitlog", "  v1 used as the base for categorizing.", "", "  V2 however", " doesn't have a set commit category standard", " it accepts regex's", "  that you will categorize your commits for you.", "", "  This is more for experienced developers who have a their own pattern of", "  writing commits and would like a tool that'd work with their pattern instead", "  of creating friction", "", "- **Extensible** - The entire thing is open source and MIT licenses", "", "  specifically for you to be able to fix and add things as needed. Each command", "  has been kept away from the domain logic to be able to use `commitlog` even as", "  a library and build your own tool if you wish to", " though if there's something", "  you wish the CLI supported", " you are free to open issues and I really like", "  people helping with the development since that helps keeping the tool alive", "  longer.", "", "<h5 id=\"installation\">Installation</h5>", "", "The installation is pretty straightforwad. You [download](/commitlog/download) the binary", "from the download section of this website or use something like", "[goblin](https://goblin.run) to build the binary for your specific", "system (rarely needed) since the releases actually accommodate the most used", "operating systems and architectures already.", "", "**Linux/Mac (Unix Systems)**", "", "Once downloaded", " you can use the `install` command on *nix systems to link the", "binary to a location that's already in your PATH variable.", "", "eg:", "", "```bash", "# install commitlog from current directory to the /usr/local/bin directory", "install $(pwd)/commitlog /usr/local/bin", "```", "", "This should give you the ability to use the `commitlog` command anywhere in your", "system", "", "**Windows**", "", "Similar to the linux setup", " you can download the `.exe` file and add it to a", "location that your environment path already has. An easier thing to do is to", "store the entire thing in your secondary partition and add that location to your", "PATH. You can use this resource from Java docs to help you with modifying the", "PATH variables", "", "- [Modifying PATH in Windows](https://www.java.com/en/download/help/path.html)", "", "<h4 id=\"manual\">Manual</h4>", "", "[Read Manual &rarr;](/commitlog/manual)", "", "<h4 id=\"license\">License</h4>", "", "commitlog is MIT Licensed and you can read the entire license in the", "[source code](https://github.com/barelyhuman/commitlog)", ""]}, {"title": "docs/manual.md", "slug": "manual.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# Manual", "", "- [Basics](#basics)", "  - [generate](#generate)", "  - [release](#release)", "- [Advanced](#advanced)", "  - [Selective Log Ranges](#selective-log-ranges)", "  - [From a different repo](#from-a-different-repo)", "  - [Categorize](#categorize)", "- [CLI](#cli)", "- [API](/commitlog/api)", "", "<h3 id=\"basics\">Basics</h3>", "", "**_`commitlog`_** come with 2 basic functionalities", "", "- Generating commits as changelogs in markdown", "- Managing your version and tags", "", "Both the above are available as sub commands and we'll go through each one by", "one.", "", "Just running `commitlog` no longer works as it did in v1", " you'll need to specify", "a sub command to get it working.", "", "This has been done to keep it simpler to keep arbitrary behaviour to a minimum", "", "<h4 id=\"generate\">generate</h3>", "", "The first one is `generate` and in most cases you'll just be using this to", "handle generation of commits as a list of markdown notes", "", "Here's an example of what it'll look like to run the `generate` sub-command", "", "```sh", "$ commitlog generate", "# or ", "$ commitlog g", "```", "", "**Output**:", "", "```md", "## All Changes", "87ce3fc76b252908cdd81f9537713f8d67813652 chore: v2.0.0-beta.0", "", "09fc85c0d1d52d770bbbf39ac45907103a53d354 refactor: swap go-git for push with exec", "", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "909fd032facdeb4fb7633a4fad82dced28e8de83 chore: swap debugging logger with stderr printer", "<!-- .... more commits till the end of tag -->", "```", "", "The behaviour of the `generate` command is like so", "", "- go through all commits from the current `HEAD` (commit with the `HEAD`", "  reference) till the last commit or the most recent tagged commit.", "- the other case is where if the latest commit is also a tagged commit", " it'll", "  still go till the most recent tagged commit.", "", "  eg: v0.0.2 -> HEAD", " v0.0.1 -> SOMEHASH", " would give you the commits between", "  both the tags.", "", "The default behaviour of **_commitlog_** is to print to the stdout of your", "terminal which might not be what you wish to do.", "", "So", " if you wish to ever write to a file ", " you can use the `--out FILE` flag to", "write the output to a file instead.", "", "```sh", "$ commitlog g -o ./CHANGELOG.md", "```", "", "> **Note**: commitlog will overwrite the file with the new output", " make sure you", "> create a backup of the file when working with this.", "", "> **Note**: In coming versions an append mode will be added to the CLI to avoid", "> having to deal with this manually", "", "<h4 id=\"release\">release</h3>", "", "The `release` sub-command is a complimentary sub-command added to commitlog to", "help you with managing release versions. I understand that most languages have", "their own package version management and you might want to work with them but", "that's also why the `release` sub-command isn't something you need", " it's there", "for cases where you might wanna use it.", "", "My primary usecase is when working with repositories that work with multiple", "languages and I'd prefer a unified version.", "", "The `release` command doesn't modify your source code files but instead handles", "the version with it's own file named `.commitlog.release`", " which just holds the", "**version** number right now and while this does have the X.X.X format (semantic", "versioning format) the increments or how you handle them doesn't have to be.", "", "The command is flexible enough for you to combine and create your own way of", "versioning.", "", "##### Initialize", "", "```sh", "$ commitlog release --init", "# or ", "$ commitlog r --init", "```", "", "Once initialized", " you'll see a `.commitlog.release` file in your repo with the", "version `v0.0.0` to start with.", "", "##### Increments", "", "Post that you can use the remaining flags to help you incrementing the version", "as needed.", "", "```sh", "$ commitlog r --major # change to v1.0.0", "$ commitlog r --minor # change to v0.1.0", "$ commitlog r --patch # change to v0.0.1", "$ commitlog r --pre # change to v0.0.0-beta.0", "$ commitlog r --pre --pre-tag=\"dev\" # change to v0.0.0-dev.0", "", "# or go bonkers ", "$ commitlog r --patch --pre --pre-tag=\"dev\" # change to v0.0.1-dev.0", "$ commitlog r --major --patch --pre --pre-tag=\"dev\" # change to v1.0.1-dev.0", "```", "", "#### Git actions", "", "Most times you'd also want a tool like this to create commits and tags for you", "which is fair", " so `release` does come with a few git actions.", "", "- `--commit` (will create a commit and tag it for you)", "- `--push` (will push the commits and tags for you)", "", "The whole command would look a little something like this", "", "```sh", "$ commitlog r --patch --commit --push", "```", "", "<h3 id=\"advanced\">Advanced</h3>", "", "These are not really hard to guess or achieve but are in the advanced section as", "this isn't something a beginner user might need to mess with. If you have other", "use cases that you feel like should be added here", " raise a issue.", "", "<h4 id=\"selective-log-ranges\">Selective Log Ranges</h4>", "There's enough cases where the entire history between the tags makes no sense. You might just want a specific set of commits and this is very easy to do with commitlog", "", "```sh", "$ commitlog g --start HEAD --end HEAD~3 ", "# would return the last 3 commits", "```", "", "And as you might have understood", " commitlog does work with git's revision system", "so you can reuse git's own revision pointers as needed. Though it's mostly", "easier to just use the HASH since", " finding the hashes in `git log` is easier", "than finding the number you have to type after the `HEAD~`", "", "<h4 id=\"from-a-different-repo\">From a different repo</h4>", "A lot more often you might need to generate logs for a sub-repo when working with a huge multirepo folder which a lot of sub-modules and switching worktree for the changelog might not be something you wish to do.", "", "In cases like these the `-p` or `--path` flag can be used with the `generate`", "flag", "", "```sh", "$ commitlog g -p ./sub/module -s HEAD~3 ", "# would return the commits from HEAD~3 to the next tag or end of all commits.", "```", "", "<h4 id=\"categorize\">Categorize</h4>", "You wouldn't be using commitlog otherwise so this obviously has to exist.", "", "As for why is this turned off by default? I just don't use commit standards and", "mostly just need the commits between tags and very rarely need the categories to", "help me but doesn't change the fact that someone else might need it.", "", "So", " how does commitlog categorize? using regex's ", " or more like comma seperated", "regex's.", "", "The implementation approach might bring some issue but I'm going to wait for", "them instead of over fixing something that might never really happen.", "", "Anyway", " a simple example for a non-scoped commitlint styled categorization would", "look something like this .", "", "```sh", "$ commitlog g --categories=\"feat:", "fix:\"", "```", "", "**Output:**", "", "```md", "## feat:", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## fix:", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "```", "", "This could be made a little more neater using a better regex like so", "", "```sh", "$ commitlog g --categories=\"^feat", "^fix\"", "```", "", "**Output**:", "", "```md", "## ^feat", "e0ce9c693c554158b7b4841b799524164d9c3e83 feat(releaser): add init and pre-tag handlers", "", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## ^fix", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "540bb3d7419aab314fdb999dd57eeac3c53f5fad fix doc generation", "", "87d40ddbd463ad71b3af8b7edb8ac8176ecbf2f5 fix tests for new param", "```", "", "As visible", " you find more commits in the 2nd one since the regex matches more", "cases and gives you more information. You are free to modify these to make them", "work with other patterns that you might follow.", "", "Also the titles are going to be the regex's you pass. A future version will add", "a way for you to add label's to the regex though that's a little harder to", "achieve without making the flags very verbose so I've avoided it for now.", "", "> **Note**: This is the initial implementation of this and might change in a", "> future major version since this flag feels a little more frictional than the", "> other approaches I have in mind. Feel free to recommend other ways to do this.", "", "<h3 id=\"cli\">CLI</h3>", "", "This is the entire CLI reference", " which you can also access by using the `-h`", "flag on the downloaded binary.", "", "**`commitlog -h`**", "", "```", "NAME:", "   commitlog - commits to changelogs", "", "USAGE:", "   commitlog [global options] command [command options] [arguments...]", "", "COMMANDS:", "   generate", " g  commits to changelogs", "   release", " r   manage .commitlog.release version", "   help", " h      Shows a list of commands or help for one command", "", "GLOBAL OPTIONS:", "   --help", " -h  show help (default: false)", "```", "", "---", "", "**`commitlog g -h`**", "", "```", "NAME:", "   commitlog generate - commits to changelogs", "", "USAGE:", "   commitlog generate [command options] [arguments...]", "", "OPTIONS:", "   --categories value       categories to use", " includes all commits by default. any text you add here will be used to create categories out of the commits", "   --end END", " -e END        END reference for the commit to stop including commits at.This is exclusive of the given commit reference", "   --out FILE", " -o FILE      path to the output FILE", "   --path PATH", " -p PATH     root with the '.git' folder PATH (default: \".\")", "   --promo                  add promo text to the end of output (default: false)", "   --start START", " -s START  START reference for the commit to include commits from", "This is inclusive of the given commit reference", "   --stdio                  print to the stdout (default: true)", "```", "", "---", "", "**`commitlog r -h`**", "", "```", "NAME:", "   commitlog release - manage .commitlog.release version", "", "USAGE:", "   commitlog release [command options] [arguments...]", "", "OPTIONS:", "   --commit              if true will create a commit and tag", " of the changed version (default: false)", "   --init                initialise commitlog release (default: false)", "   --major               create a major version (default: false)", "   --minor               create a minor version (default: false)", "   --patch               create a patch version (default: false)", "   --path PATH", " -p PATH  PATH to a folder where .commitlog.release exists or is to be created.(note: do not use `--commit` or `--push` if the file isn't in the root) (default: \".\")", "   --pre                 create a pre-release version. will default to patch increment unlessspecified and not already a pre-release (default: false)", "   --pre-tag value       create a pre-release version (default: \"beta\")", "   --push                if true will create push the created release commit + tag on origin (default: false)", "```", ""]}]
\ No newline at end of file

From 80800c4c0e065e70e2c6da1eedac6c9b98a48b2a Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Wed, 30 Aug 2023 21:51:00 +0000
Subject: [PATCH 27/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@632360f206a8132b4283f5122b9907cb73eaded1=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 index.html  | 5 +++++
 search.json | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/index.html b/index.html
index f53d5bb..6318b8b 100644
--- a/index.html
+++ b/index.html
@@ -86,6 +86,11 @@ <h5 id="installation">Installation</h5>
 <a href="https://goblin.run">goblin</a> to build the binary for your specific
 system (rarely needed) since the releases actually accommodate the most used
 operating systems and architectures already.</p>
+<p><strong>Goblin</strong></p>
+<p>If using something like goblin, you'll have to request for the latest go module based version
+which can be requested like so</p>
+<pre><code class="language-sh">curl -sf http://goblin.run/github.com/barelyhuman/commitlog/v3@v3 | sh
+</code></pre>
 <p><strong>Linux/Mac (Unix Systems)</strong></p>
 <p>Once downloaded, you can use the <code>install</code> command on *nix systems to link the
 binary to a location that's already in your PATH variable.</p>
diff --git a/search.json b/search.json
index 7d84aa8..b91b044 100644
--- a/search.json
+++ b/search.json
@@ -1 +1 @@
-[{"title": "docs/download.md", "slug": "download.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | downloads", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Downloads", "", "[commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-386.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-386.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-386.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-386.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-amd64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-amd64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-arm64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-arm64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-windows-386.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-386.zip)    ", "[commitlog-v2.0.6-beta.0-windows-386.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-386.zip.md5)    ", "[commitlog-v2.0.6-beta.0-windows-amd64.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-amd64.zip)    ", "[commitlog-v2.0.6-beta.0-windows-amd64.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-amd64.zip.md5)    ", ""]}, {"title": "docs/api.md", "slug": "api.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# API", "", "### General Guide", "", "commitlog also comes as a pkg that you could reuse to modify the behaviour of", "the commands and this is very limited at the moment since I'm still working on", "the best way to get plugins to work with the original CLI instead of having to", "write your own version of commitlog.", "", "The pkg contains the 2 base command's creators and behaviour modifiers", " or more", "commonly known as the golang options pattern.", "", "Briefly put", " You have one function that takes in unlimited amount of functions", "as parameter with each of these parameter functions being able to modify the", "behaviour of the returned instance.", "", "Easy way to explain this is with an example of the `releaser` API", "", "```go", "package main", "", "import (", "", "\"log\"", "", "", "\"github.com/barelyhuman/commitlog/v3/pkg\"", ")", "", "func main() {", "", "versionString := \"v0.0.1\"", "", "releaser", " _ := pkg.CreateNewReleaser(", "", "", "versionString", "", "", "", "pkg.WithMajorIncrement()", "", "", ")", "", "", "log.Println(releaser.String())", "", "}", "```", "", "here the `pkg.CreateNewReleaser` takes in one mandatory value which is the", "`versionString` and the 2nd parameter is optional here.", "", "Though", " since we wish for the releaser to have a custom behaviour everytime the", "flags change", " instead of writing entire functionalities inside various releaser", "functions", " which would look like so", "", "```go", "releaser.IncrementMajor()", "releaser.IncrementMinor()", "```", "", "I'd be unable to expose the builders / option functions out to the public for", "them to write custom behaviours that work directly with the `struct` being used", "by commitlog itself and instead you'd be writing wrappers around existing", "functions. Thus", " adding another layer of abstraction which isn't needed for", "something that wants to be extended.", "", "This approach gives me the ability to expose a selected few properties for you", "to modify while writing your own builder/option function.", "", "The only pointer functions that releaser has is the one's that'll help with", "printing or identifying the final version's state.", "", "Since", " you now know how the API is written", " the go doc for this module should be", "able to help you with the remaining.", "", "[godoc&nearr;](https://pkg.go.dev/github.com/barelyhuman/commitlog)", "", "> **Note**: if the go doc still hasn't been generated for v2.0.0", " please go", "> through the source code to help you with the implementation details", ""]}, {"title": "docs/index.md", "slug": "index.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Index", "", "- [Source](https://github.com/barelyhuman/commitlog)", "- [Quick Start](#quick-start)", "- [About](#about)", "  - [Philosophy](#philosophy)", "  - [Installation](#installation)", "- [Manual](/commitlog/manual)", "- [License](#license)", "", "<h4 id=\"quick-start\">Quick Start</h4>", "", "For the one's who already know the tool and wanna get started quickly.", "", "You can get the CLI in the following ways", "", "1. You can get the binaries from the [download section](/commitlog/download)", "", "2. Using `go get`", "", "```sh", "go get -u github.com/barelyhuman/commitlog", "```", "", "3. Using goblin", "", "```sh", "curl -sf https://goblin.run/github.com/barelyhuman/commitlog | sh", "```", "", "Once installed you can just run `commitlog generate` or the shorter version", "`commitlog g` to get all the changes between the recent tags.", "", "<h4 id=\"about\">About</h4>", "", "<h5 id=\"philosophy\">Philosophy</h5>", "", "**_commitlog_** simply exists because I wasn't able to find a decent enough tool", "to do this without being bound to a specific programming language and it's", "toolset. The closes one to this is the `git`'s own `shortlog` and `log` commands", "", "- **Language Agnostic** - No one needs the entire programming toolset or the", "  language to be setup on the system to be able to just generate logs", "", "- **Decently Sized** - Not everyone has a powerful system and CI systems are", "  still very limited in terms of resources since they give you shared spaces and", "  automating generating this is a common practice so it doesn't make sense for", "  it to install a runtime worth 100MB to run it.", "", "  The binary itself is around 10-13MB which is fairly big for a tool like this", "  but this is due to go's nature of embedding the platform runtime with the", "  binary and this might not be ideal for some and so there's another similar", "  smaller scoped version [nimclog](https://github.com/barelyhuman/nimclog) which", "  is in KB's", "", "- **Flexible** - There are no set standards for how you write commit messages.", "  Commitlint is a good standard and pretty widely used and also what commitlog", "  v1 used as the base for categorizing.", "", "  V2 however", " doesn't have a set commit category standard", " it accepts regex's", "  that you will categorize your commits for you.", "", "  This is more for experienced developers who have a their own pattern of", "  writing commits and would like a tool that'd work with their pattern instead", "  of creating friction", "", "- **Extensible** - The entire thing is open source and MIT licenses", "", "  specifically for you to be able to fix and add things as needed. Each command", "  has been kept away from the domain logic to be able to use `commitlog` even as", "  a library and build your own tool if you wish to", " though if there's something", "  you wish the CLI supported", " you are free to open issues and I really like", "  people helping with the development since that helps keeping the tool alive", "  longer.", "", "<h5 id=\"installation\">Installation</h5>", "", "The installation is pretty straightforwad. You [download](/commitlog/download) the binary", "from the download section of this website or use something like", "[goblin](https://goblin.run) to build the binary for your specific", "system (rarely needed) since the releases actually accommodate the most used", "operating systems and architectures already.", "", "**Linux/Mac (Unix Systems)**", "", "Once downloaded", " you can use the `install` command on *nix systems to link the", "binary to a location that's already in your PATH variable.", "", "eg:", "", "```bash", "# install commitlog from current directory to the /usr/local/bin directory", "install $(pwd)/commitlog /usr/local/bin", "```", "", "This should give you the ability to use the `commitlog` command anywhere in your", "system", "", "**Windows**", "", "Similar to the linux setup", " you can download the `.exe` file and add it to a", "location that your environment path already has. An easier thing to do is to", "store the entire thing in your secondary partition and add that location to your", "PATH. You can use this resource from Java docs to help you with modifying the", "PATH variables", "", "- [Modifying PATH in Windows](https://www.java.com/en/download/help/path.html)", "", "<h4 id=\"manual\">Manual</h4>", "", "[Read Manual &rarr;](/commitlog/manual)", "", "<h4 id=\"license\">License</h4>", "", "commitlog is MIT Licensed and you can read the entire license in the", "[source code](https://github.com/barelyhuman/commitlog)", ""]}, {"title": "docs/manual.md", "slug": "manual.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# Manual", "", "- [Basics](#basics)", "  - [generate](#generate)", "  - [release](#release)", "- [Advanced](#advanced)", "  - [Selective Log Ranges](#selective-log-ranges)", "  - [From a different repo](#from-a-different-repo)", "  - [Categorize](#categorize)", "- [CLI](#cli)", "- [API](/commitlog/api)", "", "<h3 id=\"basics\">Basics</h3>", "", "**_`commitlog`_** come with 2 basic functionalities", "", "- Generating commits as changelogs in markdown", "- Managing your version and tags", "", "Both the above are available as sub commands and we'll go through each one by", "one.", "", "Just running `commitlog` no longer works as it did in v1", " you'll need to specify", "a sub command to get it working.", "", "This has been done to keep it simpler to keep arbitrary behaviour to a minimum", "", "<h4 id=\"generate\">generate</h3>", "", "The first one is `generate` and in most cases you'll just be using this to", "handle generation of commits as a list of markdown notes", "", "Here's an example of what it'll look like to run the `generate` sub-command", "", "```sh", "$ commitlog generate", "# or ", "$ commitlog g", "```", "", "**Output**:", "", "```md", "## All Changes", "87ce3fc76b252908cdd81f9537713f8d67813652 chore: v2.0.0-beta.0", "", "09fc85c0d1d52d770bbbf39ac45907103a53d354 refactor: swap go-git for push with exec", "", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "909fd032facdeb4fb7633a4fad82dced28e8de83 chore: swap debugging logger with stderr printer", "<!-- .... more commits till the end of tag -->", "```", "", "The behaviour of the `generate` command is like so", "", "- go through all commits from the current `HEAD` (commit with the `HEAD`", "  reference) till the last commit or the most recent tagged commit.", "- the other case is where if the latest commit is also a tagged commit", " it'll", "  still go till the most recent tagged commit.", "", "  eg: v0.0.2 -> HEAD", " v0.0.1 -> SOMEHASH", " would give you the commits between", "  both the tags.", "", "The default behaviour of **_commitlog_** is to print to the stdout of your", "terminal which might not be what you wish to do.", "", "So", " if you wish to ever write to a file ", " you can use the `--out FILE` flag to", "write the output to a file instead.", "", "```sh", "$ commitlog g -o ./CHANGELOG.md", "```", "", "> **Note**: commitlog will overwrite the file with the new output", " make sure you", "> create a backup of the file when working with this.", "", "> **Note**: In coming versions an append mode will be added to the CLI to avoid", "> having to deal with this manually", "", "<h4 id=\"release\">release</h3>", "", "The `release` sub-command is a complimentary sub-command added to commitlog to", "help you with managing release versions. I understand that most languages have", "their own package version management and you might want to work with them but", "that's also why the `release` sub-command isn't something you need", " it's there", "for cases where you might wanna use it.", "", "My primary usecase is when working with repositories that work with multiple", "languages and I'd prefer a unified version.", "", "The `release` command doesn't modify your source code files but instead handles", "the version with it's own file named `.commitlog.release`", " which just holds the", "**version** number right now and while this does have the X.X.X format (semantic", "versioning format) the increments or how you handle them doesn't have to be.", "", "The command is flexible enough for you to combine and create your own way of", "versioning.", "", "##### Initialize", "", "```sh", "$ commitlog release --init", "# or ", "$ commitlog r --init", "```", "", "Once initialized", " you'll see a `.commitlog.release` file in your repo with the", "version `v0.0.0` to start with.", "", "##### Increments", "", "Post that you can use the remaining flags to help you incrementing the version", "as needed.", "", "```sh", "$ commitlog r --major # change to v1.0.0", "$ commitlog r --minor # change to v0.1.0", "$ commitlog r --patch # change to v0.0.1", "$ commitlog r --pre # change to v0.0.0-beta.0", "$ commitlog r --pre --pre-tag=\"dev\" # change to v0.0.0-dev.0", "", "# or go bonkers ", "$ commitlog r --patch --pre --pre-tag=\"dev\" # change to v0.0.1-dev.0", "$ commitlog r --major --patch --pre --pre-tag=\"dev\" # change to v1.0.1-dev.0", "```", "", "#### Git actions", "", "Most times you'd also want a tool like this to create commits and tags for you", "which is fair", " so `release` does come with a few git actions.", "", "- `--commit` (will create a commit and tag it for you)", "- `--push` (will push the commits and tags for you)", "", "The whole command would look a little something like this", "", "```sh", "$ commitlog r --patch --commit --push", "```", "", "<h3 id=\"advanced\">Advanced</h3>", "", "These are not really hard to guess or achieve but are in the advanced section as", "this isn't something a beginner user might need to mess with. If you have other", "use cases that you feel like should be added here", " raise a issue.", "", "<h4 id=\"selective-log-ranges\">Selective Log Ranges</h4>", "There's enough cases where the entire history between the tags makes no sense. You might just want a specific set of commits and this is very easy to do with commitlog", "", "```sh", "$ commitlog g --start HEAD --end HEAD~3 ", "# would return the last 3 commits", "```", "", "And as you might have understood", " commitlog does work with git's revision system", "so you can reuse git's own revision pointers as needed. Though it's mostly", "easier to just use the HASH since", " finding the hashes in `git log` is easier", "than finding the number you have to type after the `HEAD~`", "", "<h4 id=\"from-a-different-repo\">From a different repo</h4>", "A lot more often you might need to generate logs for a sub-repo when working with a huge multirepo folder which a lot of sub-modules and switching worktree for the changelog might not be something you wish to do.", "", "In cases like these the `-p` or `--path` flag can be used with the `generate`", "flag", "", "```sh", "$ commitlog g -p ./sub/module -s HEAD~3 ", "# would return the commits from HEAD~3 to the next tag or end of all commits.", "```", "", "<h4 id=\"categorize\">Categorize</h4>", "You wouldn't be using commitlog otherwise so this obviously has to exist.", "", "As for why is this turned off by default? I just don't use commit standards and", "mostly just need the commits between tags and very rarely need the categories to", "help me but doesn't change the fact that someone else might need it.", "", "So", " how does commitlog categorize? using regex's ", " or more like comma seperated", "regex's.", "", "The implementation approach might bring some issue but I'm going to wait for", "them instead of over fixing something that might never really happen.", "", "Anyway", " a simple example for a non-scoped commitlint styled categorization would", "look something like this .", "", "```sh", "$ commitlog g --categories=\"feat:", "fix:\"", "```", "", "**Output:**", "", "```md", "## feat:", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## fix:", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "```", "", "This could be made a little more neater using a better regex like so", "", "```sh", "$ commitlog g --categories=\"^feat", "^fix\"", "```", "", "**Output**:", "", "```md", "## ^feat", "e0ce9c693c554158b7b4841b799524164d9c3e83 feat(releaser): add init and pre-tag handlers", "", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## ^fix", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "540bb3d7419aab314fdb999dd57eeac3c53f5fad fix doc generation", "", "87d40ddbd463ad71b3af8b7edb8ac8176ecbf2f5 fix tests for new param", "```", "", "As visible", " you find more commits in the 2nd one since the regex matches more", "cases and gives you more information. You are free to modify these to make them", "work with other patterns that you might follow.", "", "Also the titles are going to be the regex's you pass. A future version will add", "a way for you to add label's to the regex though that's a little harder to", "achieve without making the flags very verbose so I've avoided it for now.", "", "> **Note**: This is the initial implementation of this and might change in a", "> future major version since this flag feels a little more frictional than the", "> other approaches I have in mind. Feel free to recommend other ways to do this.", "", "<h3 id=\"cli\">CLI</h3>", "", "This is the entire CLI reference", " which you can also access by using the `-h`", "flag on the downloaded binary.", "", "**`commitlog -h`**", "", "```", "NAME:", "   commitlog - commits to changelogs", "", "USAGE:", "   commitlog [global options] command [command options] [arguments...]", "", "COMMANDS:", "   generate", " g  commits to changelogs", "   release", " r   manage .commitlog.release version", "   help", " h      Shows a list of commands or help for one command", "", "GLOBAL OPTIONS:", "   --help", " -h  show help (default: false)", "```", "", "---", "", "**`commitlog g -h`**", "", "```", "NAME:", "   commitlog generate - commits to changelogs", "", "USAGE:", "   commitlog generate [command options] [arguments...]", "", "OPTIONS:", "   --categories value       categories to use", " includes all commits by default. any text you add here will be used to create categories out of the commits", "   --end END", " -e END        END reference for the commit to stop including commits at.This is exclusive of the given commit reference", "   --out FILE", " -o FILE      path to the output FILE", "   --path PATH", " -p PATH     root with the '.git' folder PATH (default: \".\")", "   --promo                  add promo text to the end of output (default: false)", "   --start START", " -s START  START reference for the commit to include commits from", "This is inclusive of the given commit reference", "   --stdio                  print to the stdout (default: true)", "```", "", "---", "", "**`commitlog r -h`**", "", "```", "NAME:", "   commitlog release - manage .commitlog.release version", "", "USAGE:", "   commitlog release [command options] [arguments...]", "", "OPTIONS:", "   --commit              if true will create a commit and tag", " of the changed version (default: false)", "   --init                initialise commitlog release (default: false)", "   --major               create a major version (default: false)", "   --minor               create a minor version (default: false)", "   --patch               create a patch version (default: false)", "   --path PATH", " -p PATH  PATH to a folder where .commitlog.release exists or is to be created.(note: do not use `--commit` or `--push` if the file isn't in the root) (default: \".\")", "   --pre                 create a pre-release version. will default to patch increment unlessspecified and not already a pre-release (default: false)", "   --pre-tag value       create a pre-release version (default: \"beta\")", "   --push                if true will create push the created release commit + tag on origin (default: false)", "```", ""]}]
\ No newline at end of file
+[{"title": "docs/download.md", "slug": "download.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | downloads", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Downloads", "", "[commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-386.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-386.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-386.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-386.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-amd64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-amd64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-arm64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-arm64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-windows-386.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-386.zip)    ", "[commitlog-v2.0.6-beta.0-windows-386.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-386.zip.md5)    ", "[commitlog-v2.0.6-beta.0-windows-amd64.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-amd64.zip)    ", "[commitlog-v2.0.6-beta.0-windows-amd64.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-amd64.zip.md5)    ", ""]}, {"title": "docs/api.md", "slug": "api.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# API", "", "### General Guide", "", "commitlog also comes as a pkg that you could reuse to modify the behaviour of", "the commands and this is very limited at the moment since I'm still working on", "the best way to get plugins to work with the original CLI instead of having to", "write your own version of commitlog.", "", "The pkg contains the 2 base command's creators and behaviour modifiers", " or more", "commonly known as the golang options pattern.", "", "Briefly put", " You have one function that takes in unlimited amount of functions", "as parameter with each of these parameter functions being able to modify the", "behaviour of the returned instance.", "", "Easy way to explain this is with an example of the `releaser` API", "", "```go", "package main", "", "import (", "", "\"log\"", "", "", "\"github.com/barelyhuman/commitlog/v3/pkg\"", ")", "", "func main() {", "", "versionString := \"v0.0.1\"", "", "releaser", " _ := pkg.CreateNewReleaser(", "", "", "versionString", "", "", "", "pkg.WithMajorIncrement()", "", "", ")", "", "", "log.Println(releaser.String())", "", "}", "```", "", "here the `pkg.CreateNewReleaser` takes in one mandatory value which is the", "`versionString` and the 2nd parameter is optional here.", "", "Though", " since we wish for the releaser to have a custom behaviour everytime the", "flags change", " instead of writing entire functionalities inside various releaser", "functions", " which would look like so", "", "```go", "releaser.IncrementMajor()", "releaser.IncrementMinor()", "```", "", "I'd be unable to expose the builders / option functions out to the public for", "them to write custom behaviours that work directly with the `struct` being used", "by commitlog itself and instead you'd be writing wrappers around existing", "functions. Thus", " adding another layer of abstraction which isn't needed for", "something that wants to be extended.", "", "This approach gives me the ability to expose a selected few properties for you", "to modify while writing your own builder/option function.", "", "The only pointer functions that releaser has is the one's that'll help with", "printing or identifying the final version's state.", "", "Since", " you now know how the API is written", " the go doc for this module should be", "able to help you with the remaining.", "", "[godoc&nearr;](https://pkg.go.dev/github.com/barelyhuman/commitlog)", "", "> **Note**: if the go doc still hasn't been generated for v2.0.0", " please go", "> through the source code to help you with the implementation details", ""]}, {"title": "docs/index.md", "slug": "index.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Index", "", "- [Source](https://github.com/barelyhuman/commitlog)", "- [Quick Start](#quick-start)", "- [About](#about)", "  - [Philosophy](#philosophy)", "  - [Installation](#installation)", "- [Manual](/commitlog/manual)", "- [License](#license)", "", "<h4 id=\"quick-start\">Quick Start</h4>", "", "For the one's who already know the tool and wanna get started quickly.", "", "You can get the CLI in the following ways", "", "1. You can get the binaries from the [download section](/commitlog/download)", "", "2. Using `go get`", "", "```sh", "go get -u github.com/barelyhuman/commitlog", "```", "", "3. Using goblin", "", "```sh", "curl -sf https://goblin.run/github.com/barelyhuman/commitlog | sh", "```", "", "Once installed you can just run `commitlog generate` or the shorter version", "`commitlog g` to get all the changes between the recent tags.", "", "<h4 id=\"about\">About</h4>", "", "<h5 id=\"philosophy\">Philosophy</h5>", "", "**_commitlog_** simply exists because I wasn't able to find a decent enough tool", "to do this without being bound to a specific programming language and it's", "toolset. The closes one to this is the `git`'s own `shortlog` and `log` commands", "", "- **Language Agnostic** - No one needs the entire programming toolset or the", "  language to be setup on the system to be able to just generate logs", "", "- **Decently Sized** - Not everyone has a powerful system and CI systems are", "  still very limited in terms of resources since they give you shared spaces and", "  automating generating this is a common practice so it doesn't make sense for", "  it to install a runtime worth 100MB to run it.", "", "  The binary itself is around 10-13MB which is fairly big for a tool like this", "  but this is due to go's nature of embedding the platform runtime with the", "  binary and this might not be ideal for some and so there's another similar", "  smaller scoped version [nimclog](https://github.com/barelyhuman/nimclog) which", "  is in KB's", "", "- **Flexible** - There are no set standards for how you write commit messages.", "  Commitlint is a good standard and pretty widely used and also what commitlog", "  v1 used as the base for categorizing.", "", "  V2 however", " doesn't have a set commit category standard", " it accepts regex's", "  that you will categorize your commits for you.", "", "  This is more for experienced developers who have a their own pattern of", "  writing commits and would like a tool that'd work with their pattern instead", "  of creating friction", "", "- **Extensible** - The entire thing is open source and MIT licenses", "", "  specifically for you to be able to fix and add things as needed. Each command", "  has been kept away from the domain logic to be able to use `commitlog` even as", "  a library and build your own tool if you wish to", " though if there's something", "  you wish the CLI supported", " you are free to open issues and I really like", "  people helping with the development since that helps keeping the tool alive", "  longer.", "", "<h5 id=\"installation\">Installation</h5>", "", "The installation is pretty straightforwad. You [download](/commitlog/download) the binary", "from the download section of this website or use something like", "[goblin](https://goblin.run) to build the binary for your specific", "system (rarely needed) since the releases actually accommodate the most used", "operating systems and architectures already.", "", "**Goblin**", "", "If using something like goblin", " you'll have to request for the latest go module based version", "which can be requested like so", "", "```sh", "curl -sf http://goblin.run/github.com/barelyhuman/commitlog/v3@v3 | sh", "```", "", "**Linux/Mac (Unix Systems)**", "", "Once downloaded", " you can use the `install` command on \\*nix systems to link the", "binary to a location that's already in your PATH variable.", "", "eg:", "", "```bash", "# install commitlog from current directory to the /usr/local/bin directory", "install $(pwd)/commitlog /usr/local/bin", "```", "", "This should give you the ability to use the `commitlog` command anywhere in your", "system", "", "**Windows**", "", "Similar to the linux setup", " you can download the `.exe` file and add it to a", "location that your environment path already has. An easier thing to do is to", "store the entire thing in your secondary partition and add that location to your", "PATH. You can use this resource from Java docs to help you with modifying the", "PATH variables", "", "- [Modifying PATH in Windows](https://www.java.com/en/download/help/path.html)", "", "<h4 id=\"manual\">Manual</h4>", "", "[Read Manual &rarr;](/commitlog/manual)", "", "<h4 id=\"license\">License</h4>", "", "commitlog is MIT Licensed and you can read the entire license in the", "[source code](https://github.com/barelyhuman/commitlog)", ""]}, {"title": "docs/manual.md", "slug": "manual.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# Manual", "", "- [Basics](#basics)", "  - [generate](#generate)", "  - [release](#release)", "- [Advanced](#advanced)", "  - [Selective Log Ranges](#selective-log-ranges)", "  - [From a different repo](#from-a-different-repo)", "  - [Categorize](#categorize)", "- [CLI](#cli)", "- [API](/commitlog/api)", "", "<h3 id=\"basics\">Basics</h3>", "", "**_`commitlog`_** come with 2 basic functionalities", "", "- Generating commits as changelogs in markdown", "- Managing your version and tags", "", "Both the above are available as sub commands and we'll go through each one by", "one.", "", "Just running `commitlog` no longer works as it did in v1", " you'll need to specify", "a sub command to get it working.", "", "This has been done to keep it simpler to keep arbitrary behaviour to a minimum", "", "<h4 id=\"generate\">generate</h3>", "", "The first one is `generate` and in most cases you'll just be using this to", "handle generation of commits as a list of markdown notes", "", "Here's an example of what it'll look like to run the `generate` sub-command", "", "```sh", "$ commitlog generate", "# or ", "$ commitlog g", "```", "", "**Output**:", "", "```md", "## All Changes", "87ce3fc76b252908cdd81f9537713f8d67813652 chore: v2.0.0-beta.0", "", "09fc85c0d1d52d770bbbf39ac45907103a53d354 refactor: swap go-git for push with exec", "", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "909fd032facdeb4fb7633a4fad82dced28e8de83 chore: swap debugging logger with stderr printer", "<!-- .... more commits till the end of tag -->", "```", "", "The behaviour of the `generate` command is like so", "", "- go through all commits from the current `HEAD` (commit with the `HEAD`", "  reference) till the last commit or the most recent tagged commit.", "- the other case is where if the latest commit is also a tagged commit", " it'll", "  still go till the most recent tagged commit.", "", "  eg: v0.0.2 -> HEAD", " v0.0.1 -> SOMEHASH", " would give you the commits between", "  both the tags.", "", "The default behaviour of **_commitlog_** is to print to the stdout of your", "terminal which might not be what you wish to do.", "", "So", " if you wish to ever write to a file ", " you can use the `--out FILE` flag to", "write the output to a file instead.", "", "```sh", "$ commitlog g -o ./CHANGELOG.md", "```", "", "> **Note**: commitlog will overwrite the file with the new output", " make sure you", "> create a backup of the file when working with this.", "", "> **Note**: In coming versions an append mode will be added to the CLI to avoid", "> having to deal with this manually", "", "<h4 id=\"release\">release</h3>", "", "The `release` sub-command is a complimentary sub-command added to commitlog to", "help you with managing release versions. I understand that most languages have", "their own package version management and you might want to work with them but", "that's also why the `release` sub-command isn't something you need", " it's there", "for cases where you might wanna use it.", "", "My primary usecase is when working with repositories that work with multiple", "languages and I'd prefer a unified version.", "", "The `release` command doesn't modify your source code files but instead handles", "the version with it's own file named `.commitlog.release`", " which just holds the", "**version** number right now and while this does have the X.X.X format (semantic", "versioning format) the increments or how you handle them doesn't have to be.", "", "The command is flexible enough for you to combine and create your own way of", "versioning.", "", "##### Initialize", "", "```sh", "$ commitlog release --init", "# or ", "$ commitlog r --init", "```", "", "Once initialized", " you'll see a `.commitlog.release` file in your repo with the", "version `v0.0.0` to start with.", "", "##### Increments", "", "Post that you can use the remaining flags to help you incrementing the version", "as needed.", "", "```sh", "$ commitlog r --major # change to v1.0.0", "$ commitlog r --minor # change to v0.1.0", "$ commitlog r --patch # change to v0.0.1", "$ commitlog r --pre # change to v0.0.0-beta.0", "$ commitlog r --pre --pre-tag=\"dev\" # change to v0.0.0-dev.0", "", "# or go bonkers ", "$ commitlog r --patch --pre --pre-tag=\"dev\" # change to v0.0.1-dev.0", "$ commitlog r --major --patch --pre --pre-tag=\"dev\" # change to v1.0.1-dev.0", "```", "", "#### Git actions", "", "Most times you'd also want a tool like this to create commits and tags for you", "which is fair", " so `release` does come with a few git actions.", "", "- `--commit` (will create a commit and tag it for you)", "- `--push` (will push the commits and tags for you)", "", "The whole command would look a little something like this", "", "```sh", "$ commitlog r --patch --commit --push", "```", "", "<h3 id=\"advanced\">Advanced</h3>", "", "These are not really hard to guess or achieve but are in the advanced section as", "this isn't something a beginner user might need to mess with. If you have other", "use cases that you feel like should be added here", " raise a issue.", "", "<h4 id=\"selective-log-ranges\">Selective Log Ranges</h4>", "There's enough cases where the entire history between the tags makes no sense. You might just want a specific set of commits and this is very easy to do with commitlog", "", "```sh", "$ commitlog g --start HEAD --end HEAD~3 ", "# would return the last 3 commits", "```", "", "And as you might have understood", " commitlog does work with git's revision system", "so you can reuse git's own revision pointers as needed. Though it's mostly", "easier to just use the HASH since", " finding the hashes in `git log` is easier", "than finding the number you have to type after the `HEAD~`", "", "<h4 id=\"from-a-different-repo\">From a different repo</h4>", "A lot more often you might need to generate logs for a sub-repo when working with a huge multirepo folder which a lot of sub-modules and switching worktree for the changelog might not be something you wish to do.", "", "In cases like these the `-p` or `--path` flag can be used with the `generate`", "flag", "", "```sh", "$ commitlog g -p ./sub/module -s HEAD~3 ", "# would return the commits from HEAD~3 to the next tag or end of all commits.", "```", "", "<h4 id=\"categorize\">Categorize</h4>", "You wouldn't be using commitlog otherwise so this obviously has to exist.", "", "As for why is this turned off by default? I just don't use commit standards and", "mostly just need the commits between tags and very rarely need the categories to", "help me but doesn't change the fact that someone else might need it.", "", "So", " how does commitlog categorize? using regex's ", " or more like comma seperated", "regex's.", "", "The implementation approach might bring some issue but I'm going to wait for", "them instead of over fixing something that might never really happen.", "", "Anyway", " a simple example for a non-scoped commitlint styled categorization would", "look something like this .", "", "```sh", "$ commitlog g --categories=\"feat:", "fix:\"", "```", "", "**Output:**", "", "```md", "## feat:", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## fix:", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "```", "", "This could be made a little more neater using a better regex like so", "", "```sh", "$ commitlog g --categories=\"^feat", "^fix\"", "```", "", "**Output**:", "", "```md", "## ^feat", "e0ce9c693c554158b7b4841b799524164d9c3e83 feat(releaser): add init and pre-tag handlers", "", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## ^fix", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "540bb3d7419aab314fdb999dd57eeac3c53f5fad fix doc generation", "", "87d40ddbd463ad71b3af8b7edb8ac8176ecbf2f5 fix tests for new param", "```", "", "As visible", " you find more commits in the 2nd one since the regex matches more", "cases and gives you more information. You are free to modify these to make them", "work with other patterns that you might follow.", "", "Also the titles are going to be the regex's you pass. A future version will add", "a way for you to add label's to the regex though that's a little harder to", "achieve without making the flags very verbose so I've avoided it for now.", "", "> **Note**: This is the initial implementation of this and might change in a", "> future major version since this flag feels a little more frictional than the", "> other approaches I have in mind. Feel free to recommend other ways to do this.", "", "<h3 id=\"cli\">CLI</h3>", "", "This is the entire CLI reference", " which you can also access by using the `-h`", "flag on the downloaded binary.", "", "**`commitlog -h`**", "", "```", "NAME:", "   commitlog - commits to changelogs", "", "USAGE:", "   commitlog [global options] command [command options] [arguments...]", "", "COMMANDS:", "   generate", " g  commits to changelogs", "   release", " r   manage .commitlog.release version", "   help", " h      Shows a list of commands or help for one command", "", "GLOBAL OPTIONS:", "   --help", " -h  show help (default: false)", "```", "", "---", "", "**`commitlog g -h`**", "", "```", "NAME:", "   commitlog generate - commits to changelogs", "", "USAGE:", "   commitlog generate [command options] [arguments...]", "", "OPTIONS:", "   --categories value       categories to use", " includes all commits by default. any text you add here will be used to create categories out of the commits", "   --end END", " -e END        END reference for the commit to stop including commits at.This is exclusive of the given commit reference", "   --out FILE", " -o FILE      path to the output FILE", "   --path PATH", " -p PATH     root with the '.git' folder PATH (default: \".\")", "   --promo                  add promo text to the end of output (default: false)", "   --start START", " -s START  START reference for the commit to include commits from", "This is inclusive of the given commit reference", "   --stdio                  print to the stdout (default: true)", "```", "", "---", "", "**`commitlog r -h`**", "", "```", "NAME:", "   commitlog release - manage .commitlog.release version", "", "USAGE:", "   commitlog release [command options] [arguments...]", "", "OPTIONS:", "   --commit              if true will create a commit and tag", " of the changed version (default: false)", "   --init                initialise commitlog release (default: false)", "   --major               create a major version (default: false)", "   --minor               create a minor version (default: false)", "   --patch               create a patch version (default: false)", "   --path PATH", " -p PATH  PATH to a folder where .commitlog.release exists or is to be created.(note: do not use `--commit` or `--push` if the file isn't in the root) (default: \".\")", "   --pre                 create a pre-release version. will default to patch increment unlessspecified and not already a pre-release (default: false)", "   --pre-tag value       create a pre-release version (default: \"beta\")", "   --push                if true will create push the created release commit + tag on origin (default: false)", "```", ""]}]
\ No newline at end of file

From b055416ba71dd11a257854473c71e6c9045d77d1 Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Wed, 30 Aug 2023 21:55:00 +0000
Subject: [PATCH 28/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@d7b7bb1cab72c5f9b5240ed8449bfa55d1c7f9e8=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 index.html  | 9 ++-------
 search.json | 2 +-
 2 files changed, 3 insertions(+), 8 deletions(-)

diff --git a/index.html b/index.html
index 6318b8b..1e7c5b6 100644
--- a/index.html
+++ b/index.html
@@ -30,12 +30,12 @@ <h4 id="quick-start">Quick Start</h4>
 <p>Using <code>go get</code></p>
 </li>
 </ol>
-<pre><code class="language-sh">go get -u github.com/barelyhuman/commitlog
+<pre><code class="language-sh">go get -u github.com/barelyhuman/commitlog/v3
 </code></pre>
 <ol start="3">
 <li>Using goblin</li>
 </ol>
-<pre><code class="language-sh">curl -sf https://goblin.run/github.com/barelyhuman/commitlog | sh
+<pre><code class="language-sh">curl -sf https://goblin.run/github.com/barelyhuman/commitlog/v3@v3 | sh
 </code></pre>
 <p>Once installed you can just run <code>commitlog generate</code> or the shorter version
 <code>commitlog g</code> to get all the changes between the recent tags.</p>
@@ -86,11 +86,6 @@ <h5 id="installation">Installation</h5>
 <a href="https://goblin.run">goblin</a> to build the binary for your specific
 system (rarely needed) since the releases actually accommodate the most used
 operating systems and architectures already.</p>
-<p><strong>Goblin</strong></p>
-<p>If using something like goblin, you'll have to request for the latest go module based version
-which can be requested like so</p>
-<pre><code class="language-sh">curl -sf http://goblin.run/github.com/barelyhuman/commitlog/v3@v3 | sh
-</code></pre>
 <p><strong>Linux/Mac (Unix Systems)</strong></p>
 <p>Once downloaded, you can use the <code>install</code> command on *nix systems to link the
 binary to a location that's already in your PATH variable.</p>
diff --git a/search.json b/search.json
index b91b044..446f1ff 100644
--- a/search.json
+++ b/search.json
@@ -1 +1 @@
-[{"title": "docs/download.md", "slug": "download.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | downloads", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Downloads", "", "[commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-386.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-386.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-386.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-386.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-amd64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-amd64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-arm64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-arm64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-windows-386.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-386.zip)    ", "[commitlog-v2.0.6-beta.0-windows-386.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-386.zip.md5)    ", "[commitlog-v2.0.6-beta.0-windows-amd64.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-amd64.zip)    ", "[commitlog-v2.0.6-beta.0-windows-amd64.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-amd64.zip.md5)    ", ""]}, {"title": "docs/api.md", "slug": "api.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# API", "", "### General Guide", "", "commitlog also comes as a pkg that you could reuse to modify the behaviour of", "the commands and this is very limited at the moment since I'm still working on", "the best way to get plugins to work with the original CLI instead of having to", "write your own version of commitlog.", "", "The pkg contains the 2 base command's creators and behaviour modifiers", " or more", "commonly known as the golang options pattern.", "", "Briefly put", " You have one function that takes in unlimited amount of functions", "as parameter with each of these parameter functions being able to modify the", "behaviour of the returned instance.", "", "Easy way to explain this is with an example of the `releaser` API", "", "```go", "package main", "", "import (", "", "\"log\"", "", "", "\"github.com/barelyhuman/commitlog/v3/pkg\"", ")", "", "func main() {", "", "versionString := \"v0.0.1\"", "", "releaser", " _ := pkg.CreateNewReleaser(", "", "", "versionString", "", "", "", "pkg.WithMajorIncrement()", "", "", ")", "", "", "log.Println(releaser.String())", "", "}", "```", "", "here the `pkg.CreateNewReleaser` takes in one mandatory value which is the", "`versionString` and the 2nd parameter is optional here.", "", "Though", " since we wish for the releaser to have a custom behaviour everytime the", "flags change", " instead of writing entire functionalities inside various releaser", "functions", " which would look like so", "", "```go", "releaser.IncrementMajor()", "releaser.IncrementMinor()", "```", "", "I'd be unable to expose the builders / option functions out to the public for", "them to write custom behaviours that work directly with the `struct` being used", "by commitlog itself and instead you'd be writing wrappers around existing", "functions. Thus", " adding another layer of abstraction which isn't needed for", "something that wants to be extended.", "", "This approach gives me the ability to expose a selected few properties for you", "to modify while writing your own builder/option function.", "", "The only pointer functions that releaser has is the one's that'll help with", "printing or identifying the final version's state.", "", "Since", " you now know how the API is written", " the go doc for this module should be", "able to help you with the remaining.", "", "[godoc&nearr;](https://pkg.go.dev/github.com/barelyhuman/commitlog)", "", "> **Note**: if the go doc still hasn't been generated for v2.0.0", " please go", "> through the source code to help you with the implementation details", ""]}, {"title": "docs/index.md", "slug": "index.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Index", "", "- [Source](https://github.com/barelyhuman/commitlog)", "- [Quick Start](#quick-start)", "- [About](#about)", "  - [Philosophy](#philosophy)", "  - [Installation](#installation)", "- [Manual](/commitlog/manual)", "- [License](#license)", "", "<h4 id=\"quick-start\">Quick Start</h4>", "", "For the one's who already know the tool and wanna get started quickly.", "", "You can get the CLI in the following ways", "", "1. You can get the binaries from the [download section](/commitlog/download)", "", "2. Using `go get`", "", "```sh", "go get -u github.com/barelyhuman/commitlog", "```", "", "3. Using goblin", "", "```sh", "curl -sf https://goblin.run/github.com/barelyhuman/commitlog | sh", "```", "", "Once installed you can just run `commitlog generate` or the shorter version", "`commitlog g` to get all the changes between the recent tags.", "", "<h4 id=\"about\">About</h4>", "", "<h5 id=\"philosophy\">Philosophy</h5>", "", "**_commitlog_** simply exists because I wasn't able to find a decent enough tool", "to do this without being bound to a specific programming language and it's", "toolset. The closes one to this is the `git`'s own `shortlog` and `log` commands", "", "- **Language Agnostic** - No one needs the entire programming toolset or the", "  language to be setup on the system to be able to just generate logs", "", "- **Decently Sized** - Not everyone has a powerful system and CI systems are", "  still very limited in terms of resources since they give you shared spaces and", "  automating generating this is a common practice so it doesn't make sense for", "  it to install a runtime worth 100MB to run it.", "", "  The binary itself is around 10-13MB which is fairly big for a tool like this", "  but this is due to go's nature of embedding the platform runtime with the", "  binary and this might not be ideal for some and so there's another similar", "  smaller scoped version [nimclog](https://github.com/barelyhuman/nimclog) which", "  is in KB's", "", "- **Flexible** - There are no set standards for how you write commit messages.", "  Commitlint is a good standard and pretty widely used and also what commitlog", "  v1 used as the base for categorizing.", "", "  V2 however", " doesn't have a set commit category standard", " it accepts regex's", "  that you will categorize your commits for you.", "", "  This is more for experienced developers who have a their own pattern of", "  writing commits and would like a tool that'd work with their pattern instead", "  of creating friction", "", "- **Extensible** - The entire thing is open source and MIT licenses", "", "  specifically for you to be able to fix and add things as needed. Each command", "  has been kept away from the domain logic to be able to use `commitlog` even as", "  a library and build your own tool if you wish to", " though if there's something", "  you wish the CLI supported", " you are free to open issues and I really like", "  people helping with the development since that helps keeping the tool alive", "  longer.", "", "<h5 id=\"installation\">Installation</h5>", "", "The installation is pretty straightforwad. You [download](/commitlog/download) the binary", "from the download section of this website or use something like", "[goblin](https://goblin.run) to build the binary for your specific", "system (rarely needed) since the releases actually accommodate the most used", "operating systems and architectures already.", "", "**Goblin**", "", "If using something like goblin", " you'll have to request for the latest go module based version", "which can be requested like so", "", "```sh", "curl -sf http://goblin.run/github.com/barelyhuman/commitlog/v3@v3 | sh", "```", "", "**Linux/Mac (Unix Systems)**", "", "Once downloaded", " you can use the `install` command on \\*nix systems to link the", "binary to a location that's already in your PATH variable.", "", "eg:", "", "```bash", "# install commitlog from current directory to the /usr/local/bin directory", "install $(pwd)/commitlog /usr/local/bin", "```", "", "This should give you the ability to use the `commitlog` command anywhere in your", "system", "", "**Windows**", "", "Similar to the linux setup", " you can download the `.exe` file and add it to a", "location that your environment path already has. An easier thing to do is to", "store the entire thing in your secondary partition and add that location to your", "PATH. You can use this resource from Java docs to help you with modifying the", "PATH variables", "", "- [Modifying PATH in Windows](https://www.java.com/en/download/help/path.html)", "", "<h4 id=\"manual\">Manual</h4>", "", "[Read Manual &rarr;](/commitlog/manual)", "", "<h4 id=\"license\">License</h4>", "", "commitlog is MIT Licensed and you can read the entire license in the", "[source code](https://github.com/barelyhuman/commitlog)", ""]}, {"title": "docs/manual.md", "slug": "manual.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# Manual", "", "- [Basics](#basics)", "  - [generate](#generate)", "  - [release](#release)", "- [Advanced](#advanced)", "  - [Selective Log Ranges](#selective-log-ranges)", "  - [From a different repo](#from-a-different-repo)", "  - [Categorize](#categorize)", "- [CLI](#cli)", "- [API](/commitlog/api)", "", "<h3 id=\"basics\">Basics</h3>", "", "**_`commitlog`_** come with 2 basic functionalities", "", "- Generating commits as changelogs in markdown", "- Managing your version and tags", "", "Both the above are available as sub commands and we'll go through each one by", "one.", "", "Just running `commitlog` no longer works as it did in v1", " you'll need to specify", "a sub command to get it working.", "", "This has been done to keep it simpler to keep arbitrary behaviour to a minimum", "", "<h4 id=\"generate\">generate</h3>", "", "The first one is `generate` and in most cases you'll just be using this to", "handle generation of commits as a list of markdown notes", "", "Here's an example of what it'll look like to run the `generate` sub-command", "", "```sh", "$ commitlog generate", "# or ", "$ commitlog g", "```", "", "**Output**:", "", "```md", "## All Changes", "87ce3fc76b252908cdd81f9537713f8d67813652 chore: v2.0.0-beta.0", "", "09fc85c0d1d52d770bbbf39ac45907103a53d354 refactor: swap go-git for push with exec", "", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "909fd032facdeb4fb7633a4fad82dced28e8de83 chore: swap debugging logger with stderr printer", "<!-- .... more commits till the end of tag -->", "```", "", "The behaviour of the `generate` command is like so", "", "- go through all commits from the current `HEAD` (commit with the `HEAD`", "  reference) till the last commit or the most recent tagged commit.", "- the other case is where if the latest commit is also a tagged commit", " it'll", "  still go till the most recent tagged commit.", "", "  eg: v0.0.2 -> HEAD", " v0.0.1 -> SOMEHASH", " would give you the commits between", "  both the tags.", "", "The default behaviour of **_commitlog_** is to print to the stdout of your", "terminal which might not be what you wish to do.", "", "So", " if you wish to ever write to a file ", " you can use the `--out FILE` flag to", "write the output to a file instead.", "", "```sh", "$ commitlog g -o ./CHANGELOG.md", "```", "", "> **Note**: commitlog will overwrite the file with the new output", " make sure you", "> create a backup of the file when working with this.", "", "> **Note**: In coming versions an append mode will be added to the CLI to avoid", "> having to deal with this manually", "", "<h4 id=\"release\">release</h3>", "", "The `release` sub-command is a complimentary sub-command added to commitlog to", "help you with managing release versions. I understand that most languages have", "their own package version management and you might want to work with them but", "that's also why the `release` sub-command isn't something you need", " it's there", "for cases where you might wanna use it.", "", "My primary usecase is when working with repositories that work with multiple", "languages and I'd prefer a unified version.", "", "The `release` command doesn't modify your source code files but instead handles", "the version with it's own file named `.commitlog.release`", " which just holds the", "**version** number right now and while this does have the X.X.X format (semantic", "versioning format) the increments or how you handle them doesn't have to be.", "", "The command is flexible enough for you to combine and create your own way of", "versioning.", "", "##### Initialize", "", "```sh", "$ commitlog release --init", "# or ", "$ commitlog r --init", "```", "", "Once initialized", " you'll see a `.commitlog.release` file in your repo with the", "version `v0.0.0` to start with.", "", "##### Increments", "", "Post that you can use the remaining flags to help you incrementing the version", "as needed.", "", "```sh", "$ commitlog r --major # change to v1.0.0", "$ commitlog r --minor # change to v0.1.0", "$ commitlog r --patch # change to v0.0.1", "$ commitlog r --pre # change to v0.0.0-beta.0", "$ commitlog r --pre --pre-tag=\"dev\" # change to v0.0.0-dev.0", "", "# or go bonkers ", "$ commitlog r --patch --pre --pre-tag=\"dev\" # change to v0.0.1-dev.0", "$ commitlog r --major --patch --pre --pre-tag=\"dev\" # change to v1.0.1-dev.0", "```", "", "#### Git actions", "", "Most times you'd also want a tool like this to create commits and tags for you", "which is fair", " so `release` does come with a few git actions.", "", "- `--commit` (will create a commit and tag it for you)", "- `--push` (will push the commits and tags for you)", "", "The whole command would look a little something like this", "", "```sh", "$ commitlog r --patch --commit --push", "```", "", "<h3 id=\"advanced\">Advanced</h3>", "", "These are not really hard to guess or achieve but are in the advanced section as", "this isn't something a beginner user might need to mess with. If you have other", "use cases that you feel like should be added here", " raise a issue.", "", "<h4 id=\"selective-log-ranges\">Selective Log Ranges</h4>", "There's enough cases where the entire history between the tags makes no sense. You might just want a specific set of commits and this is very easy to do with commitlog", "", "```sh", "$ commitlog g --start HEAD --end HEAD~3 ", "# would return the last 3 commits", "```", "", "And as you might have understood", " commitlog does work with git's revision system", "so you can reuse git's own revision pointers as needed. Though it's mostly", "easier to just use the HASH since", " finding the hashes in `git log` is easier", "than finding the number you have to type after the `HEAD~`", "", "<h4 id=\"from-a-different-repo\">From a different repo</h4>", "A lot more often you might need to generate logs for a sub-repo when working with a huge multirepo folder which a lot of sub-modules and switching worktree for the changelog might not be something you wish to do.", "", "In cases like these the `-p` or `--path` flag can be used with the `generate`", "flag", "", "```sh", "$ commitlog g -p ./sub/module -s HEAD~3 ", "# would return the commits from HEAD~3 to the next tag or end of all commits.", "```", "", "<h4 id=\"categorize\">Categorize</h4>", "You wouldn't be using commitlog otherwise so this obviously has to exist.", "", "As for why is this turned off by default? I just don't use commit standards and", "mostly just need the commits between tags and very rarely need the categories to", "help me but doesn't change the fact that someone else might need it.", "", "So", " how does commitlog categorize? using regex's ", " or more like comma seperated", "regex's.", "", "The implementation approach might bring some issue but I'm going to wait for", "them instead of over fixing something that might never really happen.", "", "Anyway", " a simple example for a non-scoped commitlint styled categorization would", "look something like this .", "", "```sh", "$ commitlog g --categories=\"feat:", "fix:\"", "```", "", "**Output:**", "", "```md", "## feat:", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## fix:", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "```", "", "This could be made a little more neater using a better regex like so", "", "```sh", "$ commitlog g --categories=\"^feat", "^fix\"", "```", "", "**Output**:", "", "```md", "## ^feat", "e0ce9c693c554158b7b4841b799524164d9c3e83 feat(releaser): add init and pre-tag handlers", "", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## ^fix", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "540bb3d7419aab314fdb999dd57eeac3c53f5fad fix doc generation", "", "87d40ddbd463ad71b3af8b7edb8ac8176ecbf2f5 fix tests for new param", "```", "", "As visible", " you find more commits in the 2nd one since the regex matches more", "cases and gives you more information. You are free to modify these to make them", "work with other patterns that you might follow.", "", "Also the titles are going to be the regex's you pass. A future version will add", "a way for you to add label's to the regex though that's a little harder to", "achieve without making the flags very verbose so I've avoided it for now.", "", "> **Note**: This is the initial implementation of this and might change in a", "> future major version since this flag feels a little more frictional than the", "> other approaches I have in mind. Feel free to recommend other ways to do this.", "", "<h3 id=\"cli\">CLI</h3>", "", "This is the entire CLI reference", " which you can also access by using the `-h`", "flag on the downloaded binary.", "", "**`commitlog -h`**", "", "```", "NAME:", "   commitlog - commits to changelogs", "", "USAGE:", "   commitlog [global options] command [command options] [arguments...]", "", "COMMANDS:", "   generate", " g  commits to changelogs", "   release", " r   manage .commitlog.release version", "   help", " h      Shows a list of commands or help for one command", "", "GLOBAL OPTIONS:", "   --help", " -h  show help (default: false)", "```", "", "---", "", "**`commitlog g -h`**", "", "```", "NAME:", "   commitlog generate - commits to changelogs", "", "USAGE:", "   commitlog generate [command options] [arguments...]", "", "OPTIONS:", "   --categories value       categories to use", " includes all commits by default. any text you add here will be used to create categories out of the commits", "   --end END", " -e END        END reference for the commit to stop including commits at.This is exclusive of the given commit reference", "   --out FILE", " -o FILE      path to the output FILE", "   --path PATH", " -p PATH     root with the '.git' folder PATH (default: \".\")", "   --promo                  add promo text to the end of output (default: false)", "   --start START", " -s START  START reference for the commit to include commits from", "This is inclusive of the given commit reference", "   --stdio                  print to the stdout (default: true)", "```", "", "---", "", "**`commitlog r -h`**", "", "```", "NAME:", "   commitlog release - manage .commitlog.release version", "", "USAGE:", "   commitlog release [command options] [arguments...]", "", "OPTIONS:", "   --commit              if true will create a commit and tag", " of the changed version (default: false)", "   --init                initialise commitlog release (default: false)", "   --major               create a major version (default: false)", "   --minor               create a minor version (default: false)", "   --patch               create a patch version (default: false)", "   --path PATH", " -p PATH  PATH to a folder where .commitlog.release exists or is to be created.(note: do not use `--commit` or `--push` if the file isn't in the root) (default: \".\")", "   --pre                 create a pre-release version. will default to patch increment unlessspecified and not already a pre-release (default: false)", "   --pre-tag value       create a pre-release version (default: \"beta\")", "   --push                if true will create push the created release commit + tag on origin (default: false)", "```", ""]}]
\ No newline at end of file
+[{"title": "docs/download.md", "slug": "download.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | downloads", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Downloads", "", "[commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-386.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-386.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-386.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-386.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-amd64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-amd64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-arm64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-arm64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-windows-386.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-386.zip)    ", "[commitlog-v2.0.6-beta.0-windows-386.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-386.zip.md5)    ", "[commitlog-v2.0.6-beta.0-windows-amd64.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-amd64.zip)    ", "[commitlog-v2.0.6-beta.0-windows-amd64.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-amd64.zip.md5)    ", ""]}, {"title": "docs/api.md", "slug": "api.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# API", "", "### General Guide", "", "commitlog also comes as a pkg that you could reuse to modify the behaviour of", "the commands and this is very limited at the moment since I'm still working on", "the best way to get plugins to work with the original CLI instead of having to", "write your own version of commitlog.", "", "The pkg contains the 2 base command's creators and behaviour modifiers", " or more", "commonly known as the golang options pattern.", "", "Briefly put", " You have one function that takes in unlimited amount of functions", "as parameter with each of these parameter functions being able to modify the", "behaviour of the returned instance.", "", "Easy way to explain this is with an example of the `releaser` API", "", "```go", "package main", "", "import (", "", "\"log\"", "", "", "\"github.com/barelyhuman/commitlog/v3/pkg\"", ")", "", "func main() {", "", "versionString := \"v0.0.1\"", "", "releaser", " _ := pkg.CreateNewReleaser(", "", "", "versionString", "", "", "", "pkg.WithMajorIncrement()", "", "", ")", "", "", "log.Println(releaser.String())", "", "}", "```", "", "here the `pkg.CreateNewReleaser` takes in one mandatory value which is the", "`versionString` and the 2nd parameter is optional here.", "", "Though", " since we wish for the releaser to have a custom behaviour everytime the", "flags change", " instead of writing entire functionalities inside various releaser", "functions", " which would look like so", "", "```go", "releaser.IncrementMajor()", "releaser.IncrementMinor()", "```", "", "I'd be unable to expose the builders / option functions out to the public for", "them to write custom behaviours that work directly with the `struct` being used", "by commitlog itself and instead you'd be writing wrappers around existing", "functions. Thus", " adding another layer of abstraction which isn't needed for", "something that wants to be extended.", "", "This approach gives me the ability to expose a selected few properties for you", "to modify while writing your own builder/option function.", "", "The only pointer functions that releaser has is the one's that'll help with", "printing or identifying the final version's state.", "", "Since", " you now know how the API is written", " the go doc for this module should be", "able to help you with the remaining.", "", "[godoc&nearr;](https://pkg.go.dev/github.com/barelyhuman/commitlog)", "", "> **Note**: if the go doc still hasn't been generated for v2.0.0", " please go", "> through the source code to help you with the implementation details", ""]}, {"title": "docs/index.md", "slug": "index.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Index", "", "- [Source](https://github.com/barelyhuman/commitlog)", "- [Quick Start](#quick-start)", "- [About](#about)", "  - [Philosophy](#philosophy)", "  - [Installation](#installation)", "- [Manual](/commitlog/manual)", "- [License](#license)", "", "<h4 id=\"quick-start\">Quick Start</h4>", "", "For the one's who already know the tool and wanna get started quickly.", "", "You can get the CLI in the following ways", "", "1. You can get the binaries from the [download section](/commitlog/download)", "", "2. Using `go get`", "", "```sh", "go get -u github.com/barelyhuman/commitlog/v3", "```", "", "3. Using goblin", "", "```sh", "curl -sf https://goblin.run/github.com/barelyhuman/commitlog/v3@v3 | sh", "```", "", "Once installed you can just run `commitlog generate` or the shorter version", "`commitlog g` to get all the changes between the recent tags.", "", "<h4 id=\"about\">About</h4>", "", "<h5 id=\"philosophy\">Philosophy</h5>", "", "**_commitlog_** simply exists because I wasn't able to find a decent enough tool", "to do this without being bound to a specific programming language and it's", "toolset. The closes one to this is the `git`'s own `shortlog` and `log` commands", "", "- **Language Agnostic** - No one needs the entire programming toolset or the", "  language to be setup on the system to be able to just generate logs", "", "- **Decently Sized** - Not everyone has a powerful system and CI systems are", "  still very limited in terms of resources since they give you shared spaces and", "  automating generating this is a common practice so it doesn't make sense for", "  it to install a runtime worth 100MB to run it.", "", "  The binary itself is around 10-13MB which is fairly big for a tool like this", "  but this is due to go's nature of embedding the platform runtime with the", "  binary and this might not be ideal for some and so there's another similar", "  smaller scoped version [nimclog](https://github.com/barelyhuman/nimclog) which", "  is in KB's", "", "- **Flexible** - There are no set standards for how you write commit messages.", "  Commitlint is a good standard and pretty widely used and also what commitlog", "  v1 used as the base for categorizing.", "", "  V2 however", " doesn't have a set commit category standard", " it accepts regex's", "  that you will categorize your commits for you.", "", "  This is more for experienced developers who have a their own pattern of", "  writing commits and would like a tool that'd work with their pattern instead", "  of creating friction", "", "- **Extensible** - The entire thing is open source and MIT licenses", "", "  specifically for you to be able to fix and add things as needed. Each command", "  has been kept away from the domain logic to be able to use `commitlog` even as", "  a library and build your own tool if you wish to", " though if there's something", "  you wish the CLI supported", " you are free to open issues and I really like", "  people helping with the development since that helps keeping the tool alive", "  longer.", "", "<h5 id=\"installation\">Installation</h5>", "", "The installation is pretty straightforwad. You [download](/commitlog/download) the binary", "from the download section of this website or use something like", "[goblin](https://goblin.run) to build the binary for your specific", "system (rarely needed) since the releases actually accommodate the most used", "operating systems and architectures already.", "", "**Linux/Mac (Unix Systems)**", "", "Once downloaded", " you can use the `install` command on \\*nix systems to link the", "binary to a location that's already in your PATH variable.", "", "eg:", "", "```bash", "# install commitlog from current directory to the /usr/local/bin directory", "install $(pwd)/commitlog /usr/local/bin", "```", "", "This should give you the ability to use the `commitlog` command anywhere in your", "system", "", "**Windows**", "", "Similar to the linux setup", " you can download the `.exe` file and add it to a", "location that your environment path already has. An easier thing to do is to", "store the entire thing in your secondary partition and add that location to your", "PATH. You can use this resource from Java docs to help you with modifying the", "PATH variables", "", "- [Modifying PATH in Windows](https://www.java.com/en/download/help/path.html)", "", "<h4 id=\"manual\">Manual</h4>", "", "[Read Manual &rarr;](/commitlog/manual)", "", "<h4 id=\"license\">License</h4>", "", "commitlog is MIT Licensed and you can read the entire license in the", "[source code](https://github.com/barelyhuman/commitlog)", ""]}, {"title": "docs/manual.md", "slug": "manual.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# Manual", "", "- [Basics](#basics)", "  - [generate](#generate)", "  - [release](#release)", "- [Advanced](#advanced)", "  - [Selective Log Ranges](#selective-log-ranges)", "  - [From a different repo](#from-a-different-repo)", "  - [Categorize](#categorize)", "- [CLI](#cli)", "- [API](/commitlog/api)", "", "<h3 id=\"basics\">Basics</h3>", "", "**_`commitlog`_** come with 2 basic functionalities", "", "- Generating commits as changelogs in markdown", "- Managing your version and tags", "", "Both the above are available as sub commands and we'll go through each one by", "one.", "", "Just running `commitlog` no longer works as it did in v1", " you'll need to specify", "a sub command to get it working.", "", "This has been done to keep it simpler to keep arbitrary behaviour to a minimum", "", "<h4 id=\"generate\">generate</h3>", "", "The first one is `generate` and in most cases you'll just be using this to", "handle generation of commits as a list of markdown notes", "", "Here's an example of what it'll look like to run the `generate` sub-command", "", "```sh", "$ commitlog generate", "# or ", "$ commitlog g", "```", "", "**Output**:", "", "```md", "## All Changes", "87ce3fc76b252908cdd81f9537713f8d67813652 chore: v2.0.0-beta.0", "", "09fc85c0d1d52d770bbbf39ac45907103a53d354 refactor: swap go-git for push with exec", "", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "909fd032facdeb4fb7633a4fad82dced28e8de83 chore: swap debugging logger with stderr printer", "<!-- .... more commits till the end of tag -->", "```", "", "The behaviour of the `generate` command is like so", "", "- go through all commits from the current `HEAD` (commit with the `HEAD`", "  reference) till the last commit or the most recent tagged commit.", "- the other case is where if the latest commit is also a tagged commit", " it'll", "  still go till the most recent tagged commit.", "", "  eg: v0.0.2 -> HEAD", " v0.0.1 -> SOMEHASH", " would give you the commits between", "  both the tags.", "", "The default behaviour of **_commitlog_** is to print to the stdout of your", "terminal which might not be what you wish to do.", "", "So", " if you wish to ever write to a file ", " you can use the `--out FILE` flag to", "write the output to a file instead.", "", "```sh", "$ commitlog g -o ./CHANGELOG.md", "```", "", "> **Note**: commitlog will overwrite the file with the new output", " make sure you", "> create a backup of the file when working with this.", "", "> **Note**: In coming versions an append mode will be added to the CLI to avoid", "> having to deal with this manually", "", "<h4 id=\"release\">release</h3>", "", "The `release` sub-command is a complimentary sub-command added to commitlog to", "help you with managing release versions. I understand that most languages have", "their own package version management and you might want to work with them but", "that's also why the `release` sub-command isn't something you need", " it's there", "for cases where you might wanna use it.", "", "My primary usecase is when working with repositories that work with multiple", "languages and I'd prefer a unified version.", "", "The `release` command doesn't modify your source code files but instead handles", "the version with it's own file named `.commitlog.release`", " which just holds the", "**version** number right now and while this does have the X.X.X format (semantic", "versioning format) the increments or how you handle them doesn't have to be.", "", "The command is flexible enough for you to combine and create your own way of", "versioning.", "", "##### Initialize", "", "```sh", "$ commitlog release --init", "# or ", "$ commitlog r --init", "```", "", "Once initialized", " you'll see a `.commitlog.release` file in your repo with the", "version `v0.0.0` to start with.", "", "##### Increments", "", "Post that you can use the remaining flags to help you incrementing the version", "as needed.", "", "```sh", "$ commitlog r --major # change to v1.0.0", "$ commitlog r --minor # change to v0.1.0", "$ commitlog r --patch # change to v0.0.1", "$ commitlog r --pre # change to v0.0.0-beta.0", "$ commitlog r --pre --pre-tag=\"dev\" # change to v0.0.0-dev.0", "", "# or go bonkers ", "$ commitlog r --patch --pre --pre-tag=\"dev\" # change to v0.0.1-dev.0", "$ commitlog r --major --patch --pre --pre-tag=\"dev\" # change to v1.0.1-dev.0", "```", "", "#### Git actions", "", "Most times you'd also want a tool like this to create commits and tags for you", "which is fair", " so `release` does come with a few git actions.", "", "- `--commit` (will create a commit and tag it for you)", "- `--push` (will push the commits and tags for you)", "", "The whole command would look a little something like this", "", "```sh", "$ commitlog r --patch --commit --push", "```", "", "<h3 id=\"advanced\">Advanced</h3>", "", "These are not really hard to guess or achieve but are in the advanced section as", "this isn't something a beginner user might need to mess with. If you have other", "use cases that you feel like should be added here", " raise a issue.", "", "<h4 id=\"selective-log-ranges\">Selective Log Ranges</h4>", "There's enough cases where the entire history between the tags makes no sense. You might just want a specific set of commits and this is very easy to do with commitlog", "", "```sh", "$ commitlog g --start HEAD --end HEAD~3 ", "# would return the last 3 commits", "```", "", "And as you might have understood", " commitlog does work with git's revision system", "so you can reuse git's own revision pointers as needed. Though it's mostly", "easier to just use the HASH since", " finding the hashes in `git log` is easier", "than finding the number you have to type after the `HEAD~`", "", "<h4 id=\"from-a-different-repo\">From a different repo</h4>", "A lot more often you might need to generate logs for a sub-repo when working with a huge multirepo folder which a lot of sub-modules and switching worktree for the changelog might not be something you wish to do.", "", "In cases like these the `-p` or `--path` flag can be used with the `generate`", "flag", "", "```sh", "$ commitlog g -p ./sub/module -s HEAD~3 ", "# would return the commits from HEAD~3 to the next tag or end of all commits.", "```", "", "<h4 id=\"categorize\">Categorize</h4>", "You wouldn't be using commitlog otherwise so this obviously has to exist.", "", "As for why is this turned off by default? I just don't use commit standards and", "mostly just need the commits between tags and very rarely need the categories to", "help me but doesn't change the fact that someone else might need it.", "", "So", " how does commitlog categorize? using regex's ", " or more like comma seperated", "regex's.", "", "The implementation approach might bring some issue but I'm going to wait for", "them instead of over fixing something that might never really happen.", "", "Anyway", " a simple example for a non-scoped commitlint styled categorization would", "look something like this .", "", "```sh", "$ commitlog g --categories=\"feat:", "fix:\"", "```", "", "**Output:**", "", "```md", "## feat:", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## fix:", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "```", "", "This could be made a little more neater using a better regex like so", "", "```sh", "$ commitlog g --categories=\"^feat", "^fix\"", "```", "", "**Output**:", "", "```md", "## ^feat", "e0ce9c693c554158b7b4841b799524164d9c3e83 feat(releaser): add init and pre-tag handlers", "", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## ^fix", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "540bb3d7419aab314fdb999dd57eeac3c53f5fad fix doc generation", "", "87d40ddbd463ad71b3af8b7edb8ac8176ecbf2f5 fix tests for new param", "```", "", "As visible", " you find more commits in the 2nd one since the regex matches more", "cases and gives you more information. You are free to modify these to make them", "work with other patterns that you might follow.", "", "Also the titles are going to be the regex's you pass. A future version will add", "a way for you to add label's to the regex though that's a little harder to", "achieve without making the flags very verbose so I've avoided it for now.", "", "> **Note**: This is the initial implementation of this and might change in a", "> future major version since this flag feels a little more frictional than the", "> other approaches I have in mind. Feel free to recommend other ways to do this.", "", "<h3 id=\"cli\">CLI</h3>", "", "This is the entire CLI reference", " which you can also access by using the `-h`", "flag on the downloaded binary.", "", "**`commitlog -h`**", "", "```", "NAME:", "   commitlog - commits to changelogs", "", "USAGE:", "   commitlog [global options] command [command options] [arguments...]", "", "COMMANDS:", "   generate", " g  commits to changelogs", "   release", " r   manage .commitlog.release version", "   help", " h      Shows a list of commands or help for one command", "", "GLOBAL OPTIONS:", "   --help", " -h  show help (default: false)", "```", "", "---", "", "**`commitlog g -h`**", "", "```", "NAME:", "   commitlog generate - commits to changelogs", "", "USAGE:", "   commitlog generate [command options] [arguments...]", "", "OPTIONS:", "   --categories value       categories to use", " includes all commits by default. any text you add here will be used to create categories out of the commits", "   --end END", " -e END        END reference for the commit to stop including commits at.This is exclusive of the given commit reference", "   --out FILE", " -o FILE      path to the output FILE", "   --path PATH", " -p PATH     root with the '.git' folder PATH (default: \".\")", "   --promo                  add promo text to the end of output (default: false)", "   --start START", " -s START  START reference for the commit to include commits from", "This is inclusive of the given commit reference", "   --stdio                  print to the stdout (default: true)", "```", "", "---", "", "**`commitlog r -h`**", "", "```", "NAME:", "   commitlog release - manage .commitlog.release version", "", "USAGE:", "   commitlog release [command options] [arguments...]", "", "OPTIONS:", "   --commit              if true will create a commit and tag", " of the changed version (default: false)", "   --init                initialise commitlog release (default: false)", "   --major               create a major version (default: false)", "   --minor               create a minor version (default: false)", "   --patch               create a patch version (default: false)", "   --path PATH", " -p PATH  PATH to a folder where .commitlog.release exists or is to be created.(note: do not use `--commit` or `--push` if the file isn't in the root) (default: \".\")", "   --pre                 create a pre-release version. will default to patch increment unlessspecified and not already a pre-release (default: false)", "   --pre-tag value       create a pre-release version (default: \"beta\")", "   --push                if true will create push the created release commit + tag on origin (default: false)", "```", ""]}]
\ No newline at end of file

From ab1856f19aff436a312a5b8970412f5535fe24c6 Mon Sep 17 00:00:00 2001
From: barelyhuman <sidgroks@gmail.com>
Date: Wed, 30 Aug 2023 22:03:40 +0000
Subject: [PATCH 29/29] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ba?=
 =?UTF-8?q?relyhuman/commitlog@06c305b9b72c6febbac0a6a1a56b1f13604b28f9=20?=
 =?UTF-8?q?=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 download.html | 28 ++++++++++++++--------------
 search.json   |  2 +-
 2 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/download.html b/download.html
index 66dbd9b..43b98d5 100644
--- a/download.html
+++ b/download.html
@@ -7,18 +7,18 @@
 <h3><a href="/commitlog/">commitlog</a></h3>
 <p><a href="/commitlog/">Home</a> <a href="/commitlog/manual">Manual</a> <a href="/commitlog/download">Download</a> <a href="/commitlog/api">API</a></p>
 <h4>Downloads</h4>
-<p><a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz">commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz.md5">commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz.md5</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz">commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz.md5">commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz.md5</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-386.tar.gz">commitlog-v2.0.6-beta.0-linux-386.tar.gz</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-386.tar.gz.md5">commitlog-v2.0.6-beta.0-linux-386.tar.gz.md5</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-amd64.tar.gz">commitlog-v2.0.6-beta.0-linux-amd64.tar.gz</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-amd64.tar.gz.md5">commitlog-v2.0.6-beta.0-linux-amd64.tar.gz.md5</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-arm64.tar.gz">commitlog-v2.0.6-beta.0-linux-arm64.tar.gz</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-arm64.tar.gz.md5">commitlog-v2.0.6-beta.0-linux-arm64.tar.gz.md5</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-386.zip">commitlog-v2.0.6-beta.0-windows-386.zip</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-386.zip.md5">commitlog-v2.0.6-beta.0-windows-386.zip.md5</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-amd64.zip">commitlog-v2.0.6-beta.0-windows-amd64.zip</a><br />
-<a href="https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-amd64.zip.md5">commitlog-v2.0.6-beta.0-windows-amd64.zip.md5</a></p>
+<p><a href="https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-darwin-amd64.tar.gz">commitlog-v3.0.0-darwin-amd64.tar.gz</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-darwin-amd64.tar.gz.md5">commitlog-v3.0.0-darwin-amd64.tar.gz.md5</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-darwin-arm64.tar.gz">commitlog-v3.0.0-darwin-arm64.tar.gz</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-darwin-arm64.tar.gz.md5">commitlog-v3.0.0-darwin-arm64.tar.gz.md5</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-linux-386.tar.gz">commitlog-v3.0.0-linux-386.tar.gz</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-linux-386.tar.gz.md5">commitlog-v3.0.0-linux-386.tar.gz.md5</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-linux-amd64.tar.gz">commitlog-v3.0.0-linux-amd64.tar.gz</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-linux-amd64.tar.gz.md5">commitlog-v3.0.0-linux-amd64.tar.gz.md5</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-linux-arm64.tar.gz">commitlog-v3.0.0-linux-arm64.tar.gz</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-linux-arm64.tar.gz.md5">commitlog-v3.0.0-linux-arm64.tar.gz.md5</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-windows-386.zip">commitlog-v3.0.0-windows-386.zip</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-windows-386.zip.md5">commitlog-v3.0.0-windows-386.zip.md5</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-windows-amd64.zip">commitlog-v3.0.0-windows-amd64.zip</a><br />
+<a href="https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-windows-amd64.zip.md5">commitlog-v3.0.0-windows-amd64.zip.md5</a></p>
 </section></div><script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script><script>hljs.highlightAll()</script><script src="mudkip.js"></script></body></html>
\ No newline at end of file
diff --git a/search.json b/search.json
index 446f1ff..9248c97 100644
--- a/search.json
+++ b/search.json
@@ -1 +1 @@
-[{"title": "docs/download.md", "slug": "download.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | downloads", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Downloads", "", "[commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-amd64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-darwin-arm64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-386.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-386.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-386.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-386.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-amd64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-amd64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-linux-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-arm64.tar.gz)    ", "[commitlog-v2.0.6-beta.0-linux-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-linux-arm64.tar.gz.md5)    ", "[commitlog-v2.0.6-beta.0-windows-386.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-386.zip)    ", "[commitlog-v2.0.6-beta.0-windows-386.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-386.zip.md5)    ", "[commitlog-v2.0.6-beta.0-windows-amd64.zip](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-amd64.zip)    ", "[commitlog-v2.0.6-beta.0-windows-amd64.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v2.0.6-beta.0/commitlog-v2.0.6-beta.0-windows-amd64.zip.md5)    ", ""]}, {"title": "docs/api.md", "slug": "api.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# API", "", "### General Guide", "", "commitlog also comes as a pkg that you could reuse to modify the behaviour of", "the commands and this is very limited at the moment since I'm still working on", "the best way to get plugins to work with the original CLI instead of having to", "write your own version of commitlog.", "", "The pkg contains the 2 base command's creators and behaviour modifiers", " or more", "commonly known as the golang options pattern.", "", "Briefly put", " You have one function that takes in unlimited amount of functions", "as parameter with each of these parameter functions being able to modify the", "behaviour of the returned instance.", "", "Easy way to explain this is with an example of the `releaser` API", "", "```go", "package main", "", "import (", "", "\"log\"", "", "", "\"github.com/barelyhuman/commitlog/v3/pkg\"", ")", "", "func main() {", "", "versionString := \"v0.0.1\"", "", "releaser", " _ := pkg.CreateNewReleaser(", "", "", "versionString", "", "", "", "pkg.WithMajorIncrement()", "", "", ")", "", "", "log.Println(releaser.String())", "", "}", "```", "", "here the `pkg.CreateNewReleaser` takes in one mandatory value which is the", "`versionString` and the 2nd parameter is optional here.", "", "Though", " since we wish for the releaser to have a custom behaviour everytime the", "flags change", " instead of writing entire functionalities inside various releaser", "functions", " which would look like so", "", "```go", "releaser.IncrementMajor()", "releaser.IncrementMinor()", "```", "", "I'd be unable to expose the builders / option functions out to the public for", "them to write custom behaviours that work directly with the `struct` being used", "by commitlog itself and instead you'd be writing wrappers around existing", "functions. Thus", " adding another layer of abstraction which isn't needed for", "something that wants to be extended.", "", "This approach gives me the ability to expose a selected few properties for you", "to modify while writing your own builder/option function.", "", "The only pointer functions that releaser has is the one's that'll help with", "printing or identifying the final version's state.", "", "Since", " you now know how the API is written", " the go doc for this module should be", "able to help you with the remaining.", "", "[godoc&nearr;](https://pkg.go.dev/github.com/barelyhuman/commitlog)", "", "> **Note**: if the go doc still hasn't been generated for v2.0.0", " please go", "> through the source code to help you with the implementation details", ""]}, {"title": "docs/index.md", "slug": "index.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Index", "", "- [Source](https://github.com/barelyhuman/commitlog)", "- [Quick Start](#quick-start)", "- [About](#about)", "  - [Philosophy](#philosophy)", "  - [Installation](#installation)", "- [Manual](/commitlog/manual)", "- [License](#license)", "", "<h4 id=\"quick-start\">Quick Start</h4>", "", "For the one's who already know the tool and wanna get started quickly.", "", "You can get the CLI in the following ways", "", "1. You can get the binaries from the [download section](/commitlog/download)", "", "2. Using `go get`", "", "```sh", "go get -u github.com/barelyhuman/commitlog/v3", "```", "", "3. Using goblin", "", "```sh", "curl -sf https://goblin.run/github.com/barelyhuman/commitlog/v3@v3 | sh", "```", "", "Once installed you can just run `commitlog generate` or the shorter version", "`commitlog g` to get all the changes between the recent tags.", "", "<h4 id=\"about\">About</h4>", "", "<h5 id=\"philosophy\">Philosophy</h5>", "", "**_commitlog_** simply exists because I wasn't able to find a decent enough tool", "to do this without being bound to a specific programming language and it's", "toolset. The closes one to this is the `git`'s own `shortlog` and `log` commands", "", "- **Language Agnostic** - No one needs the entire programming toolset or the", "  language to be setup on the system to be able to just generate logs", "", "- **Decently Sized** - Not everyone has a powerful system and CI systems are", "  still very limited in terms of resources since they give you shared spaces and", "  automating generating this is a common practice so it doesn't make sense for", "  it to install a runtime worth 100MB to run it.", "", "  The binary itself is around 10-13MB which is fairly big for a tool like this", "  but this is due to go's nature of embedding the platform runtime with the", "  binary and this might not be ideal for some and so there's another similar", "  smaller scoped version [nimclog](https://github.com/barelyhuman/nimclog) which", "  is in KB's", "", "- **Flexible** - There are no set standards for how you write commit messages.", "  Commitlint is a good standard and pretty widely used and also what commitlog", "  v1 used as the base for categorizing.", "", "  V2 however", " doesn't have a set commit category standard", " it accepts regex's", "  that you will categorize your commits for you.", "", "  This is more for experienced developers who have a their own pattern of", "  writing commits and would like a tool that'd work with their pattern instead", "  of creating friction", "", "- **Extensible** - The entire thing is open source and MIT licenses", "", "  specifically for you to be able to fix and add things as needed. Each command", "  has been kept away from the domain logic to be able to use `commitlog` even as", "  a library and build your own tool if you wish to", " though if there's something", "  you wish the CLI supported", " you are free to open issues and I really like", "  people helping with the development since that helps keeping the tool alive", "  longer.", "", "<h5 id=\"installation\">Installation</h5>", "", "The installation is pretty straightforwad. You [download](/commitlog/download) the binary", "from the download section of this website or use something like", "[goblin](https://goblin.run) to build the binary for your specific", "system (rarely needed) since the releases actually accommodate the most used", "operating systems and architectures already.", "", "**Linux/Mac (Unix Systems)**", "", "Once downloaded", " you can use the `install` command on \\*nix systems to link the", "binary to a location that's already in your PATH variable.", "", "eg:", "", "```bash", "# install commitlog from current directory to the /usr/local/bin directory", "install $(pwd)/commitlog /usr/local/bin", "```", "", "This should give you the ability to use the `commitlog` command anywhere in your", "system", "", "**Windows**", "", "Similar to the linux setup", " you can download the `.exe` file and add it to a", "location that your environment path already has. An easier thing to do is to", "store the entire thing in your secondary partition and add that location to your", "PATH. You can use this resource from Java docs to help you with modifying the", "PATH variables", "", "- [Modifying PATH in Windows](https://www.java.com/en/download/help/path.html)", "", "<h4 id=\"manual\">Manual</h4>", "", "[Read Manual &rarr;](/commitlog/manual)", "", "<h4 id=\"license\">License</h4>", "", "commitlog is MIT Licensed and you can read the entire license in the", "[source code](https://github.com/barelyhuman/commitlog)", ""]}, {"title": "docs/manual.md", "slug": "manual.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# Manual", "", "- [Basics](#basics)", "  - [generate](#generate)", "  - [release](#release)", "- [Advanced](#advanced)", "  - [Selective Log Ranges](#selective-log-ranges)", "  - [From a different repo](#from-a-different-repo)", "  - [Categorize](#categorize)", "- [CLI](#cli)", "- [API](/commitlog/api)", "", "<h3 id=\"basics\">Basics</h3>", "", "**_`commitlog`_** come with 2 basic functionalities", "", "- Generating commits as changelogs in markdown", "- Managing your version and tags", "", "Both the above are available as sub commands and we'll go through each one by", "one.", "", "Just running `commitlog` no longer works as it did in v1", " you'll need to specify", "a sub command to get it working.", "", "This has been done to keep it simpler to keep arbitrary behaviour to a minimum", "", "<h4 id=\"generate\">generate</h3>", "", "The first one is `generate` and in most cases you'll just be using this to", "handle generation of commits as a list of markdown notes", "", "Here's an example of what it'll look like to run the `generate` sub-command", "", "```sh", "$ commitlog generate", "# or ", "$ commitlog g", "```", "", "**Output**:", "", "```md", "## All Changes", "87ce3fc76b252908cdd81f9537713f8d67813652 chore: v2.0.0-beta.0", "", "09fc85c0d1d52d770bbbf39ac45907103a53d354 refactor: swap go-git for push with exec", "", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "909fd032facdeb4fb7633a4fad82dced28e8de83 chore: swap debugging logger with stderr printer", "<!-- .... more commits till the end of tag -->", "```", "", "The behaviour of the `generate` command is like so", "", "- go through all commits from the current `HEAD` (commit with the `HEAD`", "  reference) till the last commit or the most recent tagged commit.", "- the other case is where if the latest commit is also a tagged commit", " it'll", "  still go till the most recent tagged commit.", "", "  eg: v0.0.2 -> HEAD", " v0.0.1 -> SOMEHASH", " would give you the commits between", "  both the tags.", "", "The default behaviour of **_commitlog_** is to print to the stdout of your", "terminal which might not be what you wish to do.", "", "So", " if you wish to ever write to a file ", " you can use the `--out FILE` flag to", "write the output to a file instead.", "", "```sh", "$ commitlog g -o ./CHANGELOG.md", "```", "", "> **Note**: commitlog will overwrite the file with the new output", " make sure you", "> create a backup of the file when working with this.", "", "> **Note**: In coming versions an append mode will be added to the CLI to avoid", "> having to deal with this manually", "", "<h4 id=\"release\">release</h3>", "", "The `release` sub-command is a complimentary sub-command added to commitlog to", "help you with managing release versions. I understand that most languages have", "their own package version management and you might want to work with them but", "that's also why the `release` sub-command isn't something you need", " it's there", "for cases where you might wanna use it.", "", "My primary usecase is when working with repositories that work with multiple", "languages and I'd prefer a unified version.", "", "The `release` command doesn't modify your source code files but instead handles", "the version with it's own file named `.commitlog.release`", " which just holds the", "**version** number right now and while this does have the X.X.X format (semantic", "versioning format) the increments or how you handle them doesn't have to be.", "", "The command is flexible enough for you to combine and create your own way of", "versioning.", "", "##### Initialize", "", "```sh", "$ commitlog release --init", "# or ", "$ commitlog r --init", "```", "", "Once initialized", " you'll see a `.commitlog.release` file in your repo with the", "version `v0.0.0` to start with.", "", "##### Increments", "", "Post that you can use the remaining flags to help you incrementing the version", "as needed.", "", "```sh", "$ commitlog r --major # change to v1.0.0", "$ commitlog r --minor # change to v0.1.0", "$ commitlog r --patch # change to v0.0.1", "$ commitlog r --pre # change to v0.0.0-beta.0", "$ commitlog r --pre --pre-tag=\"dev\" # change to v0.0.0-dev.0", "", "# or go bonkers ", "$ commitlog r --patch --pre --pre-tag=\"dev\" # change to v0.0.1-dev.0", "$ commitlog r --major --patch --pre --pre-tag=\"dev\" # change to v1.0.1-dev.0", "```", "", "#### Git actions", "", "Most times you'd also want a tool like this to create commits and tags for you", "which is fair", " so `release` does come with a few git actions.", "", "- `--commit` (will create a commit and tag it for you)", "- `--push` (will push the commits and tags for you)", "", "The whole command would look a little something like this", "", "```sh", "$ commitlog r --patch --commit --push", "```", "", "<h3 id=\"advanced\">Advanced</h3>", "", "These are not really hard to guess or achieve but are in the advanced section as", "this isn't something a beginner user might need to mess with. If you have other", "use cases that you feel like should be added here", " raise a issue.", "", "<h4 id=\"selective-log-ranges\">Selective Log Ranges</h4>", "There's enough cases where the entire history between the tags makes no sense. You might just want a specific set of commits and this is very easy to do with commitlog", "", "```sh", "$ commitlog g --start HEAD --end HEAD~3 ", "# would return the last 3 commits", "```", "", "And as you might have understood", " commitlog does work with git's revision system", "so you can reuse git's own revision pointers as needed. Though it's mostly", "easier to just use the HASH since", " finding the hashes in `git log` is easier", "than finding the number you have to type after the `HEAD~`", "", "<h4 id=\"from-a-different-repo\">From a different repo</h4>", "A lot more often you might need to generate logs for a sub-repo when working with a huge multirepo folder which a lot of sub-modules and switching worktree for the changelog might not be something you wish to do.", "", "In cases like these the `-p` or `--path` flag can be used with the `generate`", "flag", "", "```sh", "$ commitlog g -p ./sub/module -s HEAD~3 ", "# would return the commits from HEAD~3 to the next tag or end of all commits.", "```", "", "<h4 id=\"categorize\">Categorize</h4>", "You wouldn't be using commitlog otherwise so this obviously has to exist.", "", "As for why is this turned off by default? I just don't use commit standards and", "mostly just need the commits between tags and very rarely need the categories to", "help me but doesn't change the fact that someone else might need it.", "", "So", " how does commitlog categorize? using regex's ", " or more like comma seperated", "regex's.", "", "The implementation approach might bring some issue but I'm going to wait for", "them instead of over fixing something that might never really happen.", "", "Anyway", " a simple example for a non-scoped commitlint styled categorization would", "look something like this .", "", "```sh", "$ commitlog g --categories=\"feat:", "fix:\"", "```", "", "**Output:**", "", "```md", "## feat:", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## fix:", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "```", "", "This could be made a little more neater using a better regex like so", "", "```sh", "$ commitlog g --categories=\"^feat", "^fix\"", "```", "", "**Output**:", "", "```md", "## ^feat", "e0ce9c693c554158b7b4841b799524164d9c3e83 feat(releaser): add init and pre-tag handlers", "", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## ^fix", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "540bb3d7419aab314fdb999dd57eeac3c53f5fad fix doc generation", "", "87d40ddbd463ad71b3af8b7edb8ac8176ecbf2f5 fix tests for new param", "```", "", "As visible", " you find more commits in the 2nd one since the regex matches more", "cases and gives you more information. You are free to modify these to make them", "work with other patterns that you might follow.", "", "Also the titles are going to be the regex's you pass. A future version will add", "a way for you to add label's to the regex though that's a little harder to", "achieve without making the flags very verbose so I've avoided it for now.", "", "> **Note**: This is the initial implementation of this and might change in a", "> future major version since this flag feels a little more frictional than the", "> other approaches I have in mind. Feel free to recommend other ways to do this.", "", "<h3 id=\"cli\">CLI</h3>", "", "This is the entire CLI reference", " which you can also access by using the `-h`", "flag on the downloaded binary.", "", "**`commitlog -h`**", "", "```", "NAME:", "   commitlog - commits to changelogs", "", "USAGE:", "   commitlog [global options] command [command options] [arguments...]", "", "COMMANDS:", "   generate", " g  commits to changelogs", "   release", " r   manage .commitlog.release version", "   help", " h      Shows a list of commands or help for one command", "", "GLOBAL OPTIONS:", "   --help", " -h  show help (default: false)", "```", "", "---", "", "**`commitlog g -h`**", "", "```", "NAME:", "   commitlog generate - commits to changelogs", "", "USAGE:", "   commitlog generate [command options] [arguments...]", "", "OPTIONS:", "   --categories value       categories to use", " includes all commits by default. any text you add here will be used to create categories out of the commits", "   --end END", " -e END        END reference for the commit to stop including commits at.This is exclusive of the given commit reference", "   --out FILE", " -o FILE      path to the output FILE", "   --path PATH", " -p PATH     root with the '.git' folder PATH (default: \".\")", "   --promo                  add promo text to the end of output (default: false)", "   --start START", " -s START  START reference for the commit to include commits from", "This is inclusive of the given commit reference", "   --stdio                  print to the stdout (default: true)", "```", "", "---", "", "**`commitlog r -h`**", "", "```", "NAME:", "   commitlog release - manage .commitlog.release version", "", "USAGE:", "   commitlog release [command options] [arguments...]", "", "OPTIONS:", "   --commit              if true will create a commit and tag", " of the changed version (default: false)", "   --init                initialise commitlog release (default: false)", "   --major               create a major version (default: false)", "   --minor               create a minor version (default: false)", "   --patch               create a patch version (default: false)", "   --path PATH", " -p PATH  PATH to a folder where .commitlog.release exists or is to be created.(note: do not use `--commit` or `--push` if the file isn't in the root) (default: \".\")", "   --pre                 create a pre-release version. will default to patch increment unlessspecified and not already a pre-release (default: false)", "   --pre-tag value       create a pre-release version (default: \"beta\")", "   --push                if true will create push the created release commit + tag on origin (default: false)", "```", ""]}]
\ No newline at end of file
+[{"title": "docs/download.md", "slug": "download.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | downloads", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Downloads", "", "[commitlog-v3.0.0-darwin-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-darwin-amd64.tar.gz)    ", "[commitlog-v3.0.0-darwin-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-darwin-amd64.tar.gz.md5)    ", "[commitlog-v3.0.0-darwin-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-darwin-arm64.tar.gz)    ", "[commitlog-v3.0.0-darwin-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-darwin-arm64.tar.gz.md5)    ", "[commitlog-v3.0.0-linux-386.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-linux-386.tar.gz)    ", "[commitlog-v3.0.0-linux-386.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-linux-386.tar.gz.md5)    ", "[commitlog-v3.0.0-linux-amd64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-linux-amd64.tar.gz)    ", "[commitlog-v3.0.0-linux-amd64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-linux-amd64.tar.gz.md5)    ", "[commitlog-v3.0.0-linux-arm64.tar.gz](https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-linux-arm64.tar.gz)    ", "[commitlog-v3.0.0-linux-arm64.tar.gz.md5](https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-linux-arm64.tar.gz.md5)    ", "[commitlog-v3.0.0-windows-386.zip](https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-windows-386.zip)    ", "[commitlog-v3.0.0-windows-386.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-windows-386.zip.md5)    ", "[commitlog-v3.0.0-windows-amd64.zip](https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-windows-amd64.zip)    ", "[commitlog-v3.0.0-windows-amd64.zip.md5](https://github.com/barelyhuman/commitlog/releases/download/v3.0.0/commitlog-v3.0.0-windows-amd64.zip.md5)    ", ""]}, {"title": "docs/api.md", "slug": "api.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# API", "", "### General Guide", "", "commitlog also comes as a pkg that you could reuse to modify the behaviour of", "the commands and this is very limited at the moment since I'm still working on", "the best way to get plugins to work with the original CLI instead of having to", "write your own version of commitlog.", "", "The pkg contains the 2 base command's creators and behaviour modifiers", " or more", "commonly known as the golang options pattern.", "", "Briefly put", " You have one function that takes in unlimited amount of functions", "as parameter with each of these parameter functions being able to modify the", "behaviour of the returned instance.", "", "Easy way to explain this is with an example of the `releaser` API", "", "```go", "package main", "", "import (", "", "\"log\"", "", "", "\"github.com/barelyhuman/commitlog/v3/pkg\"", ")", "", "func main() {", "", "versionString := \"v0.0.1\"", "", "releaser", " _ := pkg.CreateNewReleaser(", "", "", "versionString", "", "", "", "pkg.WithMajorIncrement()", "", "", ")", "", "", "log.Println(releaser.String())", "", "}", "```", "", "here the `pkg.CreateNewReleaser` takes in one mandatory value which is the", "`versionString` and the 2nd parameter is optional here.", "", "Though", " since we wish for the releaser to have a custom behaviour everytime the", "flags change", " instead of writing entire functionalities inside various releaser", "functions", " which would look like so", "", "```go", "releaser.IncrementMajor()", "releaser.IncrementMinor()", "```", "", "I'd be unable to expose the builders / option functions out to the public for", "them to write custom behaviours that work directly with the `struct` being used", "by commitlog itself and instead you'd be writing wrappers around existing", "functions. Thus", " adding another layer of abstraction which isn't needed for", "something that wants to be extended.", "", "This approach gives me the ability to expose a selected few properties for you", "to modify while writing your own builder/option function.", "", "The only pointer functions that releaser has is the one's that'll help with", "printing or identifying the final version's state.", "", "Since", " you now know how the API is written", " the go doc for this module should be", "able to help you with the remaining.", "", "[godoc&nearr;](https://pkg.go.dev/github.com/barelyhuman/commitlog)", "", "> **Note**: if the go doc still hasn't been generated for v2.0.0", " please go", "> through the source code to help you with the implementation details", ""]}, {"title": "docs/index.md", "slug": "index.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "#### Index", "", "- [Source](https://github.com/barelyhuman/commitlog)", "- [Quick Start](#quick-start)", "- [About](#about)", "  - [Philosophy](#philosophy)", "  - [Installation](#installation)", "- [Manual](/commitlog/manual)", "- [License](#license)", "", "<h4 id=\"quick-start\">Quick Start</h4>", "", "For the one's who already know the tool and wanna get started quickly.", "", "You can get the CLI in the following ways", "", "1. You can get the binaries from the [download section](/commitlog/download)", "", "2. Using `go get`", "", "```sh", "go get -u github.com/barelyhuman/commitlog/v3", "```", "", "3. Using goblin", "", "```sh", "curl -sf https://goblin.run/github.com/barelyhuman/commitlog/v3@v3 | sh", "```", "", "Once installed you can just run `commitlog generate` or the shorter version", "`commitlog g` to get all the changes between the recent tags.", "", "<h4 id=\"about\">About</h4>", "", "<h5 id=\"philosophy\">Philosophy</h5>", "", "**_commitlog_** simply exists because I wasn't able to find a decent enough tool", "to do this without being bound to a specific programming language and it's", "toolset. The closes one to this is the `git`'s own `shortlog` and `log` commands", "", "- **Language Agnostic** - No one needs the entire programming toolset or the", "  language to be setup on the system to be able to just generate logs", "", "- **Decently Sized** - Not everyone has a powerful system and CI systems are", "  still very limited in terms of resources since they give you shared spaces and", "  automating generating this is a common practice so it doesn't make sense for", "  it to install a runtime worth 100MB to run it.", "", "  The binary itself is around 10-13MB which is fairly big for a tool like this", "  but this is due to go's nature of embedding the platform runtime with the", "  binary and this might not be ideal for some and so there's another similar", "  smaller scoped version [nimclog](https://github.com/barelyhuman/nimclog) which", "  is in KB's", "", "- **Flexible** - There are no set standards for how you write commit messages.", "  Commitlint is a good standard and pretty widely used and also what commitlog", "  v1 used as the base for categorizing.", "", "  V2 however", " doesn't have a set commit category standard", " it accepts regex's", "  that you will categorize your commits for you.", "", "  This is more for experienced developers who have a their own pattern of", "  writing commits and would like a tool that'd work with their pattern instead", "  of creating friction", "", "- **Extensible** - The entire thing is open source and MIT licenses", "", "  specifically for you to be able to fix and add things as needed. Each command", "  has been kept away from the domain logic to be able to use `commitlog` even as", "  a library and build your own tool if you wish to", " though if there's something", "  you wish the CLI supported", " you are free to open issues and I really like", "  people helping with the development since that helps keeping the tool alive", "  longer.", "", "<h5 id=\"installation\">Installation</h5>", "", "The installation is pretty straightforwad. You [download](/commitlog/download) the binary", "from the download section of this website or use something like", "[goblin](https://goblin.run) to build the binary for your specific", "system (rarely needed) since the releases actually accommodate the most used", "operating systems and architectures already.", "", "**Linux/Mac (Unix Systems)**", "", "Once downloaded", " you can use the `install` command on \\*nix systems to link the", "binary to a location that's already in your PATH variable.", "", "eg:", "", "```bash", "# install commitlog from current directory to the /usr/local/bin directory", "install $(pwd)/commitlog /usr/local/bin", "```", "", "This should give you the ability to use the `commitlog` command anywhere in your", "system", "", "**Windows**", "", "Similar to the linux setup", " you can download the `.exe` file and add it to a", "location that your environment path already has. An easier thing to do is to", "store the entire thing in your secondary partition and add that location to your", "PATH. You can use this resource from Java docs to help you with modifying the", "PATH variables", "", "- [Modifying PATH in Windows](https://www.java.com/en/download/help/path.html)", "", "<h4 id=\"manual\">Manual</h4>", "", "[Read Manual &rarr;](/commitlog/manual)", "", "<h4 id=\"license\">License</h4>", "", "commitlog is MIT Licensed and you can read the entire license in the", "[source code](https://github.com/barelyhuman/commitlog)", ""]}, {"title": "docs/manual.md", "slug": "manual.html", "contentTokens": ["<!-- meta -->", "<title>", "    commitlog | manual", "</title>", "<meta name=\"description\" content=\"commits to changelog generator\">", "<!-- meta end -->", "", "### [commitlog](/commitlog/)", "", "[Home](/commitlog/) [Manual](/commitlog/manual) [Download](/commitlog/download) [API](/commitlog/api)", "", "# Manual", "", "- [Basics](#basics)", "  - [generate](#generate)", "  - [release](#release)", "- [Advanced](#advanced)", "  - [Selective Log Ranges](#selective-log-ranges)", "  - [From a different repo](#from-a-different-repo)", "  - [Categorize](#categorize)", "- [CLI](#cli)", "- [API](/commitlog/api)", "", "<h3 id=\"basics\">Basics</h3>", "", "**_`commitlog`_** come with 2 basic functionalities", "", "- Generating commits as changelogs in markdown", "- Managing your version and tags", "", "Both the above are available as sub commands and we'll go through each one by", "one.", "", "Just running `commitlog` no longer works as it did in v1", " you'll need to specify", "a sub command to get it working.", "", "This has been done to keep it simpler to keep arbitrary behaviour to a minimum", "", "<h4 id=\"generate\">generate</h3>", "", "The first one is `generate` and in most cases you'll just be using this to", "handle generation of commits as a list of markdown notes", "", "Here's an example of what it'll look like to run the `generate` sub-command", "", "```sh", "$ commitlog generate", "# or ", "$ commitlog g", "```", "", "**Output**:", "", "```md", "## All Changes", "87ce3fc76b252908cdd81f9537713f8d67813652 chore: v2.0.0-beta.0", "", "09fc85c0d1d52d770bbbf39ac45907103a53d354 refactor: swap go-git for push with exec", "", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "909fd032facdeb4fb7633a4fad82dced28e8de83 chore: swap debugging logger with stderr printer", "<!-- .... more commits till the end of tag -->", "```", "", "The behaviour of the `generate` command is like so", "", "- go through all commits from the current `HEAD` (commit with the `HEAD`", "  reference) till the last commit or the most recent tagged commit.", "- the other case is where if the latest commit is also a tagged commit", " it'll", "  still go till the most recent tagged commit.", "", "  eg: v0.0.2 -> HEAD", " v0.0.1 -> SOMEHASH", " would give you the commits between", "  both the tags.", "", "The default behaviour of **_commitlog_** is to print to the stdout of your", "terminal which might not be what you wish to do.", "", "So", " if you wish to ever write to a file ", " you can use the `--out FILE` flag to", "write the output to a file instead.", "", "```sh", "$ commitlog g -o ./CHANGELOG.md", "```", "", "> **Note**: commitlog will overwrite the file with the new output", " make sure you", "> create a backup of the file when working with this.", "", "> **Note**: In coming versions an append mode will be added to the CLI to avoid", "> having to deal with this manually", "", "<h4 id=\"release\">release</h3>", "", "The `release` sub-command is a complimentary sub-command added to commitlog to", "help you with managing release versions. I understand that most languages have", "their own package version management and you might want to work with them but", "that's also why the `release` sub-command isn't something you need", " it's there", "for cases where you might wanna use it.", "", "My primary usecase is when working with repositories that work with multiple", "languages and I'd prefer a unified version.", "", "The `release` command doesn't modify your source code files but instead handles", "the version with it's own file named `.commitlog.release`", " which just holds the", "**version** number right now and while this does have the X.X.X format (semantic", "versioning format) the increments or how you handle them doesn't have to be.", "", "The command is flexible enough for you to combine and create your own way of", "versioning.", "", "##### Initialize", "", "```sh", "$ commitlog release --init", "# or ", "$ commitlog r --init", "```", "", "Once initialized", " you'll see a `.commitlog.release` file in your repo with the", "version `v0.0.0` to start with.", "", "##### Increments", "", "Post that you can use the remaining flags to help you incrementing the version", "as needed.", "", "```sh", "$ commitlog r --major # change to v1.0.0", "$ commitlog r --minor # change to v0.1.0", "$ commitlog r --patch # change to v0.0.1", "$ commitlog r --pre # change to v0.0.0-beta.0", "$ commitlog r --pre --pre-tag=\"dev\" # change to v0.0.0-dev.0", "", "# or go bonkers ", "$ commitlog r --patch --pre --pre-tag=\"dev\" # change to v0.0.1-dev.0", "$ commitlog r --major --patch --pre --pre-tag=\"dev\" # change to v1.0.1-dev.0", "```", "", "#### Git actions", "", "Most times you'd also want a tool like this to create commits and tags for you", "which is fair", " so `release` does come with a few git actions.", "", "- `--commit` (will create a commit and tag it for you)", "- `--push` (will push the commits and tags for you)", "", "The whole command would look a little something like this", "", "```sh", "$ commitlog r --patch --commit --push", "```", "", "<h3 id=\"advanced\">Advanced</h3>", "", "These are not really hard to guess or achieve but are in the advanced section as", "this isn't something a beginner user might need to mess with. If you have other", "use cases that you feel like should be added here", " raise a issue.", "", "<h4 id=\"selective-log-ranges\">Selective Log Ranges</h4>", "There's enough cases where the entire history between the tags makes no sense. You might just want a specific set of commits and this is very easy to do with commitlog", "", "```sh", "$ commitlog g --start HEAD --end HEAD~3 ", "# would return the last 3 commits", "```", "", "And as you might have understood", " commitlog does work with git's revision system", "so you can reuse git's own revision pointers as needed. Though it's mostly", "easier to just use the HASH since", " finding the hashes in `git log` is easier", "than finding the number you have to type after the `HEAD~`", "", "<h4 id=\"from-a-different-repo\">From a different repo</h4>", "A lot more often you might need to generate logs for a sub-repo when working with a huge multirepo folder which a lot of sub-modules and switching worktree for the changelog might not be something you wish to do.", "", "In cases like these the `-p` or `--path` flag can be used with the `generate`", "flag", "", "```sh", "$ commitlog g -p ./sub/module -s HEAD~3 ", "# would return the commits from HEAD~3 to the next tag or end of all commits.", "```", "", "<h4 id=\"categorize\">Categorize</h4>", "You wouldn't be using commitlog otherwise so this obviously has to exist.", "", "As for why is this turned off by default? I just don't use commit standards and", "mostly just need the commits between tags and very rarely need the categories to", "help me but doesn't change the fact that someone else might need it.", "", "So", " how does commitlog categorize? using regex's ", " or more like comma seperated", "regex's.", "", "The implementation approach might bring some issue but I'm going to wait for", "them instead of over fixing something that might never really happen.", "", "Anyway", " a simple example for a non-scoped commitlint styled categorization would", "look something like this .", "", "```sh", "$ commitlog g --categories=\"feat:", "fix:\"", "```", "", "**Output:**", "", "```md", "## feat:", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## fix:", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "```", "", "This could be made a little more neater using a better regex like so", "", "```sh", "$ commitlog g --categories=\"^feat", "^fix\"", "```", "", "**Output**:", "", "```md", "## ^feat", "e0ce9c693c554158b7b4841b799524164d9c3e83 feat(releaser): add init and pre-tag handlers", "", "110c9b260e6de1e2be9af28b3592c373ab6fc501 feat: handling for pre increment", "", "9080580575d3579b3d11dd114830eb128f0c8130 feat: releaser base maj", "min", "patch setup", "", "b513e53cbbc30e5b667fbba373b9589911a47ac0 feat: generator subcommand implementation", "", "## ^fix", "5bafe9d105298001707c7c816e60d3ef0257a816 fix: tag creation", "", "540bb3d7419aab314fdb999dd57eeac3c53f5fad fix doc generation", "", "87d40ddbd463ad71b3af8b7edb8ac8176ecbf2f5 fix tests for new param", "```", "", "As visible", " you find more commits in the 2nd one since the regex matches more", "cases and gives you more information. You are free to modify these to make them", "work with other patterns that you might follow.", "", "Also the titles are going to be the regex's you pass. A future version will add", "a way for you to add label's to the regex though that's a little harder to", "achieve without making the flags very verbose so I've avoided it for now.", "", "> **Note**: This is the initial implementation of this and might change in a", "> future major version since this flag feels a little more frictional than the", "> other approaches I have in mind. Feel free to recommend other ways to do this.", "", "<h3 id=\"cli\">CLI</h3>", "", "This is the entire CLI reference", " which you can also access by using the `-h`", "flag on the downloaded binary.", "", "**`commitlog -h`**", "", "```", "NAME:", "   commitlog - commits to changelogs", "", "USAGE:", "   commitlog [global options] command [command options] [arguments...]", "", "COMMANDS:", "   generate", " g  commits to changelogs", "   release", " r   manage .commitlog.release version", "   help", " h      Shows a list of commands or help for one command", "", "GLOBAL OPTIONS:", "   --help", " -h  show help (default: false)", "```", "", "---", "", "**`commitlog g -h`**", "", "```", "NAME:", "   commitlog generate - commits to changelogs", "", "USAGE:", "   commitlog generate [command options] [arguments...]", "", "OPTIONS:", "   --categories value       categories to use", " includes all commits by default. any text you add here will be used to create categories out of the commits", "   --end END", " -e END        END reference for the commit to stop including commits at.This is exclusive of the given commit reference", "   --out FILE", " -o FILE      path to the output FILE", "   --path PATH", " -p PATH     root with the '.git' folder PATH (default: \".\")", "   --promo                  add promo text to the end of output (default: false)", "   --start START", " -s START  START reference for the commit to include commits from", "This is inclusive of the given commit reference", "   --stdio                  print to the stdout (default: true)", "```", "", "---", "", "**`commitlog r -h`**", "", "```", "NAME:", "   commitlog release - manage .commitlog.release version", "", "USAGE:", "   commitlog release [command options] [arguments...]", "", "OPTIONS:", "   --commit              if true will create a commit and tag", " of the changed version (default: false)", "   --init                initialise commitlog release (default: false)", "   --major               create a major version (default: false)", "   --minor               create a minor version (default: false)", "   --patch               create a patch version (default: false)", "   --path PATH", " -p PATH  PATH to a folder where .commitlog.release exists or is to be created.(note: do not use `--commit` or `--push` if the file isn't in the root) (default: \".\")", "   --pre                 create a pre-release version. will default to patch increment unlessspecified and not already a pre-release (default: false)", "   --pre-tag value       create a pre-release version (default: \"beta\")", "   --push                if true will create push the created release commit + tag on origin (default: false)", "```", ""]}]
\ No newline at end of file
