Add env_pro core modules

This commit is contained in:
2026-01-31 01:35:45 +00:00
parent 874505f690
commit 2da5dbe5f3

View File

@@ -0,0 +1,55 @@
"""Helper utilities for env-pro."""
import os
import sys
from pathlib import Path
from typing import Optional, Dict
def find_env_file(project_root: Optional[Path] = None) -> Optional[Path]:
"""Find the .env file in the project."""
if project_root is None:
project_root = Path.cwd()
for env_file in [".env", ".env.local", ".env-profiles/default/.env"]:
path = project_root / env_file
if path.exists():
return path
return None
def parse_key_value_pair(pair: str) -> tuple:
"""Parse a KEY=VALUE string into a tuple."""
if "=" in pair:
key, value = pair.split("=", 1)
return key.strip(), value.strip()
return pair.strip(), ""
def is_encrypted(value: str) -> bool:
"""Check if a value appears to be encrypted."""
import base64
try:
data = base64.b64decode(value)
import json
json.loads(data)
return True
except (base64.binascii.Error, json.JSONDecodeError):
return False
def get_editor() -> str:
"""Get the editor to use for interactive editing."""
return os.environ.get("EDITOR", os.environ.get("VISUAL", "vim"))
def shell_expand(path: str) -> str:
"""Expand shell variables in a path."""
return os.path.expandvars(os.path.expanduser(path))
def is_valid_env_key(key: str) -> bool:
"""Check if a string is a valid environment variable name."""
import re
return bool(re.match(r"^[A-Za-z_][A-Za-z0-9_]*$", key))