summaryrefslogtreecommitdiffstats
path: root/scripts/size.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/size.sh')
-rwxr-xr-xscripts/size.sh26
1 files changed, 26 insertions, 0 deletions
diff --git a/scripts/size.sh b/scripts/size.sh
new file mode 100755
index 0000000..f772a77
--- /dev/null
+++ b/scripts/size.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+#
+# size.sh is used to bisect the repository and find changes that negatively
+# impacted the gotop binary size. It does this by building gotop and exiting
+# successfully if the binary size is under a defined amount.
+#
+# Example:
+# ```
+# git bisect start
+# git bisect bad master
+# git bisect good 755037d211cc8e58e9ce43ee74a95a3036053dee
+# git bisect run ./size
+# ```
+
+GOODSIZE=6000000
+
+# Caleb's directory structure was different from the current structure, so
+# we have to find the main package first.
+pt=$(dirname $(find . -name main.go))
+# Give the executable a unique-ish name
+fn=gotop_$(git rev-list -1 HEAD)
+go build -o $fn $pt
+sz=$(ls -l $fn | awk '{print $5}')
+git checkout -- .
+[[ $sz -gt $GOODSIZE ]] && exit 1
+exit 0