@@ -327,8 +327,7 @@ def _dispatch_lifecycle(args) -> int:
327327 'up' : lambda : cmd_up (project_name = project_name ,
328328 scale = getattr (args , 'scale' , None ),
329329 open_editor = getattr (args , 'open_editor' , None ),
330- open_index = getattr (args , 'open_index' , None ),
331- open_terminal = getattr (args , 'open_terminal' , None )),
330+ open_index = getattr (args , 'open_index' , None )),
332331 'down' : lambda : cmd_down (),
333332 'login' : lambda : cmd_login (index = getattr (args , 'index' , '1' )),
334333 'ps' : lambda : cmd_ps (all_containers = getattr (args , 'all' , False )),
@@ -397,8 +396,8 @@ def _resolve_open_index(open_index: Optional[int], scale: int) -> int:
397396 """開く dev インスタンス番号を解決する (CLI 引数 → env ``DEVBASE_OPEN_INDEX`` → 既定 1)。
398397
399398 ``1..scale`` の範囲外 (0・負数・``scale`` 超過) は存在しないコンテナを指し原因不明な
400- 起動失敗を招くため、警告を出して 1 へフォールバックする。:func:`_maybe_place_terminal_task `
401- と :func:`_maybe_open_editor` で共有し env フォールバック・範囲チェックの重複を避ける 。
399+ 起動失敗を招くため、警告を出して 1 へフォールバックする。:func:`_maybe_open_editor `
400+ で env フォールバック・範囲チェックを共有する 。
402401 """
403402 if open_index is None :
404403 raw = os .environ .get ('DEVBASE_OPEN_INDEX' )
@@ -432,8 +431,7 @@ def _maybe_open_editor(project_name: str, open_flag: Optional[bool],
432431 未指定なら ``.docker-compose.scale.yml`` が存在すればそれ、無ければ None。
433432
434433 ``container_name`` が渡されれば :func:`opener.open_editor` 内の
435- ``resolve_container_name`` (= ``docker compose ps``) をスキップして再利用する
436- (``_maybe_place_terminal_task`` が既に解決済みの名前を使い回し二重実行を避ける)。
434+ ``resolve_container_name`` (= ``docker compose ps``) をスキップして再利用する。
437435 """
438436 from devbase .editor import opener
439437
@@ -464,69 +462,9 @@ def _maybe_open_editor(project_name: str, open_flag: Optional[bool],
464462 logger .warning ("エディタの自動オープンに失敗しましたがデプロイは成功しています: %s" , e )
465463
466464
467- def _maybe_place_terminal_task (project_name : str , open_flag : Optional [bool ],
468- open_index : Optional [int ], scale : int ,
469- compose_file = None ) -> Optional [str ]:
470- """`up` 後、開く dev コンテナの作業ディレクトリへ folderOpen ターミナル tasks.json を配置。
471-
472- フォルダを開いた時に統合ターミナルを自動表示するための ``.vscode/tasks.json`` を、
473- 対象 dev インスタンスのワークスペース (``/work/$GIT_REPO``) に置く。作業ディレクトリは
474- コンテナ内 (named volume) のためホストから直接書けず、起動済みコンテナへ ``docker exec``
475- で書き込む。**既存の ``.vscode/tasks.json`` があれば一切触らない**。
476-
477- 有効判定は ``open_flag`` (CLI ``--open-terminal``/``--no-open-terminal``) が優先、None なら
478- env ``DEVBASE_OPEN_TERMINAL`` (既定 ON)。配置失敗は warning に握り潰し ``up`` を倒さない。
479- ``open_index`` は開くインスタンスに合わせる (範囲外は 1 へフォールバック)。
480-
481- 解決した実コンテナ名を返す (無効時は None)。直後の :func:`_maybe_open_editor` へ渡して
482- ``resolve_container_name`` (= ``docker compose ps``) の二重実行を避けるため。
483- """
484- from devbase .editor import opener
485-
486- enabled = open_flag if open_flag is not None else opener .is_open_terminal_enabled ()
487- if not enabled :
488- return None
489-
490- open_index = _resolve_open_index (open_index , scale )
491-
492- if compose_file is None and _SCALE_COMPOSE_FILE .exists ():
493- compose_file = _SCALE_COMPOSE_FILE
494-
495- dev_service_name = get_dev_service_name ()
496- container = opener .resolve_container_name (dev_service_name , project_name ,
497- open_index , compose_file = compose_file )
498- workdir = opener .resolve_workdir (os .environ , project_name )
499- content = opener .build_folder_open_tasks_json ()
500-
501- # 既存があれば書かず、無ければ stdin から書き込む (冪等)。workdir は引数で渡し
502- # シェル内クォートを避ける ($1)。
503- script = (
504- 'set -e; d="$1/.vscode"; mkdir -p "$d"; '
505- 'if [ -e "$d/tasks.json" ]; then echo keep; '
506- 'else cat > "$d/tasks.json"; echo placed; fi'
507- )
508- try :
509- proc = subprocess .run (
510- ["docker" , "exec" , "-i" , container , "sh" , "-c" , script , "_" , workdir ],
511- input = content , text = True , capture_output = True , timeout = 15 ,
512- )
513- except Exception as e : # noqa: BLE001 - 配置失敗で up を倒さない
514- logger .warning ("ターミナル用 tasks.json の配置に失敗しましたが続行します: %s" , e )
515- return container # 名前解決は済んでいるのでエディタ側で再利用させる
516- if proc .returncode != 0 :
517- logger .warning ("ターミナル用 tasks.json の配置に失敗しましたが続行します: %s" ,
518- (proc .stderr or "" ).strip ())
519- return container
520- if (proc .stdout or "" ).strip () == "placed" :
521- logger .info ("[6/6] 統合ターミナル自動表示用 tasks.json を配置: %s/.vscode/tasks.json" ,
522- workdir )
523- return container
524-
525-
526465def cmd_up (project_name : str = None , scale : int = None ,
527466 open_editor : Optional [bool ] = None ,
528- open_index : Optional [int ] = None ,
529- open_terminal : Optional [bool ] = None ) -> int :
467+ open_index : Optional [int ] = None ) -> int :
530468 """Deploy containers with specified scale"""
531469 if project_name is None :
532470 project_name = get_project_name ()
@@ -593,12 +531,8 @@ def cmd_up(project_name: str = None, scale: int = None,
593531 if deploy_script .exists () and deploy_script .is_file ():
594532 _run_deploy_script_for_instances (deploy_script , range (1 , scale + 1 ))
595533
596- # エディタを開く前に tasks.json を置く (開いた瞬間に folderOpen が効くように)。
597- # 解決済みコンテナ名を editor 側へ渡し docker compose ps の二重実行を避ける。
598- dev_container = _maybe_place_terminal_task (project_name , open_terminal , open_index ,
599- scale , compose_file = override_file )
600534 _maybe_open_editor (project_name , open_editor , open_index , scale ,
601- compose_file = override_file , container_name = dev_container )
535+ compose_file = override_file )
602536
603537 logger .info ("=== Deploy completed successfully ===" )
604538 return 0
0 commit comments