function main()
{
    $args = $_SERVER['argv'];
    $location = null;
    switch (count($args)) {
        case 2:
            $location = $args[1];
            break;
        default:
            echo "Usage: backdate-maintainers.php location\n";
            exit(1);
    }
    // Get the library data, so that it can be updated with maintainers.
    // In case you're wondering why the result from get_for_version doesn't
    // use 'key' as its key, it's for historical reasons I think, might be
    // fixable.
    $libraries = BoostLibraries::from_xml_file(__DIR__ . '/../doc/libraries.xml');
    $unknown_libs = array();
    foreach (BoostSuperProject::run_process("cd \"{$location}\" && git tag") as $tag) {
        if (preg_match('@^boost-1\\.\\d+\\.\\d+$@', $tag)) {
            $library_details = $libraries->get_for_version($tag, null, 'BoostLibraries::filter_all');
            $libs_index = array();
            foreach ($library_details as $index => $details) {
                $libs_index[$details['key']] = $index;
            }
            foreach (BoostMaintainers::read_from_text(git_file($location, $tag, 'libs/maintainers.txt'))->maintainers as $key => $lib_maintainers) {
                if (isset($libs_index[$key])) {
                    $index = $libs_index[$key];
                    $library_details[$index]['maintainers'] = $lib_maintainers;
                } else {
                    $unknown_libs[$key][] = $tag;
                }
            }
            $update = array_map(function ($lib) {
                return new BoostLibrary($lib);
            }, $library_details);
            $libraries->update($tag, $update);
        }
    }
    file_put_contents(dirname(__FILE__) . '/../doc/libraries.xml', $libraries->to_xml());
    $names = array_keys($unknown_libs);
    sort($names);
    echo "Unable to find libraries:\n";
    foreach ($names as $lib) {
        echo "{$lib} from: " . implode(', ', $unknown_libs[$lib]) . "\n";
    }
}
function main()
{
    $args = $_SERVER['argv'];
    if (count($args) != 3) {
        echo "Usage: update-maintainers.php location version\n";
        exit(1);
    }
    $location = $args[1];
    $version = $args[2];
    $libraries = BoostLibraries::from_xml_file(__DIR__ . '/../doc/libraries.xml');
    $unknown_libs = array();
    $maintainers = BoostMaintainers::read_from_text(file($location . '/libs/maintainers.txt'));
    $library_details = $libraries->get_for_version($version, null);
    $libs_index = array();
    foreach ($library_details as $index => $details) {
        if (isset($details['maintainers'])) {
            $maintainers->update_maintainer($details['key'], $details['maintainers']);
        }
    }
    file_put_contents($location . '/libs/maintainers.txt', $maintainers->write_to_text());
}
Example #3
0
function main()
{
    $options = BoostSiteTools\CommandLineOptions::parse("Usage: {} location version");
    if (count($options->positional) != 2) {
        echo $options->usage_message();
        exit(1);
    }
    $location = $options->positional[0];
    $version = $options->positional[1];
    $libraries = BoostLibraries::from_xml_file(__DIR__ . '/../doc/libraries.xml');
    $unknown_libs = array();
    $maintainers = BoostMaintainers::read_from_text(file($location . '/libs/maintainers.txt'));
    // TODO: Want to include hidden libraries here.
    $library_details = $libraries->get_for_version($version, null);
    $libs_index = array();
    foreach ($library_details as $index => $details) {
        if (isset($details['maintainers'])) {
            $maintainers->update_maintainer($details['key'], $details['maintainers']);
        }
    }
    file_put_contents($location . '/libs/maintainers.txt', $maintainers->write_to_text());
}