Files
acc-installer/module/downloader_copier.py

66 lines
2.0 KiB
Python

"""
Directory setup and software file copying module.
"""
import logging
import os
from pathlib import Path
import shutil
from typing import Optional
from module.config import InstallerConfig, detect_target_drive
logger = logging.getLogger("acc_installer")
def setup_directories_and_copy(config: Optional[InstallerConfig] = None) -> Path:
"""
Create directories on the target drive and copy software packages from source.
"""
if config is None:
config = InstallerConfig()
print(f"[+] Selected target drive: {config.target_drive}")
print(f"[+] Target base directory: {config.base_dir}")
# Ensure source directory exists
source_dir = Path(config.source_dir)
if not source_dir.exists():
raise FileNotFoundError(f"Source directory does not exist: {source_dir}")
# Create destination directories
config.ensure_directories()
print(f" [+] Target directories ready at {config.soft_dir}")
print(f"[+] Copying files from {source_dir} to {config.soft_dir} ...")
if config.dry_run:
items = list(source_dir.iterdir())
print(f" [DRY-RUN] Would copy {len(items)} items from {source_dir} to {config.soft_dir}")
return config.soft_dir
copied_count = 0
for item in source_dir.iterdir():
dest = config.soft_dir / item.name
if item.is_dir():
shutil.copytree(item, dest, dirs_exist_ok=True)
else:
shutil.copy2(item, dest)
copied_count += 1
print(f" [+] {copied_count} file(s)/folder(s) copied successfully to {config.soft_dir}.")
return config.soft_dir
if __name__ == "__main__":
import sys
logging.basicConfig(level=logging.INFO, format="%(message)s")
print("[*] Running directory setup and copier module standalone ...")
try:
cfg = InstallerConfig(target_drive=detect_target_drive())
setup_directories_and_copy(cfg)
print("[+] Directory copier module completed successfully.")
except Exception as e:
print(f"[-] Error: {e}", file=sys.stderr)
sys.exit(1)