feat(main): add Bird setup function
Add bird_x import and setup_bird_if_needed function to main script. The function checks Bird status and offers installation if needed, returning 'bird' if ready, 'declined' if user declined, or None if unavailable. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -26,7 +26,10 @@ from pathlib import Path
|
|||||||
SCRIPT_DIR = Path(__file__).parent.resolve()
|
SCRIPT_DIR = Path(__file__).parent.resolve()
|
||||||
sys.path.insert(0, str(SCRIPT_DIR))
|
sys.path.insert(0, str(SCRIPT_DIR))
|
||||||
|
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
from lib import (
|
from lib import (
|
||||||
|
bird_x,
|
||||||
dates,
|
dates,
|
||||||
dedupe,
|
dedupe,
|
||||||
env,
|
env,
|
||||||
@@ -44,6 +47,47 @@ from lib import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def setup_bird_if_needed(progress: ui.ProgressDisplay) -> Optional[str]:
|
||||||
|
"""Check Bird status and offer installation if needed.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
'bird' if Bird is ready to use,
|
||||||
|
'declined' if user declined install,
|
||||||
|
None if Bird not available and couldn't be installed.
|
||||||
|
"""
|
||||||
|
status = bird_x.get_bird_status()
|
||||||
|
|
||||||
|
# Already working
|
||||||
|
if status["authenticated"]:
|
||||||
|
return 'bird'
|
||||||
|
|
||||||
|
# Installed but not authenticated
|
||||||
|
if status["installed"]:
|
||||||
|
progress.show_bird_auth_help()
|
||||||
|
return None
|
||||||
|
|
||||||
|
# Not installed - offer to install if npm available
|
||||||
|
if status["can_install"]:
|
||||||
|
if progress.prompt_bird_install():
|
||||||
|
success, message = bird_x.install_bird()
|
||||||
|
if success:
|
||||||
|
# Check if auth works now
|
||||||
|
username = bird_x.is_bird_authenticated()
|
||||||
|
if username:
|
||||||
|
progress.show_bird_install_success(username)
|
||||||
|
return 'bird'
|
||||||
|
else:
|
||||||
|
progress.show_bird_auth_help()
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
progress.show_bird_install_failed(message)
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
return 'declined'
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
def load_fixture(name: str) -> dict:
|
def load_fixture(name: str) -> dict:
|
||||||
"""Load a fixture file."""
|
"""Load a fixture file."""
|
||||||
fixture_path = SCRIPT_DIR.parent / "fixtures" / name
|
fixture_path = SCRIPT_DIR.parent / "fixtures" / name
|
||||||
|
|||||||
Reference in New Issue
Block a user