[自動コミット] esa.io API を操作する Go 製 CLI ツールを新規作成
All checks were successful
CI / Build & Test (push) Successful in 34s

- esa.io API クライアントの実装と単体テストを追加
- 記事の取得・検索・作成・更新を行うサブコマンドを実装
- GitHub Actions による CI ワークフローを設定
- プロジェクトの基本ファイル(README、.gitignore、LICENSE、go.mod)を作成
This commit is contained in:
2026-05-19 08:52:05 +09:00
commit 730f637518
8 changed files with 853 additions and 0 deletions

89
README.md Normal file
View File

@@ -0,0 +1,89 @@
# esacli
esa.io API v1 を叩く Go 製の CLI。記事の取得・検索・作成・更新ができる。
## インストール
```
go install gitea.ssig33.com/ssig33/esacli@latest
```
もしくはソースからビルド。
```
git clone https://gitea.ssig33.com/ssig33/esacli
cd esacli
go build -o esacli .
```
## 設定
以下の環境変数を読む。
| 変数名 | 内容 |
| --- | --- |
| `ESA_TOKEN` | esa.io のアクセストークン (必須) |
| `ESA_TEAM` | esa.io のチーム名 (必須) |
| `ESA_BASE_URL` | API のベース URL を上書きする (省略可、デバッグ用) |
トークンは `https://[team].esa.io/user/applications` から発行する。
## 使い方
```
esacli <command> [options]
```
### get — 記事を 1 件取得
```
esacli get -number 102
esacli get -number 102 -body # body_md だけを出力
```
### search — 記事を検索
```
esacli search -q "esa API"
esacli search -q "tag:dev" -per-page 50 -sort updated -order desc
```
検索クエリの書式は [esa の検索方法ドキュメント](https://docs.esa.io/posts/104) を参照。
### create — 記事を作成
```
esacli create -name "新しい記事" -body "# 本文" -tags "go,cli" -category "dev/2026/05"
esacli create -name "長文記事" -body-file ./article.md -wip=false -message "first commit"
echo "# stdin から本文" | esacli create -name "stdin 経由" -body-file -
```
`-wip` のデフォルトは `true`
### update — 記事を更新
```
esacli update -number 5 -name "タイトル更新"
esacli update -number 5 -body-file ./article.md -message "本文更新"
esacli update -number 5 -wip false
```
`-wip``true` / `false` を文字列で渡す。指定しなければ変更しない。
## 出力
成功時は JSON を整形して標準出力に書く。失敗時は標準エラーにメッセージを出し、終了コード `1` で終わる。
## 開発
```
go test ./...
go vet ./...
go build ./...
```
`main` ブランチへの push と PR で GitHub Actions が `go vet``go build``go test -race` を実行する。
## ライセンス
WTFPL。詳しくは [LICENSE](./LICENSE)。