12# share-demo: two people in one workbook over 012 serve, as the share3# tape records them: a server on a budget in out/share/served, reached4# with ssh as ann in the top tmux pane and as bob in the bottom one.5# `share-demo stop` ends the server. Runs from demos/.6set -e7d=out/share8port=23999if [ "$1" = stop ]; then10 tmux -L 012demo kill-server 2>/dev/null || true11 kill "$(cat $d/serve.pid)" 2>/dev/null || true12 exit 013fi14rm -rf $d15mkdir -p $d/served16ssh-keygen -q -t ed25519 -N '' -C demo -f $d/id17cp $d/id.pub $d/authorized_keys18chmod 600 $d/authorized_keys19cat > $d/served/budget.012 <<'EOF'20{"version": 2, "cells": {"A1": "Household budget", "A3": "Rent", "B3": "1200", "A4": "Food", "B4": "450",21 "A5": "Power", "B5": "90", "A6": "Total", "B6": "=SUM(B3:B5)"}}22EOF23../bin/012 serve --listen 127.0.0.1:$port --authorized-keys $d/authorized_keys --host-key $d/host_key $d/served 2>$d/serve.log &24echo $! >$d/serve.pid25until grep -q "on 127.0.0.1:$port" $d/serve.log 2>/dev/null; do sleep 0.1; done26echo "[127.0.0.1]:$port $(cat $d/host_key.pub)" >$d/known_hosts27ssh="ssh -F /dev/null -i $d/id -o IdentitiesOnly=yes -o IdentityAgent=none -o UserKnownHostsFile=$d/known_hosts -o LogLevel=ERROR -p $port -t"28tmux -L 012demo -f /dev/null new-session -d -s share -x "$(tput cols)" -y "$(tput lines)" "$ssh -l ann 127.0.0.1 budget.012"29tmux -L 012demo set -g status off30tmux -L 012demo set -g pane-border-style fg=brightblack31tmux -L 012demo set -g pane-active-border-style fg=cyan32tmux -L 012demo split-window -v "sleep 1; $ssh -l bob 127.0.0.1 budget.012"33exec tmux -L 012demo attach -t share