Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 28 additions & 5 deletions src/gitfetch/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

import argparse
import sys
import os
import subprocess
from typing import Optional

Expand All @@ -29,6 +28,12 @@ def _background_refresh_cache_subprocess(username: str) -> None:
provider = config_manager.get_provider()
provider_url = config_manager.get_provider_url()
token = config_manager.get_token()
if provider == None:
print("Provider not set")
exit(1)
if provider_url == None:
print("Provider url not set")
exit(1)
fetcher = _create_fetcher(provider, provider_url, token)

fresh_user_data = fetcher.fetch_user_data(username)
Expand Down Expand Up @@ -201,6 +206,7 @@ def main() -> int:

# Check for --local flag
if args.local:
import os
if not os.path.exists('.git'):
print("Error: --local requires .git folder", file=sys.stderr)
return 1
Expand Down Expand Up @@ -261,6 +267,13 @@ def main() -> int:
provider = config_manager.get_provider()
provider_url = config_manager.get_provider_url()
token = config_manager.get_token()
if provider == None:
print("Provider not set")
return 1
if provider_url == None:
print("Provider url not set")
return 1

fetcher = _create_fetcher(provider, provider_url, token)

# Handle custom box character
Expand Down Expand Up @@ -354,6 +367,10 @@ def main() -> int:
'website': '',
}

if display_name == None:
print("display name not set")
return 1

formatter.display(
display_name,
user_data,
Expand Down Expand Up @@ -534,7 +551,7 @@ def _create_fetcher(provider: str, base_url: str, token: Optional[str] = None):
def _initialize_gitfetch(config_manager: ConfigManager) -> bool:
"""
Initialize gitfetch by creating config directory and setting
the authenticated user as default.
multiple configuration options.

Args:
config_manager: ConfigManager instance
Expand Down Expand Up @@ -566,18 +583,24 @@ def _initialize_gitfetch(config_manager: ConfigManager) -> bool:

# Ask for token if needed
token = None
if provider in ['gitlab', 'gitea', 'sourcehut']:
if provider in ['gitlab', 'gitea', 'sourcehut', 'github']:
token_input = input(
f"Enter your {provider} personal access token "
f"Enter your {provider} personal access token{', needed for private repositories' if provider == 'github' else ''}\n"
+
"(optional, press Enter to skip): "
).strip()
if token_input:
token = token_input
config_manager.set_token(token)

# Create appropriate fetcher
url = config_manager.get_provider_url()
if url == None:
print("Provider url could not be found.", file=sys.stderr)
return False

fetcher = _create_fetcher(
provider, config_manager.get_provider_url(), token
provider, url, token
)

# Try to get authenticated user
Expand Down