f
This commit is contained in:
@@ -865,6 +865,29 @@ def main() -> int:
|
|||||||
# Non-interactive, fall back to delegating to platform helper
|
# Non-interactive, fall back to delegating to platform helper
|
||||||
return "delegate"
|
return "delegate"
|
||||||
|
|
||||||
|
def _prompt_hydrus_install_location() -> tuple[Path, str] | None:
|
||||||
|
"""Ask the user for the Hydrus installation root and folder name."""
|
||||||
|
default_root = Path.home()
|
||||||
|
default_dest_name = "hydrusnetwork"
|
||||||
|
print("\n[Standalone Hydrus Installation]")
|
||||||
|
print("Choose where to install HydrusNetwork (the installer will create the repo there).")
|
||||||
|
try:
|
||||||
|
root_input = input(f"Root directory [{default_root}]: ").strip()
|
||||||
|
if root_input:
|
||||||
|
if len(root_input) == 2 and root_input[1] == ":" and root_input[0].isalpha():
|
||||||
|
root_input += "\\"
|
||||||
|
expanded = os.path.expandvars(os.path.expanduser(root_input))
|
||||||
|
root_path = Path(expanded).resolve()
|
||||||
|
else:
|
||||||
|
root_path = default_root
|
||||||
|
|
||||||
|
dest_input = input(f"Folder name [{default_dest_name}]: ").strip()
|
||||||
|
dest_name = dest_input or default_dest_name
|
||||||
|
return root_path, dest_name
|
||||||
|
except (EOFError, KeyboardInterrupt):
|
||||||
|
print("\nHydrus installation cancelled.")
|
||||||
|
return None
|
||||||
|
|
||||||
def _clone_repo(url: str, dest: Path, depth: int = 1) -> bool:
|
def _clone_repo(url: str, dest: Path, depth: int = 1) -> bool:
|
||||||
"""Helper to clone a repository."""
|
"""Helper to clone a repository."""
|
||||||
try:
|
try:
|
||||||
@@ -1131,6 +1154,11 @@ def main() -> int:
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
if hydrus_script.exists():
|
if hydrus_script.exists():
|
||||||
|
install_location = _prompt_hydrus_install_location()
|
||||||
|
if install_location is None:
|
||||||
|
return 0
|
||||||
|
install_root, install_dest = install_location
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Clear out project-venv related env vars to prevent auto-reexec
|
# Clear out project-venv related env vars to prevent auto-reexec
|
||||||
env = os.environ.copy()
|
env = os.environ.copy()
|
||||||
@@ -1141,7 +1169,15 @@ def main() -> int:
|
|||||||
# This ensures it uses the same environment that started the bootstrap.
|
# This ensures it uses the same environment that started the bootstrap.
|
||||||
# Pass sys.stdin to ensure the subprocess can talk to the terminal.
|
# Pass sys.stdin to ensure the subprocess can talk to the terminal.
|
||||||
subprocess.check_call(
|
subprocess.check_call(
|
||||||
[sys.executable, str(hydrus_script), "--no-project-venv", "--interactive"],
|
[
|
||||||
|
sys.executable,
|
||||||
|
str(hydrus_script),
|
||||||
|
"--no-project-venv",
|
||||||
|
"--root",
|
||||||
|
str(install_root),
|
||||||
|
"--dest-name",
|
||||||
|
install_dest,
|
||||||
|
],
|
||||||
env=env,
|
env=env,
|
||||||
stdin=sys.stdin
|
stdin=sys.stdin
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user