Add sync.sh script

This downloads and installs dependencies necessary to run or develop.

Add docker-compose.yml for initial use
This commit is contained in:
Michael Wolf
2026-01-11 15:51:42 -06:00
parent de70be996e
commit 1da81089cd
4 changed files with 93 additions and 17 deletions

View File

@@ -5,10 +5,8 @@
set -eu
node_shim_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
export node_shim_DIR
source "$node_shim_DIR"/../versions
# shellcheck source=node.common
source "$node_shim_DIR"/node.common
exec "$nodejs_binary_dir/node" "$@"

View File

@@ -2,23 +2,19 @@
# shellcheck shell=bash
node_common_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
project_root="$node_common_DIR/../.."
# FIXME this shouldn't be hardcoded here of course
nodejs_binary_dir="$node_common_DIR/../binaries/node-v22.15.1-linux-x64/bin"
# shellcheck source=../versions
source "$node_common_DIR"/../versions
nodejs_binary_dir="$project_root/$nodejs_bin_dir"
# This might be too restrictive. Or not restrictive enough.
PATH="$nodejs_binary_dir":/bin:/usr/bin
project_root="$node_common_DIR/../.."
node_dist_dir="$project_root/$nodejs_dist_dir"
node_dir="$project_root/$nodejs_binary_dir"
export NPM_CONFIG_PREFIX="$node_dir/npm"
export NPM_CONFIG_CACHE="$node_dir/cache"
export NPM_CONFIG_TMP="$node_dir/tmp"
export NODE_PATH="$node_dir/node_modules"
# echo $NPM_CONFIG_PREFIX
# echo $NPM_CONFIG_CACHE
# echo $NPM_CONFIG_TMP
# echo $NODE_PATH
export NPM_CONFIG_PREFIX="$node_dist_dir/npm"
export NPM_CONFIG_CACHE="$node_dist_dir/cache"
export NPM_CONFIG_TMP="$node_dist_dir/tmp"
export NODE_PATH="$node_dist_dir/node_modules"

16
framework/versions Normal file
View File

@@ -0,0 +1,16 @@
# shellcheck shell=bash
# This file belongs to the framework. You are not expected to modify it.
nodejs_binary_linux_x86_64=https://nodejs.org/dist/v22.15.1/node-v22.15.1-linux-x64.tar.xz
nodejs_checksum_linux_x86_64=7dca2ab34ec817aa4781e2e99dfd34d349eff9be86e5d5fbaa7e96cae8ee3179
nodejs_dist_dir=framework/binaries/node-v22.15.1-linux-x64
nodejs_bin_dir="$nodejs_dist_dir/bin"
caddy_binary_linux_x86_64=fixme
caddy_checksum_linux_x86_64=fixmetoo
pnpm_binary_linux_x86_64=https://github.com/pnpm/pnpm/releases/download/v10.12.4/pnpm-linux-x64
pnpm_checksum_linux_x86_64=sha256:ac2768434cbc6c5fec71da4abae7845802bbfe326d590aa0004cdf8bf0815b26
golangci_lint=v2.7.2-alpine

66
sync.sh Executable file
View File

@@ -0,0 +1,66 @@
#!/bin/bash
# Note: This is kind of AI slop and needs to be more carefully reviewed.
set -eu
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck source=framework/versions
source "$DIR/framework/versions"
# Ensure correct node version is installed
node_installed_checksum_file="$DIR/framework/binaries/.node.checksum"
node_installed_checksum=""
if [ -f "$node_installed_checksum_file" ]; then
node_installed_checksum=$(cat "$node_installed_checksum_file")
fi
if [ "$node_installed_checksum" != "$nodejs_checksum_linux_x86_64" ]; then
echo "Downloading Node.js..."
node_archive="$DIR/framework/downloads/node.tar.xz"
curl -fsSL "$nodejs_binary_linux_x86_64" -o "$node_archive"
echo "Verifying checksum..."
echo "$nodejs_checksum_linux_x86_64 $node_archive" | sha256sum -c -
echo "Extracting Node.js..."
tar -xf "$node_archive" -C "$DIR/framework/binaries"
rm "$node_archive"
echo "$nodejs_checksum_linux_x86_64" >"$node_installed_checksum_file"
fi
# Ensure correct pnpm version is installed
pnpm_binary="$DIR/framework/binaries/pnpm"
pnpm_installed_checksum_file="$DIR/framework/binaries/.pnpm.checksum"
pnpm_installed_checksum=""
if [ -f "$pnpm_installed_checksum_file" ]; then
pnpm_installed_checksum=$(cat "$pnpm_installed_checksum_file")
fi
# pnpm checksum includes "sha256:" prefix, strip it for sha256sum
pnpm_checksum="${pnpm_checksum_linux_x86_64#sha256:}"
if [ "$pnpm_installed_checksum" != "$pnpm_checksum" ]; then
echo "Downloading pnpm..."
curl -fsSL "$pnpm_binary_linux_x86_64" -o "$pnpm_binary"
echo "Verifying checksum..."
echo "$pnpm_checksum $pnpm_binary" | sha256sum -c -
chmod +x "$pnpm_binary"
echo "$pnpm_checksum" >"$pnpm_installed_checksum_file"
fi
# Get golang binaries in place
cd "$DIR/master"
go build
cd "$DIR/logger"
go build
# Update framework code
cd "$DIR/express"
../cmd pnpm install