mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-11-09 16:18:34 +01:00
43 lines
1.5 KiB
Python
43 lines
1.5 KiB
Python
import json
|
|
import re
|
|
from pathlib import Path
|
|
|
|
import yaml
|
|
|
|
|
|
def main() -> None:
|
|
with Path("pubspec.yaml").open("r", encoding="utf-8") as f:
|
|
pubspec = yaml.load(f, Loader=yaml.CSafeLoader)
|
|
if not pubspec.get("workspace"):
|
|
return
|
|
with Path(".dart_tool/package_config.json").open("r", encoding="utf-8") as f:
|
|
package_config = json.load(f)
|
|
for package_path in pubspec.get("workspace", []):
|
|
with (Path(package_path) / "pubspec.yaml").open("r", encoding="utf-8") as f:
|
|
package_pubspec = yaml.load(f, Loader=yaml.CSafeLoader)
|
|
m = re.match(
|
|
r"^[ \t]*(\^|>=|>)?[ \t]*([0-9]+\.[0-9]+)\.[0-9]+.*$",
|
|
package_pubspec.get("environment", {}).get("sdk", ""),
|
|
)
|
|
if m:
|
|
languageVersion = m.group(2)
|
|
elif package_pubspec.get("environment", {}).get("sdk") == "any":
|
|
languageVersion = "null"
|
|
else:
|
|
languageVersion = "2.7"
|
|
if not any(
|
|
pkg["name"] == package_pubspec["name"] for pkg in package_config["packages"]
|
|
):
|
|
package_config["packages"].append({
|
|
"name": package_pubspec["name"],
|
|
"rootUri": Path(package_path).resolve().as_uri(),
|
|
"packageUri": "lib/",
|
|
"languageVersion": languageVersion,
|
|
})
|
|
with Path(".dart_tool/package_config.json").open("w", encoding="utf-8") as f:
|
|
json.dump(package_config, f, sort_keys=True, indent=4)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|