📦 Panniantong / Agent-Reach

📄 github.py · 32 lines
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32# -*- coding: utf-8 -*-
"""GitHub — check if gh CLI is available."""

import shutil
import subprocess
from .base import Channel


class GitHubChannel(Channel):
    name = "github"
    description = "GitHub 仓库和代码"
    backends = ["gh CLI"]
    tier = 0

    def can_handle(self, url: str) -> bool:
        from urllib.parse import urlparse
        return "github.com" in urlparse(url).netloc.lower()

    def check(self, config=None):
        if not shutil.which("gh"):
            return "warn", "gh CLI 未安装。安装:https://cli.github.com"
        try:
            r = subprocess.run(
                ["gh", "auth", "status"],
                capture_output=True, text=True, timeout=5
            )
            if r.returncode == 0:
                return "ok", "完整可用(读取、搜索、Fork、Issue、PR 等)"
            return "warn", "gh CLI 已安装但未认证。运行 gh auth login 可解锁完整功能"
        except Exception:
            return "warn", "gh CLI 状态检查失败,运行 gh auth status 查看详情"