#!python
import subprocess
import sys

from openlineage.common.provider.dbt import DbtArtifactProcessor
from openlineage.client.client import OpenLineageClient

__version__ = "0.2.0"

from openlineage.common.utils import parse_single_arg

PRODUCER = f'https://github.com/OpenLineage/OpenLineage/tree/{__version__}/integration/dbt'


def main():
    process = subprocess.Popen(
        ["dbt"] + sys.argv[1:],
        stdout=sys.stdout,
        stderr=sys.stderr
    )

    process.wait()

    if len(sys.argv) < 2 or sys.argv[1] != 'run':
        return

    args = sys.argv[2:]
    target = parse_single_arg(args, ['-t', '--target'])
    project_dir = parse_single_arg(args, ['--project-dir'])
    profile_name = parse_single_arg(args, ['--profile'])

    client = OpenLineageClient.from_environment()
    processor = DbtArtifactProcessor(
        producer=PRODUCER,
        target=target,
        project_dir=project_dir,
        profile_name=profile_name
    )
    events = processor.parse().events()

    for event in events:
        client.emit(event)
    print(f"Emitted {len(events)} openlineage events")

if __name__ == '__main__':
    main()
