Skip to content

feat(cli): add per-service selection to "devcloud up"#18

Merged
simota merged 1 commit into
mainfrom
feat/cli-service-selection
May 19, 2026
Merged

feat(cli): add per-service selection to "devcloud up"#18
simota merged 1 commit into
mainfrom
feat/cli-service-selection

Conversation

@simota
Copy link
Copy Markdown
Owner

@simota simota commented May 19, 2026

Summary

  • devcloud up に位置引数を渡すと、その名前のサービスだけを起動できるようにする
  • 指定がなければ従来通り .devcloud/config.yamlservices.*.enabled に従う(ダッシュボードは常時起動)
  • サービス名 + 主要エイリアス(smtp / ddb / bq / pub-sub / app-autoscaling 等)を internal/app/services.go で一元管理

Usage

```
devcloud up s3 redis # S3 と Redis のみ
devcloud up bq pubsub # bigquery と pubsub のみ (エイリアスも可)
devcloud up # 既存挙動 (config に従う)
```

未知のサービスを渡した場合は known list を含むエラーで失敗します。

Changes

  • internal/app/services.go (new): ApplyServiceSelection(cfg, selected)ServiceNames() を追加。serviceToggles で canonical 名 → enable setter を、serviceAliases でユーザー入力の小文字正規化マップを一元管理。
  • internal/app/services_test.go (new): 5 ケースをカバー
    • empty/nil/[] 入力で Config が変化しないこと
    • 選んだサービスのみ enable + デフォルト ON でも非選択は disable される
    • 未知のサービスでエラー (known list を含むメッセージ)
    • 入力 Config を mutate しない(値コピーで返す)
    • ServiceNamesserviceToggles を全網羅、かつ重複なし
  • cmd/devcloud/main.go: up サブコマンドで args[1:]ApplyServiceSelection に渡し、usage に new syntax と known services リストを追記。

Test plan

  • go test ./internal/app/... 通過 (1.350s)
  • go vet ./... 通過
  • go build ./... 通過
  • go run ./cmd/devcloud up s3 redis で S3 と Redis のみ起動することを確認
  • go run ./cmd/devcloud up kinesis で known list を含むエラーで失敗することを確認
  • go run ./cmd/devcloud up で従来挙動が維持されることを確認

Risk

Low — CLI レイヤーの追加のみ、empty selection で従来動作維持、関数は純粋(入力 Config を mutate しない値コピー)、外部 API/protocol 変更なし。

devcloud up に位置引数を渡すと、その名前のサービスだけを起動できるよう
にする。指定がなければ従来通り .devcloud/config.yaml の
services.*.enabled に従う。ダッシュボードは常に起動する。

  devcloud up s3 redis        # S3 と Redis のみ
  devcloud up bq pubsub       # bigquery と pubsub のみ (エイリアスも可)
  devcloud up                 # 既存挙動 (config に従う)

internal/app/services.go に ApplyServiceSelection と ServiceNames を
追加し、サービス名と利用可能なエイリアス (smtp/ddb/bq/pub-sub/
app-autoscaling 等) を一元管理。未知のサービスは known list を含む
エラーで失敗する。

テスト: 空入力で no-op、選んだサービスのみ enable + 他は disable、
unknown サービスのエラーメッセージ、入力 Config を mutate しない、
ServiceNames が全 toggle を網羅、をカバー。
@simota simota merged commit 5a63516 into main May 19, 2026
4 checks passed
@simota simota deleted the feat/cli-service-selection branch May 19, 2026 08:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant