66 lines
2.0 KiB
Python
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)
|