#!/usr/bin/env php
<?php

namespace Conduit;

use Conduit\DataSource\MimeTypesFile;

if (file_exists(__DIR__ . '/../vendor/autoload.php')) {
    include_once __DIR__ . '/../vendor/autoload.php';
} else {
    include_once __DIR__ . '/../../../../vendor/autoload.php';
}

// Download latest data files
$composer = json_decode(file_get_contents(__DIR__ . '/../composer.json'), true);
if (isset($composer['extra']['data-file-sources'])) {
    foreach ($composer['extra']['data-file-sources'] as $localFilename => $remoteUrl) {
        file_put_contents(
            __DIR__ . '/../' . $localFilename,
            fopen($remoteUrl, 'r')
        );
    }
}

// Combine mime.types files
$mimeRegistry = [];
foreach (glob(__DIR__ . '/../data/mime/mime.types.d/*') as $filename) {
    if (substr($filename, 0, 1) === '.') {
        continue;
    }

    $mimeRegistry = array_merge_recursive($mimeRegistry, MimeTypesFile::loadRegistryFile($filename));
}

// Put the personal/vanity and unregistered trees at the end; include everything else with the standards tree
$mimeRegistry = MimeTypesFile::sortRegistryByTree($mimeRegistry, ['', 'prs.', 'x.']);

// Render into single mime.types file
$mimeRegistryAsString = <<<'EOD'
# Mapping of MIME media types to file extensions
# Automatically generated, as described in the accompanying README.md
#


EOD;

$mimeRegistryAsString .= MimeTypesFile::renderRegistry($mimeRegistry, 8);
file_put_contents(__DIR__ . '/../data/mime/mime.types', $mimeRegistryAsString);
