feat: 實作 bear CLI 骨架與 PAT 模式共用基礎(issue #6)
- 專案骨架:Elixir + Mix escript(單檔可執行 bear),HTTP 一律 Req - 設定/憑證檔讀寫:0600、原子寫入(rename)、O_CREAT|O_EXCL 防 symlink - PAT Bearer 呼叫 /userinfo;--json 輸出;規格化退出碼 - 補齊 main 規格承諾的 BEAR_TOKEN 環境變數(優先於憑證檔、不寫入) - login 無效 PAT 退出碼 3(依 docs/commands.md §3.1);token --refresh 用法錯誤 2(§3.3) - 35 個單元測試;mix precommit(compile --warnings-as-errors + format + test)全綠 - 沿用已關閉 PR #3 的實作(feat/pat-mode-mvp 分支),文件改依 main 現行版本更新 apps 管理指令待 #5 規格與 alterminal/bear#28 API 就緒後實作。
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
**Bear CLI** 是 [澳特科技](https://alterminal.com)(Alter Technology)單點登入系統 [Bear](https://gitea.alterminal.com/alterminal/bear) 的**終端機(CLI)客戶端**:讓使用者在 Linux 終端機以 Bear 帳號登入(Device Flow 或個人存取權杖)、查詢身分、取得 Token,作為 SSO 的終端入口。
|
||||
|
||||
> **狀態:規劃階段**。本倉庫目前只規劃指令介面(command spec),**尚未實作任何程式碼**。
|
||||
> **狀態:已實作 PAT 模式 MVP(Elixir + Req,issue #6)**。`login --token <PAT>`、`whoami`、`token`、`logout`、`status` 已可用;Device Authorization Grant(RFC 8628)登入待伺服器端 P1(bear 倉庫)完成後再接。
|
||||
> 伺服器端採用的 OIDC **Device Authorization Grant(RFC 8628)** 方向,詳見 bear 倉庫的設計文件 `docs/cli-feature-plan.md`(issue #17)。
|
||||
> Bear 已支援**個人存取權杖(Personal Access Token,PAT)**;CLI 規劃以其作為完全免瀏覽器的替代登入方式(見下文)。
|
||||
|
||||
@@ -29,6 +29,33 @@ Bear 目前所有流程都依賴「瀏覽器」:登入 `/login`、儀表板 La
|
||||
|
||||
---
|
||||
|
||||
## 實作狀態(PAT 模式 MVP)
|
||||
|
||||
目前已實作**個人存取權杖(PAT)模式**的最小可用版本(issue #6 骨架部分):
|
||||
|
||||
| 指令 | 狀態 |
|
||||
|------|------|
|
||||
| `bear login --token <PAT>` | ✅ 已實作(PAT 模式;Device Flow 待伺服器端 P1) |
|
||||
| `bear whoami` | ✅ 已實作(`GET /userinfo`,Bearer PAT;支援 `BEAR_TOKEN` 環境變數) |
|
||||
| `bear token` | ✅ 已實作(印出 PAT;`--refresh` 為用法錯誤) |
|
||||
| `bear logout` | ✅ 已實作(清除本機憑證;PAT 需至網頁撤銷) |
|
||||
| `bear status` | ✅ 已實作(純本機判定,顯示 PAT/環境變數模式) |
|
||||
| `bear apps` | ⏳ 待 #5 規格與 alterminal/bear#28 API 就緒後實作 |
|
||||
|
||||
### 建置與執行
|
||||
|
||||
```bash
|
||||
mix deps.get # 安裝依賴(Req、Jason)
|
||||
mix test # 跑單元測試
|
||||
mix escript.build # 產生單檔可執行 `bear`
|
||||
./bear --help
|
||||
./bear login --token <PAT> --issuer https://alterminal.com
|
||||
```
|
||||
|
||||
> 發行格式目前採 `mix escript`(目標機需 Erlang);self-contained release(bakeware/burrito)仍為待定方向(見 `docs/commands.md` §7)。
|
||||
|
||||
---
|
||||
|
||||
## 全域選項
|
||||
|
||||
| 選項 | 說明 | 預設 |
|
||||
|
||||
Reference in New Issue
Block a user