#!/usr/bin/env bash # git credential helper:用 tea 預設 login 的帳號與 token 回應 HTTPS 認證,避免 git 要互動輸入帳密 # ("could not read Username ... No such device or address")。只處理 get,且只回應該 login 的主機。 [ "${1:-}" = get ] || exit 0 exec python3 -c ' import os, sys req = dict(l.split("=", 1) for l in sys.stdin.read().splitlines() if "=" in l) cfg = os.path.join(os.environ.get("XDG_CONFIG_HOME") or os.path.expanduser("~/.config"), "tea", "config.yml") logins, cur = [], None for line in open(cfg): s = line.strip() if s.startswith("- name:"): cur = {"name": s.split(":", 1)[1].strip()}; logins.append(cur) elif cur is not None and ":" in s: k, v = s.split(":", 1) if k in ("url", "token", "user", "default"): cur[k] = v.strip().strip("\"\x27") want = os.environ.get("HERDR_ISSUE_LOGIN") pick = next((l for l in logins if l["name"] == want), None) if want else None pick = pick or next((l for l in logins if l.get("default") == "true"), None) if not pick or not pick.get("token"): sys.exit(0) host = pick["url"].split("://", 1)[-1].rstrip("/") if req.get("host") != host: sys.exit(0) print("username=" + pick["user"]); print("password=" + pick["token"]) '