diff --git a/Makefile b/Makefile index f0eb2c7..b37bfaf 100644 --- a/Makefile +++ b/Makefile @@ -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)" ## 編譯二進位檔 diff --git a/cmd/gemini-login/main.go b/cmd/gemini-login/main.go index a04a354..7a0d7f7 100644 --- a/cmd/gemini-login/main.go +++ b/cmd/gemini-login/main.go @@ -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") +} diff --git a/gemini-login b/gemini-login new file mode 100755 index 0000000..9dd08a6 Binary files /dev/null and b/gemini-login differ