#!/usr/bin/env python3
import os
import sys
import time

from argparse import ArgumentParser
from gitlab_jobs_exporter import GitLabJobsCollector
from prometheus_client import start_http_server
from prometheus_client.core import REGISTRY

def main():
    parser = ArgumentParser("GitLab CI Jobs Prometheus Exporter.")
    parser.add_argument(
        "--interval",
        help="interval between scrapes",
        type=int,
        default=10
    )
    parser.add_argument(
        "--port",
        help="port on which metrics are exposed",
        type=int,
        default=9118
    )
    parser.add_argument(
        "--project",
        help="project id to scrape",
        type=str,
        required=True
    )
    parser.add_argument(
        "--url",
        help="url of the gitlab instance",
        type=str,
        required=True
    )
    args = parser.parse_args()

    # TODO: don't use env vars for secrets
    token = os.environ.get("ACCESS_TOKEN")
    if not token:
        sys.stderr.write("ACCESS_TOKEN is missing, please set as environment variable\n")
        sys.exit(1)

    REGISTRY.register(GitLabJobsCollector(args.url, args.project, token))
    start_http_server(args.port)
    while True:
        time.sleep(args.interval)

if __name__ == "__main__":
    main()
