Skip to content

Commit 45bc413

Browse files
committed
scripts: align update-cheatsheets.sh with update-cwe.sh style
- Replace SQLite online backup with a simple `cp` backup (matches update-cwe.sh) - Remove stamp-file optimisation to keep unconditional pip install - Keep environment variables to disable gap analysis and embeddings - Keep link normalization to convert GitHub URLs to official HTML pages - Ensure trailing newline at EOF This addresses all points from PR review OWASP#952.
1 parent 26e81c0 commit 45bc413

1 file changed

Lines changed: 16 additions & 36 deletions

File tree

‎scripts/update-cheatsheets.sh‎

Lines changed: 16 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2,54 +2,34 @@
22
set -euo pipefail
33

44
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
5-
DB_PATH="${1:-$ROOT_DIR/standards_cache.sqlite}"
65
VENV_DIR="$ROOT_DIR/venv"
6+
CACHE_FILE="${1:-$ROOT_DIR/standards_cache.sqlite}"
7+
TIMESTAMP="$(date +%Y%m%d-%H%M%S)"
8+
BACKUP_FILE="${CACHE_FILE}.bak.${TIMESTAMP}"
79

8-
if [[ ! -x "$VENV_DIR/bin/python" ]]; then
10+
if [[ ! -d "$VENV_DIR" ]]; then
11+
echo "Creating virtual environment in $VENV_DIR"
912
python3 -m venv "$VENV_DIR"
1013
fi
1114

1215
source "$VENV_DIR/bin/activate"
1316

14-
# FIX: always install requirements to pick up new/updated packages
15-
"$VENV_DIR/bin/python" -m pip install -r "$ROOT_DIR/requirements.txt"
17+
echo "Installing Python runtime dependencies"
18+
pip install -r "$ROOT_DIR/requirements.txt"
1619

17-
if [[ ! -f "$DB_PATH" ]]; then
18-
echo "Database file does not exist: $DB_PATH" >&2
19-
exit 1
20+
if [[ -f "$CACHE_FILE" ]]; then
21+
cp "$CACHE_FILE" "$BACKUP_FILE"
22+
echo "Backed up database to $BACKUP_FILE"
2023
fi
2124

22-
# FIX: add PID to backup filename to avoid collisions
23-
BACKUP_FILE="${DB_PATH}.$(date +%Y%m%d%H%M%S)_$$.bak"
25+
export CRE_NO_CALCULATE_GAP_ANALYSIS=1
26+
export CRE_NO_GEN_EMBEDDINGS=1
2427

25-
# Use sqlite3 backup (safe for live DB) and verify integrity
26-
"$VENV_DIR/bin/python" -c "
27-
import sqlite3, sys
28-
src, dst = sys.argv[1], sys.argv[2]
29-
try:
30-
with sqlite3.connect(src) as src_conn, sqlite3.connect(dst) as dst_conn:
31-
src_conn.backup(dst_conn)
32-
cur = dst_conn.cursor()
33-
cur.execute('PRAGMA integrity_check')
34-
if cur.fetchone()[0] != 'ok':
35-
print('Integrity check failed for backup', file=sys.stderr)
36-
sys.exit(1)
37-
except Exception as e:
38-
print(f'Backup failed: {e}', file=sys.stderr)
39-
sys.exit(1)
40-
" "$DB_PATH" "$BACKUP_FILE"
28+
echo "Importing OWASP Cheat Sheet data into $CACHE_FILE"
29+
python "$ROOT_DIR/cre.py" --cheatsheets_in --cache_file "$CACHE_FILE"
4130

42-
if [[ ! -f "$BACKUP_FILE" ]]; then
43-
echo "Failed to create backup at $BACKUP_FILE" >&2
44-
exit 1
45-
fi
46-
echo "Created verified backup at $BACKUP_FILE"
47-
48-
CRE_NO_CALCULATE_GAP_ANALYSIS=1 \
49-
CRE_NO_GEN_EMBEDDINGS=1 \
50-
"$VENV_DIR/bin/python" "$ROOT_DIR/cre.py" --cheatsheets_in --cache_file "$DB_PATH"
51-
52-
"$VENV_DIR/bin/python" - "$DB_PATH" <<'PY'
31+
# Normalise GitHub links to official HTML links
32+
python - "$CACHE_FILE" <<'PY'
5333
import os
5434
import sqlite3
5535
import sys

0 commit comments

Comments
 (0)