65 lines
1.6 KiB
Python
Executable File
65 lines
1.6 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Simple example demonstrating how to use the zig-fetch-py library.
|
|
"""
|
|
|
|
import json
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
from loguru import logger
|
|
from zig_fetch_py.parser import parse_zon_file, zon_to_json
|
|
|
|
# Configure logging
|
|
logger.remove()
|
|
logger.add(sys.stderr, level="INFO")
|
|
|
|
# Example ZON content
|
|
ZON_CONTENT = """.{
|
|
.name = "example",
|
|
.version = "1.0.0",
|
|
.dependencies = .{
|
|
.lib1 = .{
|
|
.url = "https://example.com/lib1.tar.gz",
|
|
.hash = "abcdef123456",
|
|
},
|
|
},
|
|
.tags = .["tag1", "tag2"],
|
|
}"""
|
|
|
|
|
|
def main():
|
|
# Create a temporary ZON file
|
|
example_dir = Path(__file__).parent
|
|
zon_file = example_dir / "example.zon"
|
|
zon_file.write_text(ZON_CONTENT)
|
|
|
|
logger.info(f"Created example ZON file: {zon_file}")
|
|
|
|
# Parse the ZON file
|
|
result = parse_zon_file(str(zon_file))
|
|
logger.info("Parsed ZON file to Python dictionary:")
|
|
logger.info(result)
|
|
|
|
# Convert to JSON
|
|
json_str = zon_to_json(ZON_CONTENT, indent=2)
|
|
logger.info("Converted ZON to JSON:")
|
|
logger.info(json_str)
|
|
|
|
# Save JSON to file
|
|
json_file = example_dir / "example.json"
|
|
with open(json_file, "w") as f:
|
|
f.write(json_str)
|
|
|
|
logger.info(f"Saved JSON to file: {json_file}")
|
|
|
|
# Access specific values from the parsed data
|
|
logger.info(f"Package name: {result['name']}")
|
|
logger.info(f"Package version: {result['version']}")
|
|
logger.info(f"Dependencies: {list(result['dependencies'].keys())}")
|
|
logger.info(f"Tags: {result['tags']}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|