From c28c544b933cfb3ef3152be922248e9bbe89811e Mon Sep 17 00:00:00 2001
From: Ben Sima <ben@bsima.me>
Date: Tue, 21 Dec 2021 11:52:14 -0500
Subject: Add kelvin versioning to pre-commit hook

---
 Biz/Ide/pre-commit | 19 ++++++++++++++++++-
 Biz/Ide/version    | 11 +++++++++++
 2 files changed, 29 insertions(+), 1 deletion(-)
 create mode 100755 Biz/Ide/version

(limited to 'Biz/Ide')

diff --git a/Biz/Ide/pre-commit b/Biz/Ide/pre-commit
index 8b17092..507d7e6 100755
--- a/Biz/Ide/pre-commit
+++ b/Biz/Ide/pre-commit
@@ -1,2 +1,19 @@
 #!/usr/bin/env bash
-exec $BIZ_ROOT/Biz/Ide/lint **/*
+#
+# - prevent frozen code from being checked in
+# - guard against lint errors
+##
+  set -e
+  changed=($(git diff-index --cached --name-only HEAD))
+  for ns in ${changed[@]}
+  do
+    version=$($BIZ_ROOT/Biz/Ide/version $ns)
+    if (( $version < 1 )); then
+      echo "fail:  version:  $ns:  $version"
+      exit 1
+    else
+      echo "info:  version:  $ns:  $version"
+    fi
+  done
+  $BIZ_ROOT/Biz/Ide/lint **/*
+##
diff --git a/Biz/Ide/version b/Biz/Ide/version
new file mode 100755
index 0000000..3a02b95
--- /dev/null
+++ b/Biz/Ide/version
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+#
+# simple implementation of kelvin versioning
+##
+  ns=$1
+  commits=$(git log --oneline --follow $ns | wc -l)
+  # gold melts at 1337 kelvin, so we start with this
+  # bc we are forging gold here
+  version=$(bc -l <<< "1337 - $commits")
+  echo $version
+##
-- 
cgit v1.2.3