2021-01-16 00:53:51 +01:00
|
|
|
const { spawn } = require('child_process');
|
|
|
|
|
|
|
|
const languages = [
|
|
|
|
{
|
|
|
|
name: 'nasm',
|
|
|
|
aliases: ['asm', 'nasm'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'nasm64',
|
|
|
|
aliases: ['asm64', 'nasm64'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'awk',
|
|
|
|
aliases: ['awk'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'bash',
|
|
|
|
aliases: ['bash'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'brainfuck',
|
|
|
|
aliases: ['bf', 'brainfuck'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'c',
|
|
|
|
aliases: ['c'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'csharp',
|
|
|
|
aliases: ['c#', 'cs', 'csharp'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'cpp',
|
|
|
|
aliases: ['c++', 'cpp'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'deno',
|
|
|
|
aliases: ['deno', 'denojs', 'denots'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'ruby',
|
|
|
|
aliases: ['duby', 'rb', 'ruby'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'emacs',
|
|
|
|
aliases: ['el', 'elisp', 'emacs'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'elixir',
|
|
|
|
aliases: ['elixir'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'haskell',
|
|
|
|
aliases: ['haskell', 'hs'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'go',
|
|
|
|
aliases: ['go'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'java',
|
|
|
|
aliases: ['java'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'node',
|
|
|
|
aliases: ['javascript', 'js', 'node'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'jelly',
|
|
|
|
aliases: ['jelly'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'julia',
|
|
|
|
aliases: ['jl', 'julia'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'kotlin',
|
|
|
|
aliases: ['kotlin'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'lua',
|
|
|
|
aliases: ['lua'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'paradoc',
|
|
|
|
aliases: ['paradoc'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'perl',
|
|
|
|
aliases: ['perl'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'php',
|
|
|
|
aliases: ['php', 'php3', 'php4', 'php5'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'python3',
|
|
|
|
aliases: ['py', 'py3', 'python', 'python3'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'python2',
|
|
|
|
aliases: ['python2'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'rust',
|
|
|
|
aliases: ['rs', 'rust'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'swift',
|
|
|
|
aliases: ['swift'],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'typescript',
|
|
|
|
aliases: ['ts', 'typescript'],
|
|
|
|
},
|
2021-01-14 20:14:26 +01:00
|
|
|
];
|
2021-01-16 00:53:51 +01:00
|
|
|
|
|
|
|
{
|
|
|
|
const process = spawn(__dirname + '/../../lxc/versions');
|
|
|
|
|
|
|
|
let output = '';
|
|
|
|
process.stderr.on('data', chunk => output += chunk);
|
|
|
|
process.stdout.on('data', chunk => output += chunk);
|
|
|
|
|
|
|
|
process.on('exit', () => {
|
|
|
|
const sections = output.toLowerCase().split('---');
|
|
|
|
const versions = {};
|
|
|
|
|
|
|
|
for (const section of sections) {
|
|
|
|
const lines = section.trim().split('\n');
|
|
|
|
|
|
|
|
if (lines.length >= 2) {
|
|
|
|
const language = lines[0];
|
|
|
|
|
|
|
|
if (language === 'java') {
|
|
|
|
versions[language] = /\d+/.exec(lines[1])?.[0];
|
|
|
|
} else if (language === 'emacs') {
|
|
|
|
versions[language] = /\d+\.\d+/.exec(lines[1])?.[0];
|
|
|
|
} else {
|
|
|
|
versions[language] = /\d+\.\d+\.\d+/.exec(section)?.[0];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
for (const language of languages) {
|
|
|
|
language.version = versions[language.name];
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
languages,
|
|
|
|
};
|