feat: Add Gemini provider env vars to Makefile and CLI options

- Add PROVIDER, GEMINI_ACCOUNT_DIR, GEMINI_BROWSER_VISIBLE, GEMINI_MAX_SESSIONS to Makefile
- Update gemini-login command to support --visible flag
- Add help text showing env vars and usage examples
- Display session save location and browser visibility on startup
This commit is contained in:
王性驊 2026-04-02 22:53:41 +08:00
parent 33a0e53709
commit df22640d6a
3 changed files with 48 additions and 3 deletions

View File

@ -43,6 +43,12 @@ ANTHROPIC_BASE_HOST ?= $(HOST)
TLS_CERT ?=
TLS_KEY ?=
# ── Gemini Web Provider ───────────────────────
PROVIDER ?= cursor
GEMINI_ACCOUNT_DIR ?=
GEMINI_BROWSER_VISIBLE ?= false
GEMINI_MAX_SESSIONS ?= 3
# ── 記錄 ──────────────────────────────────────
SESSIONS_LOG ?=
@ -84,6 +90,12 @@ env:
@printf 'CURSOR_BRIDGE_TLS_CERT=%s\n' "$(TLS_CERT)" >> $(ENV_FILE)
@printf 'CURSOR_BRIDGE_TLS_KEY=%s\n' "$(TLS_KEY)" >> $(ENV_FILE)
@printf 'CURSOR_BRIDGE_SESSIONS_LOG=%s\n' "$(SESSIONS_LOG)" >> $(ENV_FILE)
@printf '# ── Provider 設定 ───────────────────────────\n' >> $(ENV_FILE)
@printf 'CURSOR_BRIDGE_PROVIDER=%s\n' "$(PROVIDER)" >> $(ENV_FILE)
@printf '# Gemini Web Provider 設定(當 PROVIDER=gemini-web 時使用)\n' >> $(ENV_FILE)
@printf 'GEMINI_ACCOUNT_DIR=%s\n' "$(GEMINI_ACCOUNT_DIR)" >> $(ENV_FILE)
@printf 'GEMINI_BROWSER_VISIBLE=%s\n' "$(GEMINI_BROWSER_VISIBLE)" >> $(ENV_FILE)
@printf 'GEMINI_MAX_SESSIONS=%s\n' "$(GEMINI_MAX_SESSIONS)" >> $(ENV_FILE)
@echo "已產生 $(ENV_FILE)"
## 編譯二進位檔

View File

@ -6,12 +6,24 @@ import (
"cursor-api-proxy/internal/providers/geminiweb"
"fmt"
"os"
"strings"
)
func main() {
accountName := ""
if len(os.Args) > 1 {
accountName = os.Args[1]
visible := false
// 解析命令列參數
for i := 1; i < len(os.Args); i++ {
arg := os.Args[i]
if arg == "--visible" || arg == "-v" {
visible = true
} else if arg == "--help" || arg == "-h" {
printHelp()
os.Exit(0)
} else if !strings.HasPrefix(arg, "-") {
accountName = arg
}
}
e := env.OsEnvToMap()
@ -19,10 +31,31 @@ func main() {
cfg := config.LoadBridgeConfig(e, "")
cfg.GeminiAccountDir = loaded.GeminiAccountDir
cfg.GeminiBrowserVisible = true
// 命令列參數優先於環境變數
cfg.GeminiBrowserVisible = visible || loaded.GeminiBrowserVisible
fmt.Printf("Session 儲存位置: %s\n", cfg.GeminiAccountDir)
fmt.Printf("瀏覽器可見: %v\n", cfg.GeminiBrowserVisible)
if err := geminiweb.RunLogin(cfg, accountName); err != nil {
fmt.Fprintf(os.Stderr, "Error: %v\n", err)
os.Exit(1)
}
}
func printHelp() {
fmt.Println("使用方法: gemini-login [options] [session-name]")
fmt.Println("")
fmt.Println("選項:")
fmt.Println(" --visible, -v 顯示瀏覽器視窗(預設隱藏)")
fmt.Println(" --help, -h 顯示此說明")
fmt.Println("")
fmt.Println("環境變數:")
fmt.Println(" GEMINI_ACCOUNT_DIR Session 儲存目錄(預設: ~/.cursor-api-proxy/gemini-accounts")
fmt.Println(" GEMINI_BROWSER_VISIBLE 是否顯示瀏覽器true/false預設: false")
fmt.Println("")
fmt.Println("範例:")
fmt.Println(" gemini-login my-session")
fmt.Println(" gemini-login --visible my-session")
fmt.Println(" GEMINI_BROWSER_VISIBLE=true gemini-login")
}

BIN
gemini-login Executable file

Binary file not shown.