Добавил чтение версии Flutter из pubspec.yaml
Этот коммит содержится в:
@@ -0,0 +1,46 @@
|
||||
import re
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
_VERSION_RE = re.compile(r'^\s*version\s*:\s*([^\s#]+)')
|
||||
|
||||
|
||||
def read_pubspec_version(workspace: str) -> dict | None:
|
||||
"""Read Flutter version/build from pubspec.yaml.
|
||||
|
||||
Supports the standard Flutter format: version: 1.2.3+45
|
||||
Returns None when pubspec.yaml is missing or version is not declared.
|
||||
"""
|
||||
pubspec_path = Path(workspace).resolve() / 'pubspec.yaml'
|
||||
if not pubspec_path.exists():
|
||||
return None
|
||||
|
||||
try:
|
||||
content = pubspec_path.read_text(encoding='utf-8')
|
||||
except UnicodeDecodeError:
|
||||
content = pubspec_path.read_text(errors='ignore')
|
||||
|
||||
for line in content.splitlines():
|
||||
match = _VERSION_RE.match(line)
|
||||
if not match:
|
||||
continue
|
||||
|
||||
full_version = match.group(1).strip()
|
||||
version, build = _split_flutter_version(full_version)
|
||||
return {
|
||||
'success': True,
|
||||
'version': version,
|
||||
'build': build,
|
||||
'full_version': full_version,
|
||||
'pubspec_path': pubspec_path.as_posix(),
|
||||
}
|
||||
|
||||
return None
|
||||
|
||||
|
||||
def _split_flutter_version(full_version: str) -> tuple[str, str]:
|
||||
if '+' not in full_version:
|
||||
return full_version, '1'
|
||||
|
||||
version, build = full_version.split('+', 1)
|
||||
return version.strip() or '0.0.1', build.strip() or '1'
|
||||
Ссылка в новой задаче
Block a user