1+ #! /bin/bash
2+
3+ set -euo pipefail
4+
5+ MKDOCS_MATERIAL_VERSION=" ${MKDOCS_MATERIAL_VERSION:- 9.7.7} "
6+ AJV_CLI_VERSION=" ${AJV_CLI_VERSION:- 5.0.0} "
7+
8+ SUDO=" "
9+ if command -v sudo > /dev/null 2>&1 ; then
10+ SUDO=" sudo"
11+ fi
12+
13+ # Install build and runtime prerequisites used by repo scripts.
14+ ${SUDO} apt-get update
15+ ${SUDO} apt-get install -y clang lld rsync
16+
17+ # Install docs and schema validation tooling used in CI/workflows.
18+ python3 -m venv " $HOME /.venv"
19+ " $HOME /.venv/bin/pip" install --upgrade " mkdocs-material==${MKDOCS_MATERIAL_VERSION} "
20+ npm install -g " ajv-cli@${AJV_CLI_VERSION} "
21+
22+ # Build parser in a temp dir so the script is idempotent and leaves no repo noise.
23+ tmpdir=" $( mktemp -d) "
24+ trap ' rm -rf "$tmpdir"' EXIT
25+
26+ git clone --depth 1 https://github.com/bcgov/oca-parser-xls.git " $tmpdir /oca-parser-xls"
27+ cd " $tmpdir /oca-parser-xls"
28+ RUSTFLAGS=" -C link-arg=-fuse-ld=lld" cargo build
29+
30+ # Install to common user bin locations.
31+ mkdir -p " $HOME /bin" " $HOME /.local/bin"
32+ cp ./target/debug/parser " $HOME /bin/parser"
33+ cp ./target/debug/parser " $HOME /.local/bin/parser"
34+ chmod +x " $HOME /bin/parser" " $HOME /.local/bin/parser"
35+
36+ # Update PATH for the current session so verification below succeeds.
37+ export PATH=" $PATH :$HOME /bin:$HOME /.local/bin:$HOME /.venv/bin"
38+
39+ # Ensure bin folders are on PATH for future interactive shells.
40+ if ! grep -q ' \$HOME/bin' " $HOME /.bashrc" 2> /dev/null; then
41+ echo ' export PATH="$PATH:$HOME/bin:$HOME/.local/bin:$HOME/.venv/bin"' >> " $HOME /.bashrc"
42+ fi
43+
44+ echo " Installed parser to: $HOME /bin/parser and $HOME /.local/bin/parser"
45+ " $HOME /bin/parser" --version
46+
47+ # Verify that all required commands are available for local workflows.
48+ required_cmds=(
49+ parser
50+ jq
51+ shasum
52+ rsync
53+ mkdocs
54+ ajv
55+ cargo
56+ clang
57+ lld
58+ )
59+
60+ for cmd in " ${required_cmds[@]} " ; do
61+ if ! command -v " $cmd " > /dev/null 2>&1 ; then
62+ echo " ERROR: Required command not found after setup: $cmd "
63+ exit 1
64+ fi
65+ done
66+
67+ echo " mkdocs version: $( mkdocs --version) "
68+ echo " ajv version: $( ajv --version) "
0 commit comments