"""Export list of ships as CSV."""
import csv

import companion
from edmc_data import ship_name_map


def export(data: companion.CAPIData, filename: str) -> None:
    """
    Write shipyard data in Companion API JSON format.

    :param data: The CAPI data.
    :param filename: Optional filename to write to.
    :return:
    """
    assert data['lastSystem'].get('name')
    assert data['lastStarport'].get('name')
    assert data['lastStarport'].get('ships')

    with open(filename, 'w', newline='') as f:
        c = csv.writer(f)
        c.writerow(('System', 'Station', 'Ship', 'FDevID', 'Date'))

        for (name, fdevid) in [
            (
                ship_name_map.get(ship['name'].lower(), ship['name']),
                ship['id']
            ) for ship in list(
                (data['lastStarport']['ships'].get('shipyard_list') or {}).values()
            ) + data['lastStarport']['ships'].get('unavailable_list')
        ]:
            c.writerow((
                data['lastSystem']['name'], data['lastStarport']['name'],
                name, fdevid, data['timestamp']
            ))