Skip to content

Commit 0fe8750

Browse files
committed
fix(env): PR #25 cross-review round 1 gemini 指摘の修正
- `_generate_default_filename` を新設し `_default_dest` / `_default_filename` の結合を解消 (major / 設計) - `_complete_dir_dest` の `endswith` をタプル形式に統一 (minor / 可読性) - `test_complete_dir_dest_local_trailing_slash` を `os.sep` 完全パス比較 (`==`) に変更 (minor / テスト)
1 parent 1db5ca7 commit 0fe8750

2 files changed

Lines changed: 17 additions & 8 deletions

File tree

lib/devbase/env/io_export.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,17 +45,23 @@ class ExportOptions:
4545
unsafe_allow_unencrypted_bucket: bool = False
4646

4747

48-
def _default_dest(force_unencrypted: bool) -> str:
48+
def _generate_default_filename(force_unencrypted: bool) -> str:
49+
"""既定ファイル名 (prefix なし) を生成する共通ヘルパー。
50+
`_default_dest` / `_default_filename` の両方から呼ぶことで結合度を下げる
51+
(PR #25 cross-review round 1 gemini 指摘)。"""
4952
# microsecond まで含めて衝突を回避する (PR #22 codex round 3 指摘)
5053
ts = datetime.now().strftime('%Y%m%d-%H%M%S-%f')
5154
suffix = '.dbenv.tar.gz' if force_unencrypted else '.dbenv'
52-
return f'./devbase-env-{ts}{suffix}'
55+
return f'devbase-env-{ts}{suffix}'
56+
57+
58+
def _default_dest(force_unencrypted: bool) -> str:
59+
return f'./{_generate_default_filename(force_unencrypted)}'
5360

5461

5562
def _default_filename(force_unencrypted: bool) -> str:
56-
"""`_default_dest` の `./` prefix を除いたファイル名部分のみを返す。
57-
dest がディレクトリ的なときに append する用途。"""
58-
return _default_dest(force_unencrypted).removeprefix('./')
63+
"""既定ファイル名 (prefix なし) を返す。dest がディレクトリ的なときに append する用途。"""
64+
return _generate_default_filename(force_unencrypted)
5965

6066

6167
def _complete_dir_dest(dest: str, force_unencrypted: bool) -> str:
@@ -72,7 +78,7 @@ def _complete_dir_dest(dest: str, force_unencrypted: bool) -> str:
7278
return dest + name if dest.endswith('/') else dest
7379
# ローカル: 既存ディレクトリか末尾 `/` ならディレクトリ扱い
7480
p = Path(dest)
75-
if dest.endswith('/') or dest.endswith(os.sep) or p.is_dir():
81+
if dest.endswith(('/', os.sep)) or p.is_dir():
7682
return str(p / name)
7783
return dest
7884

tests/cli/test_env_export.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from __future__ import annotations
44

55
import io
6+
import os
67
from pathlib import Path
78

89
import pyrage
@@ -390,8 +391,10 @@ def test_complete_dir_dest_local_trailing_slash(tmp_path, monkeypatch):
390391
"devbase.env.io_export._default_filename",
391392
lambda fu: "devbase-env-FIXED.dbenv",
392393
)
393-
target = str(tmp_path / "nodir") + "/"
394-
assert _complete_dir_dest(target, False).endswith("/nodir/devbase-env-FIXED.dbenv")
394+
target_dir = tmp_path / "nodir"
395+
target_path_with_slash = str(target_dir) + os.sep
396+
expected_path = str(target_dir / "devbase-env-FIXED.dbenv")
397+
assert _complete_dir_dest(target_path_with_slash, False) == expected_path
395398

396399

397400
def test_complete_dir_dest_local_normal_file_unchanged(tmp_path, monkeypatch):

0 commit comments

Comments
 (0)