68 lines
2.2 KiB
Python
68 lines
2.2 KiB
Python
import os
|
|
import logging
|
|
import subprocess
|
|
import time
|
|
from pathlib import Path
|
|
from utils import force_close_jan, is_jan_running, start_jan_app
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
def install_jan_version(installer_path, version_type="old"):
|
|
"""
|
|
Install a specific version of Jan
|
|
|
|
Args:
|
|
installer_path: Path to the installer file
|
|
version_type: "old" or "new" for logging purposes
|
|
"""
|
|
logger.info(f"Installing Jan {version_type} version from: {installer_path}")
|
|
|
|
# Force close any running Jan instances first
|
|
force_close_jan("Jan.exe")
|
|
force_close_jan("Jan-nightly.exe")
|
|
|
|
try:
|
|
if installer_path.endswith('.exe'):
|
|
# Windows installer
|
|
subprocess.run([installer_path, '/S'], check=True)
|
|
elif installer_path.endswith('.deb'):
|
|
# Ubuntu installer
|
|
subprocess.run(['sudo', 'dpkg', '-i', installer_path], check=True)
|
|
elif installer_path.endswith('.dmg'):
|
|
# macOS installer - need to mount and copy
|
|
subprocess.run(['hdiutil', 'attach', installer_path], check=True)
|
|
# This is simplified - actual implementation would need to handle dmg mounting
|
|
|
|
logger.info(f"Successfully installed Jan {version_type} version")
|
|
|
|
# Wait for installation to complete
|
|
time.sleep(30)
|
|
|
|
except subprocess.CalledProcessError as e:
|
|
logger.error(f"Failed to install Jan {version_type} version: {e}")
|
|
raise
|
|
except Exception as e:
|
|
logger.error(f"Unexpected error installing Jan {version_type} version: {e}")
|
|
raise
|
|
|
|
# Backup functionality removed as it's redundant for direct persistence testing
|
|
|
|
def prepare_migration_environment():
|
|
"""
|
|
Prepare environment for migration testing
|
|
"""
|
|
logger.info("Preparing migration test environment...")
|
|
|
|
# Create migration logs directory
|
|
migration_logs_dir = "migration_logs"
|
|
os.makedirs(migration_logs_dir, exist_ok=True)
|
|
|
|
# Create migration artifacts directory
|
|
migration_artifacts_dir = "migration_artifacts"
|
|
os.makedirs(migration_artifacts_dir, exist_ok=True)
|
|
|
|
return {
|
|
"logs_dir": migration_logs_dir,
|
|
"artifacts_dir": migration_artifacts_dir
|
|
}
|