Skip to content

Commit 43cedfa

Browse files
committed
ask for token on boot menu, removed from --help
1 parent 3cf0f4c commit 43cedfa

File tree

2 files changed

+46
-13
lines changed

2 files changed

+46
-13
lines changed

src/gitfetch/cli.py

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,6 @@ def parse_args() -> argparse.Namespace:
4141
help="Clear the cache and exit"
4242
)
4343

44-
general_group.add_argument(
45-
"--token",
46-
type=str,
47-
help="Personal access token (optional, increases rate limits)"
48-
)
49-
5044
general_group.add_argument(
5145
"--version",
5246
action="store_true",
@@ -199,7 +193,8 @@ def main() -> int:
199193
cache_manager = CacheManager(cache_expiry_hours=cache_expiry)
200194
provider = config_manager.get_provider()
201195
provider_url = config_manager.get_provider_url()
202-
fetcher = _create_fetcher(provider, provider_url)
196+
token = config_manager.get_token()
197+
fetcher = _create_fetcher(provider, provider_url, token)
203198

204199
# Handle custom box character
205200
custom_box = args.custom_box
@@ -355,20 +350,20 @@ def _prompt_provider() -> Optional[str]:
355350
return None
356351

357352

358-
def _create_fetcher(provider: str, base_url: str):
353+
def _create_fetcher(provider: str, base_url: str, token: Optional[str] = None):
359354
"""Create the appropriate fetcher for the provider."""
360355
if provider == 'github':
361356
from .fetcher import GitHubFetcher
362-
return GitHubFetcher()
357+
return GitHubFetcher(token)
363358
elif provider == 'gitlab':
364359
from .fetcher import GitLabFetcher
365-
return GitLabFetcher(base_url)
360+
return GitLabFetcher(base_url, token)
366361
elif provider == 'gitea':
367362
from .fetcher import GiteaFetcher
368-
return GiteaFetcher(base_url)
363+
return GiteaFetcher(base_url, token)
369364
elif provider == 'sourcehut':
370365
from .fetcher import SourcehutFetcher
371-
return SourcehutFetcher(base_url)
366+
return SourcehutFetcher(base_url, token)
372367
else:
373368
raise ValueError(f"Unsupported provider: {provider}")
374369

@@ -406,8 +401,21 @@ def _initialize_gitfetch(config_manager: ConfigManager) -> bool:
406401
elif provider == 'sourcehut':
407402
config_manager.set_provider_url('https://git.sr.ht')
408403

404+
# Ask for token if needed
405+
token = None
406+
if provider in ['gitlab', 'gitea', 'sourcehut']:
407+
token_input = input(
408+
f"Enter your {provider} personal access token "
409+
"(optional, press Enter to skip): "
410+
).strip()
411+
if token_input:
412+
token = token_input
413+
config_manager.set_token(token)
414+
409415
# Create appropriate fetcher
410-
fetcher = _create_fetcher(provider, config_manager.get_provider_url())
416+
fetcher = _create_fetcher(
417+
provider, config_manager.get_provider_url(), token
418+
)
411419

412420
# Try to get authenticated user
413421
try:

src/gitfetch/config.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,27 @@ def set_custom_box(self, box: str) -> None:
236236
self.config['DEFAULT'] = {}
237237
self.config['DEFAULT']['custom_box'] = box
238238

239+
def get_token(self) -> Optional[str]:
240+
"""
241+
Get the personal access token from config.
242+
243+
Returns:
244+
Token or None if not set
245+
"""
246+
token = self.config.get('DEFAULT', 'token', fallback='')
247+
return token if token else None
248+
249+
def set_token(self, token: str) -> None:
250+
"""
251+
Set the personal access token in config.
252+
253+
Args:
254+
token: Personal access token
255+
"""
256+
if 'DEFAULT' not in self.config:
257+
self.config['DEFAULT'] = {}
258+
self.config['DEFAULT']['token'] = token
259+
239260
def save(self) -> None:
240261
"""Save configuration to file."""
241262
import os
@@ -263,6 +284,10 @@ def save(self) -> None:
263284
fallback='')
264285
f.write(f"provider_url = {provider_url}\n")
265286

287+
token = self.config.get('DEFAULT', 'token', fallback='')
288+
if token:
289+
f.write(f"token = {token}\n")
290+
266291
custom_box = self.config.get('DEFAULT', 'custom_box', fallback='')
267292
if custom_box:
268293
f.write(f"custom_box = {custom_box}\n")

0 commit comments

Comments
 (0)