Files
math-research/run.sh
T
2026-04-17 00:54:42 -04:00

82 lines
2.3 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
VENV_PYTHON="$SCRIPT_DIR/.venv/bin/python3"
if [ -f "$SCRIPT_DIR/.env" ]; then
# shellcheck source=/dev/null
source "$SCRIPT_DIR/.env"
fi
init_paper() {
local raw="${1:-.}"
local name
name="$(printf '%s' "$raw" | tr '[:upper:]' '[:lower:]' | tr -d '\\' | tr '[:space:]' '_')"
local dest="$SCRIPT_DIR/$name"
mkdir -p "$dest"
cp "$SCRIPT_DIR/ams-latex-template/doc/amsart-template.tex" "$dest/paper.tex"
sed -i '' "s|\\\\title{}|\\\\title{$raw}|" "$dest/paper.tex"
sed -i '' "s|\\\\author{}|\\\\author{Eric Bauerfeld}|" "$dest/paper.tex"
sed -i '' '/^% author two information$/,/^\\thanks{}$/d' "$dest/paper.tex"
echo "Initialized paper.tex in $dest"
}
setup() {
local python_path="${1:?Usage: setup <python_path> <sage_site_packages> <system_name>}"
local sage_site_packages="${2:?Usage: setup <python_path> <sage_site_packages> <system_name>}"
local system_name="${3:?Usage: setup <python_path> <sage_site_packages> <system_name>}"
printf 'SAGE_PYTHON_PATH=%s\nSAGE_SITE_PACKAGES=%s\n' "$python_path" "$sage_site_packages" \
> "$SCRIPT_DIR/.env.$system_name"
ln -sf ".env.$system_name" "$SCRIPT_DIR/.env"
source "$SCRIPT_DIR/.env"
mkdir -p "$SCRIPT_DIR/.vscode"
"$python_path" - <<EOF
import json
settings = {
"python.defaultInterpreterPath": "$python_path",
"python.analysis.extraPaths": ["$sage_site_packages"],
"python.analysis.diagnosticSeverityOverrides": {
"reportUnknownMemberType": "warning",
"reportUnknownArgumentType": "warning",
"reportUnknownParameterType": "warning",
"reportMissingParameterType": "warning",
"reportUnknownVariableType": "warning"
}
}
with open("$SCRIPT_DIR/.vscode/settings.json", "w") as f:
json.dump(settings, f, indent=4)
f.write("\n")
EOF
"$python_path" -m venv "$SCRIPT_DIR/.venv"
"$VENV_PYTHON" -m pip install -r "$SCRIPT_DIR/requirements.txt"
}
lint() {
"$VENV_PYTHON" -m pyright lib/ --pythonpath "$SAGE_PYTHON_PATH"
"$VENV_PYTHON" -m pylint lib/ \
--init-hook="import sys; sys.path.insert(0, '${SAGE_SITE_PACKAGES}'); sys.path.insert(0, '${SCRIPT_DIR}')" \
--disable=fixme
}
case "${1:-}" in
init_paper)
shift
init_paper "$@"
;;
setup)
shift
setup "$@"
;;
lint)
lint
;;
*)
echo "Usage: $0 {init_paper|setup|lint} [args]" >&2
exit 1
;;
esac