# Generate, validate and export the default complete Hearth settlement.
import argparse
from pathlib import Path
from hearth.programs import settlement_scene
from hearth.persistence import export_scene, semantic_digest


def main():
    parser = argparse.ArgumentParser(description='Generate a contract-composed Minecraft Java 1.21.1 settlement.')
    parser.add_argument('--seed', type=int, default=0, help='Explicit integer seed, default 0')
    parser.add_argument('--output', type=Path, default=Path('output.litematic'))
    parser.add_argument('--count', type=int, choices=range(3, 7), help='Optional explicit building count, 3 through 6')
    args = parser.parse_args()
    scene = settlement_scene(args.seed, args.count)
    export_scene(scene, args.output)
    print(f'Validated {sum(n.type=="building.rooms" for n in scene.nodes.values())} buildings, {len(scene.blocks)} blocks, {len(scene.nodes)} components.')
    print(f'{args.output} | semantic SHA256 {semantic_digest(scene)}')


if __name__ == '__main__':
    main()
