#!/bin/bash # DSS Full Reset Script # Clears all DSS data, skins, tokens, and generated files # # Usage: scripts/dss-reset.sh [--confirm] # Without --confirm, runs in dry-run mode showing what would be deleted set -e DSS_ROOT="$(cd "$(dirname "$0")/.." && pwd)" cd "$DSS_ROOT" DRY_RUN=true if [ "$1" = "--confirm" ]; then DRY_RUN=false fi echo "==========================================" echo " DSS Full Reset" echo "==========================================" echo "" if [ "$DRY_RUN" = true ]; then echo "🔍 DRY RUN MODE - No changes will be made" echo " Run with --confirm to execute reset" echo "" fi run_or_show() { if [ "$DRY_RUN" = true ]; then echo " Would run: $*" else eval "$@" fi } # 1. Clear .dss/data/ (preserves .dss/config/ which is IMMUTABLE) echo "1. Clearing .dss/data/ structure..." echo " (preserving .dss/config/ - Figma credentials)" run_or_show "rm -rf .dss/data/projects/* .dss/data/teams/* .dss/data/_system/cache/* .dss/data/_system/activity/* 2>/dev/null || true" run_or_show "rm -rf .dss/data/_system/tokens/* .dss/data/_system/themes/* .dss/data/_system/components/* 2>/dev/null || true" run_or_show "mkdir -p .dss/data/{projects,teams,_system/{cache,activity,tokens,themes,components}}" # 2. Reset database echo "2. Resetting database..." run_or_show "rm -f .dss/dss.db .dss/dss.db.old" # 3. Remove admin-ui DSS CSS (keep non-dss files) echo "3. Removing admin-ui DSS CSS files..." run_or_show "rm -f admin-ui/css/dss-*.css" # 4. Remove generated stories and components echo "4. Removing generated stories and components..." run_or_show "rm -f admin-ui/src/components/*.stories.js admin-ui/src/components/ds-*.js" # 5. Reset core_tokens echo "5. Resetting core_tokens..." if [ "$DRY_RUN" = false ]; then cat > dss/core_tokens/tokens.json << 'EOF' { "_meta": { "version": "1.0.0", "generated": null, "source": "awaiting Figma sync", "status": "empty" }, "tokens": {} } EOF else echo " Would reset: dss/core_tokens/tokens.json" fi # 6. Reset skins to empty echo "6. Resetting skins..." for skin in base classic workbench; do if [ "$DRY_RUN" = false ]; then # Capitalize first letter for description skin_cap="$(echo "$skin" | sed 's/./\U&/')" if [ "$skin" = "base" ]; then cat > "dss-claude-plugin/core/skins/${skin}.json" << EOF { "meta": { "id": "${skin}", "version": "1.0.0", "description": "${skin_cap} skin - awaiting Figma sync" }, "tokens": {} } EOF else cat > "dss-claude-plugin/core/skins/${skin}.json" << EOF { "meta": { "id": "${skin}", "version": "1.0.0", "description": "${skin_cap} skin - awaiting Figma sync", "extends": "base" }, "tokens": {} } EOF fi else echo " Would reset: dss-claude-plugin/core/skins/${skin}.json" fi done # 7. Clear caches and logs echo "7. Clearing caches and logs..." run_or_show "rm -f .dss/logs/*.jsonl 2>/dev/null || true" run_or_show "rm -rf .dss/logs/browser-logs/* 2>/dev/null || true" run_or_show "touch .dss/logs/dss-operations.jsonl .dss/logs/git-hooks.jsonl" # 8. Regenerate hash manifest echo "8. Regenerating hash manifest..." if [ "$DRY_RUN" = false ]; then ./scripts/regenerate-core-hashes.sh else echo " Would run: ./scripts/regenerate-core-hashes.sh" fi # 9. Stop Storybook if running echo "9. Stopping Storybook..." run_or_show "pkill -f storybook 2>/dev/null || true" echo "" echo "==========================================" if [ "$DRY_RUN" = true ]; then echo " DRY RUN COMPLETE" echo " Run with --confirm to execute" else echo " DSS RESET COMPLETE" echo " Ready for fresh Figma sync" fi echo "=========================================="