This commit is contained in:
@@ -35,6 +35,14 @@ readonly DESKTOP_CONFIG_FLAG=".desktop_configured"
|
||||
readonly LOG_DIR="logs"
|
||||
readonly LOG_FILE="mcp_server.log"
|
||||
|
||||
# Determine portable arguments for sed -i (GNU vs BSD)
|
||||
declare -a SED_INPLACE_ARGS
|
||||
if sed --version >/dev/null 2>&1; then
|
||||
SED_INPLACE_ARGS=(-i)
|
||||
else
|
||||
SED_INPLACE_ARGS=(-i "")
|
||||
fi
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Utility Functions
|
||||
# ----------------------------------------------------------------------------
|
||||
@@ -1057,14 +1065,6 @@ setup_env_file() {
|
||||
cp .env.example .env
|
||||
print_success "Created .env from .env.example"
|
||||
|
||||
# Detect sed version for cross-platform compatibility
|
||||
local sed_cmd
|
||||
if sed --version >/dev/null 2>&1; then
|
||||
sed_cmd="sed -i" # GNU sed (Linux)
|
||||
else
|
||||
sed_cmd="sed -i ''" # BSD sed (macOS)
|
||||
fi
|
||||
|
||||
# Update API keys from environment if present
|
||||
local api_keys=(
|
||||
"GEMINI_API_KEY:your_gemini_api_key_here"
|
||||
@@ -1080,7 +1080,7 @@ setup_env_file() {
|
||||
local key_value="${!key_name:-}"
|
||||
|
||||
if [[ -n "$key_value" ]]; then
|
||||
$sed_cmd "s/$placeholder/$key_value/" .env
|
||||
sed "${SED_INPLACE_ARGS[@]}" "s/$placeholder/$key_value/" .env
|
||||
print_success "Updated .env with $key_name from environment"
|
||||
fi
|
||||
done
|
||||
@@ -1100,16 +1100,8 @@ migrate_env_file() {
|
||||
# Create backup
|
||||
cp .env .env.backup_$(date +%Y%m%d_%H%M%S)
|
||||
|
||||
# Detect sed version for cross-platform compatibility
|
||||
local sed_cmd
|
||||
if sed --version >/dev/null 2>&1; then
|
||||
sed_cmd="sed -i" # GNU sed (Linux)
|
||||
else
|
||||
sed_cmd="sed -i ''" # BSD sed (macOS)
|
||||
fi
|
||||
|
||||
# Replace host.docker.internal with localhost
|
||||
$sed_cmd 's/host\.docker\.internal/localhost/g' .env
|
||||
sed "${SED_INPLACE_ARGS[@]}" 's/host\.docker\.internal/localhost/g' .env
|
||||
|
||||
print_success "Migrated Docker URLs to localhost in .env"
|
||||
echo " (Backup saved as .env.backup_*)"
|
||||
@@ -2499,5 +2491,6 @@ main() {
|
||||
# Script Entry Point
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
# Run main function with all arguments
|
||||
main "$@"
|
||||
if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then
|
||||
main "$@"
|
||||
fi
|
||||
|
||||
@@ -4,6 +4,7 @@ This test file ensures our pip detection improvements work correctly
|
||||
and don't break existing functionality.
|
||||
"""
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
@@ -99,6 +100,29 @@ class TestPipDetectionFix:
|
||||
for pattern in expected_diagnostic_patterns:
|
||||
assert pattern in content, f"Enhanced diagnostic pattern '{pattern}' should be in script"
|
||||
|
||||
def test_setup_env_file_does_not_create_bsd_backup(self, tmp_path):
|
||||
"""Ensure setup_env_file avoids creating .env'' artifacts (BSD sed behavior)."""
|
||||
script_path = Path("./run-server.sh").resolve()
|
||||
|
||||
# Prepare temp workspace with example env
|
||||
env_example = Path(".env.example").read_text()
|
||||
target_example = tmp_path / ".env.example"
|
||||
target_example.write_text(env_example)
|
||||
|
||||
# Run setup_env_file inside isolated shell session
|
||||
command = f"""
|
||||
set -e
|
||||
cd "{tmp_path}"
|
||||
source "{script_path}"
|
||||
setup_env_file
|
||||
"""
|
||||
env = os.environ.copy()
|
||||
subprocess.run(["bash", "-lc", command], check=True, env=env, text=True)
|
||||
|
||||
artifacts = {p.name for p in tmp_path.glob(".env*")}
|
||||
assert ".env''" not in artifacts, "setup_env_file should not create BSD sed backup artifacts"
|
||||
assert ".env" in artifacts, ".env should be created from .env.example"
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
pytest.main([__file__, "-v"])
|
||||
|
||||
Reference in New Issue
Block a user