高性能なLaTeX論文執筆環境のエコシステム管理ツール。並列処理により従来のBashスクリプト(12秒)から1.5秒へ88%の性能向上を実現。
- 🚀 高速並列処理:
Task.async_streamによる並列リポジトリ処理 - 📊 GitHub API統合: Issues/PR統計の自動取得
- 🧪 高品質実装: 91.22%テストカバレッジ、Credo・Dialyzer検証済み
- ⚙️ 柔軟な設定: 並列度・フォーマット・フィルタリングオプション
- 🛡️ エラーハンドリング: 包括的なエラー処理とタイムアウト制御
エコシステムの workspace 直下に clone してビルドします:
git clone https://github.com/smkwlab/ecosystem-manager.git
cd ecosystem-manager
mix deps.get
mix escript.build
# ビルドした escript を実行
./ecosystem-manager statusどのディレクトリからでもecosystem-managerを実行できるように、workspace pathを設定できます:
-
設定例ファイルの生成
./ecosystem-manager init-config # → ~/.config/ecosystem-manager/config.example.yml(注釈付き) -
config.yml として配置・編集
cd ~/.config/ecosystem-manager cp config.example.yml config.yml vim config.yml
-
workspace_pathを設定
workspace_path: "~/SynologyDrive/semi/LaTeX/latex-ecosystem"
ユーザー設定 ~/.config/ecosystem-manager/config.yml は純粋な YAML データで、
コードとして評価されることはありません。対応キーは workspace_path /
workspaces / repositories / ecosystem_org の 4 つで、未知のキーは
無視されます。
旧形式からの移行: 旧
config.exs(Elixir コードとして評価される形式)は 読み込まれません。config.exsだけが存在する場合は起動時に移行手順の警告が 表示されるので、init-configで例を生成し、値をconfig.ymlに転記してからconfig.exsを削除してください。
設定後は、どのディレクトリからでも実行可能:
cd /任意のディレクトリ
ecosystem-manager status # workspace_pathで指定したディレクトリで実行される# 全リポジトリの状況確認
./ecosystem-manager status
# GitHub情報なしの高速モード(80ms)
./ecosystem-manager status --fast
# キャッシュを使わず最新の GitHub 情報を取得
./ecosystem-manager status --no-cache
# 詳細表示
./ecosystem-manager status --long
# フィルタリング
./ecosystem-manager status --urgent-issues
./ecosystem-manager status --with-prs
./ecosystem-manager status --needs-review
# 並列度調整(デフォルト: 8)
./ecosystem-manager status --max-concurrency 4| モード | 実行時間 | 改善率 |
|---|---|---|
| フルモード | ~1.5 seconds | 88% |
| 高速モード (--fast) | ~80ms | 99.3% |
| 元のBash版 | 12+ seconds | - |
# テスト実行
mix test
# カバレッジ確認
mix test --cover
# 品質チェック
mix format && mix credo && mix dialyzer並列度やタイムアウトなどの動作設定は、リポジトリ内の config/config.exs
(ビルド時に escript へ焼き込まれる Mix 設定)でカスタマイズできます。
ユーザー設定 ~/.config/ecosystem-manager/config.yml とは別物です:
config :ecosystem_manager,
default_concurrency: 8, # 並列処理数
github_timeout: 15_000, # GitHub APIタイムアウト(ms)
git_timeout: 5_000, # Gitコマンドタイムアウト(ms)
default_format: :compact, # デフォルト出力形式
enable_cache: false, # gh CLI 結果のキャッシュ有効化
cache_ttl: 300_000, # キャッシュ TTL(ms、秒に変換して使用)
cache_dir: "~/.cache/ecosystem-manager", # キャッシュ保存先
enable_timing: false # 実行時間測定enable_cache: true のとき、gh issue/pr list の結果をリポジトリ単位で
cache_dir 配下(github/ サブディレクトリ)にキャッシュし、TTL 内は
gh CLI を呼ばずに再利用します。status --no-cache はこのキャッシュを
バイパスし、常に gh CLI を呼んで最新情報を取得します(読み込みも書き込みも
行いません)。
--fast はキャッシュとは独立で、GitHub アクセス自体を丸ごとスキップします
(キャッシュの読み書きも行いません)。--no-cache は GitHub へアクセスした
うえでキャッシュだけを回避する点が異なります。
# 開発環境
config :ecosystem_manager,
enable_timing: true,
default_concurrency: 4
# 本番環境
config :ecosystem_manager,
default_concurrency: 12,
enable_cache: true設定例は config/config.example.exs を参照してください。
監視対象のリポジトリは workspace 直下から自動検出 されます。ハードコードされた 一覧は持たず、以下の順で解決します:
- ユーザー設定の
repositories:(明示指定があれば最優先) - 自動検出:workspace 直下の Git リポジトリのうち、エコシステム org
(
ecosystem_org:設定、無ければ workspace 自身のoriginowner から導出) に属するもの。.(workspace 自身)は常に含み、*-testは除外
# 現在の対象リポジトリと解決元を確認
./ecosystem-manager repos
# 自動検出結果をユーザー設定に書き出す(一覧を固定したい場合)
./ecosystem-manager repos --syncrepos --sync は実行した workspace を ~/.config/ecosystem-manager/config.yml
の workspaces: に登録します(既存の設定は保持し、注釈付きテンプレートで
再描画します)。単一 workspace のときは検出結果を
repositories: にピン留めするので、workspace ルートで一度 repos --sync すれば
そのまま使える設定になります。エコシステム外のリポジトリ(無関係なプロジェクト等)が
混じっている場合は、書き出された一覧から手動で削除してください。
複数のエコシステム(例 ~/prj/LaTeX/latex-ecosystem と ~/prj/DNS/ecosystem)を
1 つのツールで扱えます。各 workspace のルートで repos --sync すると workspaces: に
登録されます:
workspaces:
latex: "~/prj/LaTeX/latex-ecosystem"
dns: "~/prj/DNS/ecosystem"workspace は次の順で選択されます:
--workspace NAME(-w)で明示指定- カレントディレクトリを含む workspace(最深一致で自動選択)
- 登録が 1 つだけならそれ
- どれにも該当しなければカレントディレクトリ
# 登録済み workspace の一覧
./ecosystem-manager workspace --list
# cd した先の workspace が対象になる
cd ~/prj/DNS/ecosystem && ./ecosystem-manager status
# 名前で明示指定
./ecosystem-manager status -w dns
# 全 workspace をまとめて表示
./ecosystem-manager status --all複数 workspace が登録されている場合、リポジトリ一覧は各 workspace ごとに自動検出で
解決されます(グローバルな repositories: ピンは使われません)。
- CLI: コマンドライン処理とオプション解析
- Config: 設定管理と環境別設定
- Workspace: 複数 workspace の登録・解決(cwd 自動選択 / --workspace)
- Repository: Git情報取得とリポジトリ管理
- GitHub: GitHub API統合(Issues/PR統計)
- Status: 並列処理とフォーマット出力