🗝
summary refs log tree commit diff
path: root/cgit
diff options
context:
space:
mode:
Diffstat (limited to 'cgit')
-rwxr-xr-xcgit/css.sh34
-rw-r--r--cgit/header.html1
-rwxr-xr-xcgit/hide.sh11
-rwxr-xr-xcgit/new.sh19
-rw-r--r--cgit/patch.css5
-rw-r--r--cgit/private20
-rw-r--r--cgit/public24
-rw-r--r--cgit/sync.py21
-rwxr-xr-xcgit/unhide.sh11
9 files changed, 146 insertions, 0 deletions
diff --git a/cgit/css.sh b/cgit/css.sh
new file mode 100755
index 0000000..b0fd633
--- /dev/null
+++ b/cgit/css.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+set -e
+
+test -d cgit/css && rm -r cgit/css
+mkdir cgit/css
+
+function compile {
+    local variant=$1
+    local css=$2
+    curl -L "https://github.com/ArmandPhilippot/coldark-bat/raw/master/Coldark-$variant.tmTheme" \
+        | MODE=theme cgit-syntect - cgit/css/$css.css cgit/css/scopes
+    sed -i 's/background-color: .*//' cgit/css/$css.css # we don't actually want that
+}
+
+compile Cold light
+compile Dark dark
+
+curl https://git.kernel.org/cgit-data/cgit.css \
+    | tail -n+2 \
+    | sed 's/font-family: .* monospace/font-family: monospace/' \
+    | sed -n '/Style definition file/q;p' \
+    > cgit/css/kernel.css
+
+{
+    echo '/* adapted from https://git.kernel.org/cgit-data/cgit.css */'
+    cat cgit/css/kernel.css
+    cat cgit/css/light.css
+    echo "@media only all and (prefers-color-scheme: dark) {"
+    cat cgit/css/dark.css
+    echo "}"
+    cat cgit/patch.css
+} | prettier --parser css > cgit/css/style.css
+
+# rm -r cgit/css
diff --git a/cgit/header.html b/cgit/header.html
new file mode 100644
index 0000000..c9f6673
--- /dev/null
+++ b/cgit/header.html
@@ -0,0 +1 @@
+<a href="/priv" id="visibility">%</a>
diff --git a/cgit/hide.sh b/cgit/hide.sh
new file mode 100755
index 0000000..e0b0fba
--- /dev/null
+++ b/cgit/hide.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+# shellcheck disable=SC2086
+set -e
+
+if [ -z "$1" ]; then
+	echo missing name
+	exit 1
+fi
+
+set -x
+ssh git@asylum rm $1.git/git-daemon-export-ok
diff --git a/cgit/new.sh b/cgit/new.sh
new file mode 100755
index 0000000..25f11a1
--- /dev/null
+++ b/cgit/new.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+# shellcheck disable=SC2086,SC2162
+set -e
+
+if [ -z "$1" ]; then
+	echo missing name
+	exit 1
+fi
+
+read -n1 -p "Make public? " public
+echo
+
+set -x
+ssh git@asylum mkdir $1.git '&&' cd $1.git '&&' git init --bare
+ssh -t git@asylum rm $1.git/description '&&' micro $1.git/description
+
+if [ $public = y ]; then
+	ssh git@asylum touch $1.git/git-daemon-export-ok
+fi
diff --git a/cgit/patch.css b/cgit/patch.css
new file mode 100644
index 0000000..9a28e0d
--- /dev/null
+++ b/cgit/patch.css
@@ -0,0 +1,5 @@
+#visibility {
+    position: absolute;
+    right: 1em;
+    text-decoration: none;
+}
\ No newline at end of file
diff --git a/cgit/private b/cgit/private
new file mode 100644
index 0000000..b2e9f73
--- /dev/null
+++ b/cgit/private
@@ -0,0 +1,20 @@
+# shellcheck disable=all # this isn't a shell file, dingus
+
+about-filter=/usr/bin/cgit-about-filter.sh
+clone-url=git@asylum:$CGIT_REPO_URL
+css=/style.css
+enable-blame=1
+enable-git-config=1
+enable-index-owner=0
+enable-log-filecount=1
+enable-log-linecount=1
+header=/etc/cgit/private-header.html
+logo-link=https://git.causal.agency/cgit-pink/about/
+readme=:README.md
+root-desc=private git repositories
+snapshots=tar.gz zip
+source-filter=/usr/bin/cgit-syntect
+virtual-root=/priv
+
+remove-suffix=1
+scan-path=/srv/git
diff --git a/cgit/public b/cgit/public
new file mode 100644
index 0000000..d6633de
--- /dev/null
+++ b/cgit/public
@@ -0,0 +1,24 @@
+# shellcheck disable=all # this isn't a shell file, dingus
+
+about-filter=/usr/bin/cgit-about-filter.sh
+clone-url=https://$HTTP_HOST/$CGIT_REPO_URL git@asylum:$CGIT_REPO_URL
+css=/style.css
+enable-blame=1
+enable-git-config=1
+enable-index-owner=0
+enable-log-filecount=1
+enable-log-linecount=1
+header=/etc/cgit/public-header.html
+logo-link=https://git.causal.agency/cgit-pink/about/
+readme=:README.md
+root-desc=personal git repositories
+snapshots=tar.gz zip
+source-filter=/usr/bin/cgit-syntect
+virtual-root=/
+
+cache-root=/srv/git/.cache
+cache-size=1M
+
+remove-suffix=1
+strict-export=git-daemon-export-ok
+scan-path=/srv/git
diff --git a/cgit/sync.py b/cgit/sync.py
new file mode 100644
index 0000000..506c811
--- /dev/null
+++ b/cgit/sync.py
@@ -0,0 +1,21 @@
+from commia.prelude import *
+from commia.ssh import scp, ssh_args
+from commia.util import with_written
+
+run_check(
+    [*ssh_args(), "sh", "-c", "cat > /usr/bin/cgit-about-filter.sh"],
+    input=b"#!/bin/sh\nmd2html",  # discard arguments
+)
+run_check([*ssh_args(), "chmod", "+x", "/usr/bin/cgit-about-filter.sh"])
+scp("cgit/public", "asylum:/etc/cgit/public")
+scp("cgit/private", "asylum:/etc/cgit/private")
+if Path("cgit/css").exists():
+    scp("cgit/css/style.css", "asylum:/usr/share/webapps/cgit/style.css")
+    scp("cgit/css/scopes", "asylum:/usr/share/cgit-syntect/scopes")
+
+for sym, vis in [("🗝", "public"), ("⛯", "private")]:
+    with_written(
+        f"<a href=/{'priv' if vis == 'public' else ''} id=visibility>{sym}</a>",
+        lambda path: scp(path, f"asylum:/etc/cgit/{vis}-header.html"),
+    )
+    run([*ssh_args(), "chmod", "+r", f"/etc/cgit/{vis}-header.html"])
diff --git a/cgit/unhide.sh b/cgit/unhide.sh
new file mode 100755
index 0000000..06fda05
--- /dev/null
+++ b/cgit/unhide.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+# shellcheck disable=SC2086
+set -e
+
+if [ -z "$1" ]; then
+	echo missing name
+	exit 1
+fi
+
+set -x
+ssh git@asylum touch $1.git/git-daemon-export-ok