#!python

import logging

logger = logging.getLogger(__name__)

from snap.config import read_yaml, build_node

import asyncio
import argparse


import os, sys
# get current path and add it for the modules import
current_dir = os.path.abspath(os.getcwd())
sys.path.append(current_dir)

async def main():
    parser = argparse.ArgumentParser(description='SuperNova Async Pipeline: run a given NODE from config')
    parser.add_argument('config',
            help='Nodes configuration file')
    parser.add_argument('-n','--node',metavar='NAME',
            help='Node name (default="node")',default='node')
    parser.add_argument('-v','--verbose', action='store_true')

    args = parser.parse_args()
    if args.verbose:
        logging.basicConfig(level=logging.DEBUG)

    cfg = read_yaml(args.config)[args.node]
 
    node = build_node(cfg)
    logger.debug(f"Constructed node: {node}")
    try:
        await asyncio.gather(*node)
    except KeyboardInterrupt:
        logger.info("Bye!")

asyncio.run(main())
    
