何を見つけたか
[name] 引数と --context を取るサブコマンドの列挙が、文書の各所で古いままになっている。rebuild(PLAN49 以降)と open(PLAN59 以降)が足りない。
bin/devbase の _PROJECT_NAME_SUBCOMMANDS は up / down / ps / logs / scale / rebuild / open の 7 つを持つ。
[name] の列挙
| 場所 |
現在の記述 |
足りないもの |
docs/user/cli-reference/02-project.md:9 |
up / down / ps / logs / scale |
rebuild / open |
docs/user/cli-reference/README.md:25 |
mermaid の D1["up / down / ps / logs / scale [name]"] |
open(rebuild は D4 にある) |
docs/user/container-operations.md:8 |
up / down / ps / logs / scale |
rebuild / open |
docs/specifications/compose-profiles.md:196 |
up down ps logs scale rebuild |
open |
docs/user/cli-reference/README.md は open にも profile にも一度も触れていない(grep -c "open\|profile" が 0)。ショートカットの表にも devbase open [name] の行が無い。
docs/specifications/cli-argument-resolution.md:225 の「他のショートカット」は 7 つを正しく並べており、直す対象ではない。
--context の列挙
--context を受ける集合を argparse から数えると、project / container / ct 配下の up / down / ps / logs / login / scale / build / rebuild / open / profile up / profile down / profile list、トップレベルの up / down / ps / login / scale / rebuild / open、および env exec / env token である。
| 場所 |
足りないもの |
docs/user/cli-reference/02-project.md:60 |
open |
docs/specifications/remote-docker-context.md:6 |
open |
docs/specifications/remote-docker-context.md:42 |
open / env token |
docs/user/environment-variables.md:371 |
open |
docs/user/environment-variables.md:316(DEVBASE_DOCKER_CONTEXT の行)は open を含んでおり、直す対象ではない。
補完は正しい
etc/devbase-completion.bash と etc/_devbase はどちらも rebuild と open を含み、open には --open-index / --context も出す。補完側に漏れは無い。
profile の扱い
_add_profile_subparser(pj_sub, with_name=True) のため、profile up / profile down / profile list も argparse 上は [name] を持つ。これらが _PROJECT_NAME_SUBCOMMANDS に入らないのは、profile の 3 番目が up / down / list になり wrapper では位置で解決できないためで(lib/devbase/cli.py:346-349)、Python 側の _dispatch_lifecycle が解決する。文書を直すときは「profile も [name] を取るが、解決の経路が違う」を 1 行添える。
なぜ PLAN61 の範囲外か
PLAN61(#146 / #142 / #196 / #200)は名前の形・衝突・ヘルプ・container グループの扱いを直すもので、この列挙はそれ以前からの記述漏れ。PLAN61 の PR(#207)は docs/user/cli-reference/02-project.md を 25 行足して直しているが(git show 384f6d7 --stat)、9 行目の列挙は hunk の外だった。
修正レイヤー
現象レイヤー: 上の表の文書 8 か所。
修正レイヤー: [name] と --context を取る集合の持ち方。同じ集合が bin/devbase の _PROJECT_NAME_SUBCOMMANDS、lib/devbase/cli.py の引数の付与、文書 8 か所、補完 2 ファイルに手で複製されており、同期はコメントの申し合わせ(bin/devbase:449-457、lib/devbase/cli.py:32-36 と :320-326)でしか担保されていない。PLAN49(rebuild)と PLAN59(open)の 2 回とも、コードと補完は更新され文書だけが取り残された。
_PROJECT_NAME_SUBCOMMANDS と argparse の一致は tests/cli/test_project_name_resolution.py が固定している。文書との一致を固定するテストが無いことが、同じ漏れが 2 度起きた理由である。
採る手: 統合(consolidate_duplication)。docs/specifications/cli-argument-resolution.md を列挙の正本とし、他の文書はそこへのリンクにする。そのうえで、argparse が返す集合と正本の列挙が一致することをテストで固定する。
直し方
まず文書 8 か所へ不足分を足す(light)。確かめ方は、argparse を走査して name positional と --context を持つ parser を出し、文書の列挙と突き合わせる。
恒久策(正本の一元化と一致テスト)は、この issue の範囲を超えるため着手の時点で分ける。
決めること
--context の列挙 4 か所をこの issue に含めるか、別の issue に分けるか。根っこは open が列挙に入っていないことで [name] 側と同じだが、触る文書が 2 ファイル増える
見つけた場所: PLAN61 の実装
進行
モード: standard / 作業ツリー: .worktrees/feature/v3.7.0-docs-enumeration
振り返り: #212 (comment)
何を見つけたか
[name]引数と--contextを取るサブコマンドの列挙が、文書の各所で古いままになっている。rebuild(PLAN49 以降)とopen(PLAN59 以降)が足りない。bin/devbaseの_PROJECT_NAME_SUBCOMMANDSはup/down/ps/logs/scale/rebuild/openの 7 つを持つ。[name]の列挙docs/user/cli-reference/02-project.md:9up/down/ps/logs/scalerebuild/opendocs/user/cli-reference/README.md:25D1["up / down / ps / logs / scale [name]"]open(rebuildはD4にある)docs/user/container-operations.md:8up/down/ps/logs/scalerebuild/opendocs/specifications/compose-profiles.md:196up down ps logs scale rebuildopendocs/user/cli-reference/README.mdはopenにもprofileにも一度も触れていない(grep -c "open\|profile"が 0)。ショートカットの表にもdevbase open [name]の行が無い。docs/specifications/cli-argument-resolution.md:225の「他のショートカット」は 7 つを正しく並べており、直す対象ではない。--contextの列挙--contextを受ける集合を argparse から数えると、project/container/ct配下のup/down/ps/logs/login/scale/build/rebuild/open/profile up/profile down/profile list、トップレベルのup/down/ps/login/scale/rebuild/open、およびenv exec/env tokenである。docs/user/cli-reference/02-project.md:60opendocs/specifications/remote-docker-context.md:6opendocs/specifications/remote-docker-context.md:42open/env tokendocs/user/environment-variables.md:371opendocs/user/environment-variables.md:316(DEVBASE_DOCKER_CONTEXTの行)はopenを含んでおり、直す対象ではない。補完は正しい
etc/devbase-completion.bashとetc/_devbaseはどちらもrebuildとopenを含み、openには--open-index/--contextも出す。補完側に漏れは無い。profileの扱い_add_profile_subparser(pj_sub, with_name=True)のため、profile up/profile down/profile listも argparse 上は[name]を持つ。これらが_PROJECT_NAME_SUBCOMMANDSに入らないのは、profileの 3 番目がup/down/listになり wrapper では位置で解決できないためで(lib/devbase/cli.py:346-349)、Python 側の_dispatch_lifecycleが解決する。文書を直すときは「profileも[name]を取るが、解決の経路が違う」を 1 行添える。なぜ PLAN61 の範囲外か
PLAN61(#146 / #142 / #196 / #200)は名前の形・衝突・ヘルプ・
containerグループの扱いを直すもので、この列挙はそれ以前からの記述漏れ。PLAN61 の PR(#207)はdocs/user/cli-reference/02-project.mdを 25 行足して直しているが(git show 384f6d7 --stat)、9 行目の列挙は hunk の外だった。修正レイヤー
現象レイヤー: 上の表の文書 8 か所。
修正レイヤー:
[name]と--contextを取る集合の持ち方。同じ集合がbin/devbaseの_PROJECT_NAME_SUBCOMMANDS、lib/devbase/cli.pyの引数の付与、文書 8 か所、補完 2 ファイルに手で複製されており、同期はコメントの申し合わせ(bin/devbase:449-457、lib/devbase/cli.py:32-36と:320-326)でしか担保されていない。PLAN49(rebuild)と PLAN59(open)の 2 回とも、コードと補完は更新され文書だけが取り残された。_PROJECT_NAME_SUBCOMMANDSと argparse の一致はtests/cli/test_project_name_resolution.pyが固定している。文書との一致を固定するテストが無いことが、同じ漏れが 2 度起きた理由である。採る手: 統合(
consolidate_duplication)。docs/specifications/cli-argument-resolution.mdを列挙の正本とし、他の文書はそこへのリンクにする。そのうえで、argparse が返す集合と正本の列挙が一致することをテストで固定する。直し方
まず文書 8 か所へ不足分を足す(
light)。確かめ方は、argparse を走査してnamepositional と--contextを持つ parser を出し、文書の列挙と突き合わせる。恒久策(正本の一元化と一致テスト)は、この issue の範囲を超えるため着手の時点で分ける。
決めること
--contextの列挙 4 か所をこの issue に含めるか、別の issue に分けるか。根っこはopenが列挙に入っていないことで[name]側と同じだが、触る文書が 2 ファイル増える見つけた場所: PLAN61 の実装
進行
モード: standard / 作業ツリー:
.worktrees/feature/v3.7.0-docs-enumeration振り返り: #212 (comment)