05/02/2026 updated code for security 2

This commit is contained in:
2026-05-02 18:44:39 -04:00
parent c7b1806ec8
commit 78feedc5c7
15 changed files with 1347 additions and 182 deletions
+91
View File
@@ -0,0 +1,91 @@
#!/usr/bin/env bash
# build.sh — Build PassKeeper extension for Chrome (MV3) and Firefox (MV2).
#
# Usage:
# ./build.sh # build both targets
# ./build.sh chrome # Chrome only
# ./build.sh firefox # Firefox only
#
# Output:
# dist/passkeeper-chrome.zip
# dist/passkeeper-firefox.zip
#
# Requirements: zip (standard on macOS/Linux)
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
EXT_DIR="$SCRIPT_DIR/extension"
DIST_DIR="$SCRIPT_DIR/dist"
# Files and directories included in every build (relative to extension/).
COMMON_FILES=(
"content"
"popup"
"bridge"
"shared"
"icons"
)
TARGET="${1:-both}"
mkdir -p "$DIST_DIR"
# ── Helpers ───────────────────────────────────────────────────────────────────
build_chrome() {
local out="$DIST_DIR/passkeeper-chrome.zip"
echo "Building Chrome (MV3) → $out"
rm -f "$out"
(
cd "$EXT_DIR"
zip -r "$out" manifest.json background.js "${COMMON_FILES[@]}" \
--exclude "*.DS_Store" --exclude "**/__pycache__/*" --exclude "*.py"
)
echo " ✓ Chrome build complete: $out ($(du -sh "$out" | cut -f1))"
}
build_firefox() {
local out="$DIST_DIR/passkeeper-firefox.zip"
echo "Building Firefox (MV2) → $out"
rm -f "$out"
# Firefox uses a different manifest and background script.
# We build into a temp directory so we can swap those files cleanly.
local tmp
tmp="$(mktemp -d)"
trap "rm -rf '$tmp'" EXIT
# Copy common files into temp dir.
for item in "${COMMON_FILES[@]}"; do
cp -r "$EXT_DIR/$item" "$tmp/"
done
# Swap in Firefox-specific manifest and background.
cp "$EXT_DIR/manifest.firefox.json" "$tmp/manifest.json"
cp "$EXT_DIR/background.firefox.js" "$tmp/background.js"
(
cd "$tmp"
zip -r "$out" . \
--exclude "*.DS_Store" --exclude "**/__pycache__/*" --exclude "*.py"
)
echo " ✓ Firefox build complete: $out ($(du -sh "$out" | cut -f1))"
}
# ── Main ──────────────────────────────────────────────────────────────────────
case "$TARGET" in
chrome) build_chrome ;;
firefox) build_firefox ;;
both) build_chrome; build_firefox ;;
*)
echo "Usage: $0 [chrome|firefox|both]" >&2
exit 1
;;
esac
echo "Done. Packages are in $DIST_DIR/"