139 lines
4.9 KiB
Bash
Executable File
139 lines
4.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# ============================================================================
|
|
# restore-dev-config.sh
|
|
# ============================================================================
|
|
# This script restores the development workspace configuration after
|
|
# preparing for CI/Docker builds.
|
|
#
|
|
# Usage:
|
|
# ./scripts/restore-dev-config.sh
|
|
#
|
|
# This will:
|
|
# 1. Restore pnpm-workspace.yaml from git
|
|
# 2. Restore .npmrc from git
|
|
# 3. Reinstall dependencies with workspace linking enabled
|
|
#
|
|
# See docs/ci-docker-dependencies-strategy.md for more information.
|
|
# ============================================================================
|
|
|
|
set -e
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
|
|
cd "$PROJECT_ROOT"
|
|
|
|
echo -e "${BLUE}============================================================================${NC}"
|
|
echo -e "${BLUE} Restoring Development Configuration${NC}"
|
|
echo -e "${BLUE}============================================================================${NC}"
|
|
echo ""
|
|
|
|
# Step 1: Restore workspace configuration and package.json files
|
|
echo -e "${YELLOW}[1/4] Restoring workspace configuration and package.json files...${NC}"
|
|
|
|
# List of files to restore
|
|
FILES_TO_RESTORE=(
|
|
"pnpm-workspace.yaml"
|
|
".npmrc"
|
|
"meet-ce/frontend/package.json"
|
|
"meet-ce/frontend/projects/shared-meet-components/package.json"
|
|
)
|
|
|
|
# Check if any files were modified
|
|
ANY_MODIFIED=false
|
|
for file in "${FILES_TO_RESTORE[@]}"; do
|
|
if [ -f "$file" ] && ! git diff --quiet "$file" 2>/dev/null; then
|
|
ANY_MODIFIED=true
|
|
break
|
|
fi
|
|
done
|
|
|
|
if [ "$ANY_MODIFIED" = false ]; then
|
|
echo -e "${GREEN}✓ All files are already in development mode${NC}"
|
|
else
|
|
# Restore all files from git
|
|
git checkout "${FILES_TO_RESTORE[@]}" 2>/dev/null || {
|
|
echo -e "${RED}Error: Could not restore configuration files from git${NC}"
|
|
echo -e "${YELLOW}Make sure you're in a git repository${NC}"
|
|
exit 1
|
|
}
|
|
echo -e "${GREEN}✓ Configuration and package.json files restored${NC}"
|
|
fi
|
|
echo ""
|
|
|
|
# Step 2: Clean up any tarball artifacts
|
|
# echo -e "${YELLOW}[2/4] Cleaning up tarball artifacts...${NC}"
|
|
# if ls meet-ce/frontend/*.tgz >/dev/null 2>&1; then
|
|
# rm -f meet-ce/frontend/*.tgz
|
|
# echo -e "${GREEN}✓ Tarball artifacts removed${NC}"
|
|
# else
|
|
# echo -e "${GREEN}✓ No tarball artifacts to clean${NC}"
|
|
# fi
|
|
echo ""
|
|
|
|
# Step 3: Reinstall dependencies
|
|
echo -e "${YELLOW}[3/4] Reinstalling dependencies with workspace linking...${NC}"
|
|
echo -e "${BLUE}This will link openvidu-components-angular from ../openvidu/...${NC}"
|
|
echo ""
|
|
|
|
# Check if external package exists
|
|
if [ ! -d "../openvidu/openvidu-components-angular" ]; then
|
|
echo -e "${RED}Warning: External package not found: ../openvidu/openvidu-components-angular${NC}"
|
|
echo -e "${YELLOW}You may need to clone the openvidu repository:${NC}"
|
|
echo -e " ${YELLOW}git clone https://github.com/OpenVidu/openvidu.git ../openvidu${NC}"
|
|
echo ""
|
|
read -p "Continue anyway? (y/n) " -n 1 -r
|
|
echo
|
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
echo -e "${RED}Aborted${NC}"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
pnpm install
|
|
echo -e "${GREEN}✓ Dependencies installed with workspace linking${NC}"
|
|
echo ""
|
|
|
|
# Step 4: Verify workspace linking is active
|
|
echo -e "${YELLOW}[4/4] Verifying workspace linking...${NC}"
|
|
|
|
# Check if openvidu-components-angular is using workspace protocol
|
|
if grep -q '"openvidu-components-angular": "workspace:\*"' meet-ce/frontend/package.json; then
|
|
echo -e "${GREEN}✓ Frontend: openvidu-components-angular using workspace:*${NC}"
|
|
else
|
|
echo -e "${RED}✗ Frontend: openvidu-components-angular NOT using workspace:*${NC}"
|
|
echo -e "${YELLOW} Current value in package.json:${NC}"
|
|
grep "openvidu-components-angular" meet-ce/frontend/package.json || echo " Not found"
|
|
fi
|
|
|
|
if grep -q '"openvidu-components-angular": "\^' meet-ce/frontend/projects/shared-meet-components/package.json; then
|
|
echo -e "${GREEN}✓ Shared-components: openvidu-components-angular using ^version (peerDependency)${NC}"
|
|
else
|
|
echo -e "${YELLOW}⚠ Shared-components: Verify peerDependency manually${NC}"
|
|
fi
|
|
|
|
# Check if pnpm list shows workspace link
|
|
if pnpm list openvidu-components-angular 2>/dev/null | grep -q "link:"; then
|
|
echo -e "${GREEN}✓ Workspace linking is active (linked from ../openvidu/...)${NC}"
|
|
else
|
|
echo -e "${RED}✗ WARNING: Workspace linking might not be active${NC}"
|
|
echo -e "${YELLOW} This is normal if openvidu-components-angular is not in ../openvidu/${NC}"
|
|
fi
|
|
echo ""
|
|
|
|
echo -e "${GREEN}============================================================================${NC}"
|
|
echo -e "${GREEN} ✓ Development configuration restored successfully!${NC}"
|
|
echo -e "${GREEN}============================================================================${NC}"
|
|
echo ""
|
|
echo -e "${BLUE}You can now continue local development:${NC}"
|
|
echo -e " ${YELLOW}./meet.sh dev${NC}"
|
|
echo ""
|