42 lines
1.3 KiB
Python
Executable File
42 lines
1.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# Python script to parse flutter pubspec.lock file and extract library names and versions
|
|
import yaml
|
|
import csv
|
|
import sys
|
|
|
|
|
|
def parse_pubspec(file_path, sdk):
|
|
with open(file_path, 'r') as stream:
|
|
try:
|
|
data = yaml.safe_load(stream)
|
|
packages = data.get('packages', {})
|
|
with open('packages.csv', 'w', newline='') as csvfile:
|
|
writer = csv.writer(csvfile)
|
|
writer.writerow(['name', 'version', 'sdk'])
|
|
for package_name, package_data in packages.items():
|
|
version = package_data.get('version', None)
|
|
description = package_data.get('description', {})
|
|
if isinstance(description, str):
|
|
continue
|
|
else:
|
|
url = description.get('url', None)
|
|
|
|
if "castbox" in url:
|
|
continue
|
|
|
|
print(package_name, version, url)
|
|
|
|
writer.writerow([package_name, version, sdk])
|
|
except yaml.YAMLError as exc:
|
|
print(exc)
|
|
|
|
|
|
if len(sys.argv) < 2:
|
|
print("Please provide sdk parameter")
|
|
sys.exit(1)
|
|
|
|
sdk = sys.argv[1]
|
|
|
|
# 调用函数并传入pubspec.lock的文件路径
|
|
parse_pubspec('pubspec.lock', sdk)
|