feat(config): support multiple Gitea profiles via GITEA_PROFILE env var
未設時讀 config.env(行為不變);設了讀 config.<profile>.env。 .gitignore 新增 config.*.env 但保留 config.example.env。 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1 +1,3 @@
|
||||
config.env
|
||||
config.*.env
|
||||
!config.example.env
|
||||
|
||||
@@ -35,7 +35,7 @@ bash /path/to/gitea-cli/scripts/list.sh [--private|--public] [--format table|tsv
|
||||
|
||||
所有 API / push / clone 都走 lib,腳本本身不寫 curl 也不直接操作 credential helper。lib 提供:
|
||||
|
||||
- `load_config`:讀 `config.env`,檢查三個變數都非空非預設
|
||||
- `load_config`:讀 `config.env`(或 `GITEA_PROFILE` 指定時讀 `config.<profile>.env`),檢查三個變數都非空非預設
|
||||
- `gitea_api <METHOD> <path> [json-body]`:單一 API 呼叫入口;回傳後讀 `$HTTP_CODE` 與 `$GITEA_API_RESP_FILE`
|
||||
- `git_push_with_token <branch>` / `git_push_tag_with_token <tag>` / `git_clone_with_token <clean-url> <target>`:一次性帶 token 的 git 操作
|
||||
- `infer_repo_from_cwd`:從 `git remote get-url origin` 推斷 `owner/repo`
|
||||
|
||||
11
README.md
11
README.md
@@ -41,6 +41,15 @@ gitea-cli/
|
||||
GITEA_TOKEN=你剛才產生的_token
|
||||
```
|
||||
|
||||
**多組 Gitea 站/帳號**:另存成 `config.<profile>.env`,執行腳本時帶 `GITEA_PROFILE=<profile>` 切換:
|
||||
```bash
|
||||
cp config.example.env config.work.env
|
||||
# 編輯 config.work.env
|
||||
|
||||
GITEA_PROFILE=work bash /path/to/gitea-cli/scripts/list.sh
|
||||
```
|
||||
未設 `GITEA_PROFILE` 時讀 `config.env`(預設)。`config.*.env` 已被 `.gitignore` 排除。
|
||||
|
||||
3. (選用)讓 Claude Code 自動辨識這個 skill(兩擇一):
|
||||
|
||||
**A. Symlink 本地開發目錄**(適合會持續改腳本的情境)
|
||||
@@ -130,7 +139,7 @@ A:origin 是乾淨 URL,再次 push 會要求認證。解法二選一:
|
||||
A:重新到 Gitea 產生 token,覆蓋 `config.env` 裡的 `GITEA_TOKEN`。
|
||||
|
||||
**Q:要換成另一個 Gitea 站或使用者?**
|
||||
A:直接改 `config.env` 的 `GITEA_URL` / `GITEA_USER`。
|
||||
A:常駐切換就另存成 `config.<profile>.env`,執行時帶 `GITEA_PROFILE=<profile>`;只是單次替換就直接改 `config.env` 的 `GITEA_URL` / `GITEA_USER`。
|
||||
|
||||
**Q:可以用在非 Gitea(例如 Gitea clone 產品)嗎?**
|
||||
A:本腳本用的是 Gitea API v1,Forgejo 相容,GitHub/GitLab 不相容。
|
||||
|
||||
13
SKILL.md
13
SKILL.md
@@ -17,6 +17,19 @@ description: 對自架 Gitea 做常見操作:建 repo 並推送、列出 repo
|
||||
```
|
||||
3. `config.env` 已被 `.gitignore` 排除。
|
||||
|
||||
### 多組 Gitea 站/帳號
|
||||
|
||||
需要切換不同 Gitea 站或帳號時,另外存成 `config.<profile>.env`,呼叫腳本時帶 `GITEA_PROFILE`:
|
||||
|
||||
```bash
|
||||
cp config.example.env config.work.env
|
||||
# 編輯 config.work.env
|
||||
|
||||
GITEA_PROFILE=work bash <skill-path>/scripts/list.sh
|
||||
```
|
||||
|
||||
`GITEA_PROFILE` 未設時讀 `config.env`(預設)。`config.*.env` 已被 `.gitignore` 排除。
|
||||
|
||||
## 常見情境 → 對應腳本
|
||||
|
||||
`<skill-path>` 代表本 skill 所在路徑(clone 下來的位置或 `~/.claude/skills/gitea-cli` symlink)。
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
# 複製此檔為 config.env 後填入實際值
|
||||
# cp config.example.env config.env
|
||||
#
|
||||
# 多組 Gitea 站/帳號:另存為 config.<profile>.env,
|
||||
# 執行腳本時帶 GITEA_PROFILE=<profile> 切換。例如:
|
||||
# cp config.example.env config.work.env # 編輯後
|
||||
# GITEA_PROFILE=work bash scripts/list.sh
|
||||
|
||||
# Gitea 站台網址(不要結尾 /)
|
||||
GITEA_URL=http://your-gitea.example.com:3000
|
||||
|
||||
@@ -12,7 +12,12 @@ set -euo pipefail
|
||||
|
||||
_LIB_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
_SKILL_DIR="$(cd "${_LIB_DIR}/../.." && pwd)"
|
||||
CONFIG_FILE="${_SKILL_DIR}/config.env"
|
||||
# GITEA_PROFILE 未設 → 讀 config.env;設了 → 讀 config.<profile>.env
|
||||
if [[ -n "${GITEA_PROFILE:-}" ]]; then
|
||||
CONFIG_FILE="${_SKILL_DIR}/config.${GITEA_PROFILE}.env"
|
||||
else
|
||||
CONFIG_FILE="${_SKILL_DIR}/config.env"
|
||||
fi
|
||||
|
||||
GITEA_API_RESP_FILE=""
|
||||
_cleanup_common() {
|
||||
@@ -52,6 +57,10 @@ load_config() {
|
||||
echo " cp ${_SKILL_DIR}/config.example.env ${CONFIG_FILE}"
|
||||
echo ""
|
||||
echo "然後編輯 ${CONFIG_FILE} 填入 GITEA_URL / GITEA_USER / GITEA_TOKEN"
|
||||
if [[ -n "${GITEA_PROFILE:-}" ]]; then
|
||||
echo ""
|
||||
echo "(目前使用 profile:${GITEA_PROFILE})"
|
||||
fi
|
||||
} >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user