krz/orgo

Lightning fast org-mode static site generator.

clone: git clone https://gitbay.org/krz/orgo.git

c12be9354a2051f788a26764aa284b6937a0f15d

verified · cmc

author: Christian Cleberg <hello@cleberg.net> · 2026-08-11T21:47:43Z

Prepare the repository for publication

- **0BSD** rather than MIT, matching the other repositories here. Same
  permission with the attribution requirement dropped — strictly more
  permissive, so relaxing it before anyone has the old terms costs nothing.
- **CODEOWNERS**, in the shape devianter and skunky-art use.
- **A Pages workflow** for the documentation site. It is fifteen org files built
  by the tool that documents them, so the deploy doubles as the most honest
  smoke test here: if orgo cannot build its own docs, this fails. `--strict`
  means a broken internal link fails it too, which is precisely how
  documentation rots.
- `repository` and `homepage` in Cargo.toml point somewhere, since there is
  finally somewhere to point.

The docs job builds with the release profile, so a break in that profile
surfaces on a push rather than at a tag.
 .github/workflows/docs.yml | 75 ++++++++++++++++++++++++++++++++++++++++++++++
 CODEOWNERS                 |  1 +
 LICENSE                    | 33 ++++++++------------
 3 files changed, 88 insertions(+), 21 deletions(-)

diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
new file mode 100644
index 0000000..20155b9
--- /dev/null
+++ b/.github/workflows/docs.yml
@@ -0,0 +1,75 @@
+name: Docs
+
+# Publish the documentation site to GitHub Pages.
+#
+# The site is fifteen org files under docs/, built by the tool they document — so this
+# job is also the most honest smoke test in the repository: if orgo cannot build its own
+# documentation, the deploy fails and says so.
+#
+# `--strict` makes a broken internal link a build failure. Docs rot by having their links
+# quietly stop resolving, and that is exactly the failure a static site generator is
+# supposed to be able to catch.
+
+on:
+  push:
+    branches: [main]
+    # Templates and the config shape the pages as much as the prose does, and a change to
+    # the renderer changes every page. Anything else — a test, a fixture — cannot.
+    paths:
+      - "docs/**"
+      - "src/**"
+      - "Cargo.toml"
+      - "Cargo.lock"
+      - ".github/workflows/docs.yml"
+  workflow_dispatch:
+
+# Read the repository, write a Pages deployment. Nothing else.
+permissions:
+  contents: read
+  pages: write
+  id-token: write
+
+# One deployment at a time, and let a newer commit win: a queue of doc builds racing each
+# other to publish is worse than the last one arriving late.
+concurrency:
+  group: pages
+  cancel-in-progress: true
+
+jobs:
+  build:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout
+        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+
+      - name: Install Rust
+        uses: dtolnay/rust-toolchain@1ff72ee08e3cb84d84adba594e0a297990fc1ed3 # stable
+        with:
+          toolchain: stable
+
+      - name: Cache cargo
+        uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 # v2.8.0
+
+      - name: Configure Pages
+        uses: actions/configure-pages@983d7736d9b0ae728b81ab479565c72886d7745b # v5.0.0
+
+      # Built with the release profile: the docs deploy is also the only place a release
+      # build runs outside a tag, so a break in it surfaces here rather than at release.
+      - name: Build the site
+        run: cargo run --release --locked -- build docs -o docs/_site --strict
+
+      - name: Upload the artifact
+        uses: actions/upload-pages-artifact@7b1f4a764d45c48632c6b24a0339c27f5614fb0b # v3.0.1
+        with:
+          path: docs/_site
+
+  deploy:
+    needs: build
+    runs-on: ubuntu-latest
+    environment:
+      name: github-pages
+      url: ${{ steps.deployment.outputs.page_url }}
+    steps:
+      - name: Deploy
+        id: deployment
+        uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4.0.5
diff --git a/CODEOWNERS b/CODEOWNERS
new file mode 100644
index 0000000..e6cf10d
--- /dev/null
+++ b/CODEOWNERS
@@ -0,0 +1 @@
+*	@ccleberg
diff --git a/LICENSE b/LICENSE
index fd9f61b..419813e 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,21 +1,12 @@
-MIT License
-
-Copyright (c) 2026 Christian Cleberg
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+Copyright (C) 2026 krazy warez
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.