Release v1.0.10: shared media_assets and screencast media_assets_root override
All checks were successful
Publish Python Package to Gitea / publish (push) Successful in 17s
All checks were successful
Publish Python Package to Gitea / publish (push) Successful in 17s
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -69,6 +69,69 @@ def reset_cache() -> None:
|
||||
_example_defaults_cache = None
|
||||
|
||||
|
||||
def get_env_file_path() -> str | None:
|
||||
return _env_file_path
|
||||
|
||||
|
||||
def get_example_path() -> str | None:
|
||||
return _example_path
|
||||
|
||||
|
||||
def _iter_env_assignments(path: str) -> list[tuple[str, str]]:
|
||||
"""按文件顺序返回 (key, 完整赋值行)。"""
|
||||
result: list[tuple[str, str]] = []
|
||||
if not path or not os.path.isfile(path):
|
||||
return result
|
||||
with open(path, encoding="utf-8") as f:
|
||||
for raw_line in f:
|
||||
line = raw_line.rstrip("\n\r")
|
||||
stripped = line.strip()
|
||||
if not stripped or stripped.startswith("#"):
|
||||
continue
|
||||
if "=" not in stripped:
|
||||
continue
|
||||
key, _, _ = stripped.partition("=")
|
||||
key = key.strip()
|
||||
if key:
|
||||
result.append((key, stripped))
|
||||
return result
|
||||
|
||||
|
||||
def merge_missing_env_keys(
|
||||
example_path: str,
|
||||
dest_path: str,
|
||||
*,
|
||||
comment_skill: str | None = None,
|
||||
) -> list[str]:
|
||||
"""将 example 中有而用户 .env 没有的 key 追加到 dest 末尾,不修改已有项。"""
|
||||
if not example_path or not os.path.isfile(example_path):
|
||||
return []
|
||||
if not dest_path or not os.path.isfile(dest_path):
|
||||
return []
|
||||
|
||||
dest_keys = set(_parse_env_file(dest_path).keys())
|
||||
to_append: list[tuple[str, str]] = []
|
||||
for key, assignment in _iter_env_assignments(example_path):
|
||||
if key not in dest_keys:
|
||||
to_append.append((key, assignment))
|
||||
|
||||
if not to_append:
|
||||
return []
|
||||
|
||||
header = (
|
||||
f"# Added by {comment_skill} from .env.example"
|
||||
if comment_skill
|
||||
else "# Added from .env.example"
|
||||
)
|
||||
with open(dest_path, "a", encoding="utf-8") as f:
|
||||
f.write("\n\n" + header + "\n")
|
||||
for _, assignment in to_append:
|
||||
f.write(assignment + "\n")
|
||||
|
||||
reset_cache()
|
||||
return [key for key, _ in to_append]
|
||||
|
||||
|
||||
def ensure_env_file(skill_slug: str, example_path: str) -> str:
|
||||
"""首次把 .env.example copy 到 {data_root}/{user}/{slug}/.env(已存在不覆盖),返回路径。"""
|
||||
global _skill_slug, _example_path, _env_file_path
|
||||
|
||||
Reference in New Issue
Block a user