mirror of
https://github.com/klaussilveira/gitlist.git
synced 2026-02-27 00:51:05 +01:00
50 lines
1.6 KiB
PHP
Executable File
50 lines
1.6 KiB
PHP
Executable File
#!/usr/bin/env php
|
|
<?php
|
|
# Converts data from https://github.com/github/linguist to GitList's own format
|
|
|
|
set_time_limit(0);
|
|
|
|
require __DIR__ . '/../vendor/autoload.php';
|
|
|
|
// Fetch latest github/linguist database
|
|
$database = file_get_contents('https://raw.githubusercontent.com/github/linguist/master/lib/linguist/languages.yml');
|
|
|
|
// Remove document identifier so Symfony is happy
|
|
$database = str_replace('---', '', $database);
|
|
|
|
$languages = Symfony\Component\Yaml\Yaml::parse($database);
|
|
$languageMap = [];
|
|
|
|
foreach ($languages as $name => $language) {
|
|
if (!isset($language['extensions'])) {
|
|
continue;
|
|
}
|
|
|
|
foreach ($language['extensions'] as $extension) {
|
|
$extension = substr($extension, 1);
|
|
$languageMap[$extension] = [
|
|
'name' => $name,
|
|
'group' => $language['group'] ?? null,
|
|
'color' => $language['color'] ?? null,
|
|
'ace' => $language['ace_mode'] ?? null,
|
|
'cm' => $language['codemirror_mode'] ?? null,
|
|
];
|
|
}
|
|
}
|
|
|
|
$sourceFile = __DIR__ . '/../src/SCM/Language.php';
|
|
$template = file_get_contents($sourceFile);
|
|
$blockStart = 'const MAP = [';
|
|
$blockEnd = '];';
|
|
$blockStartPos = strpos($template, $blockStart) + strlen($blockStart);
|
|
$blockEndPos = strpos($template, $blockEnd);
|
|
|
|
$languageMapSource = var_export($languageMap, true);
|
|
$languageMapSource = substr($languageMapSource, 7);
|
|
$languageMapSource = substr($languageMapSource, 0, -1);
|
|
|
|
$updatedSource = substr_replace($template, $languageMapSource, $blockStartPos);
|
|
$updatedSource .= substr($template, $blockEndPos);
|
|
|
|
file_put_contents($sourceFile, $updatedSource);
|