@metacall/protocol
Version:
Tool for deploying into MetaCall FaaS platform.
131 lines (128 loc) • 3.85 kB
JavaScript
;
/*
* About File:
this is already documented but it defines the languages supported, extensions, runners, coloring, etc
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.detectRunnersFromFiles = exports.RunnerToDisplayName = exports.DisplayNameToLanguageId = exports.Languages = exports.Runners = void 0;
const path_1 = require("path");
exports.Runners = {
nodejs: {
id: 'nodejs',
languageId: 'node',
filePatterns: [/^package\.json$/],
installCommand: 'npm install',
displayName: 'NPM'
},
python: {
id: 'python',
languageId: 'py',
filePatterns: [/^requirements\.txt$/],
installCommand: 'pip install -r requirements.txt',
displayName: 'Pip'
},
ruby: {
id: 'ruby',
languageId: 'rb',
filePatterns: [/^Gemfile$/],
installCommand: 'bundle install',
displayName: 'Gem'
},
csharp: {
id: 'csharp',
languageId: 'cs',
filePatterns: [/^project\.json$/, /\.csproj$/],
installCommand: 'dotnet restore',
displayName: 'NuGet'
}
};
exports.Languages = {
cs: {
tag: 'cs',
displayName: 'C#',
hexColor: '#953dac',
fileExtRegex: /^cs$/,
runnerName: 'csharp',
runnerFilesRegexes: exports.Runners.csharp.filePatterns
},
py: {
tag: 'py',
displayName: 'Python',
hexColor: '#ffd43b',
fileExtRegex: /^py$/,
runnerName: 'python',
runnerFilesRegexes: exports.Runners.python.filePatterns
},
rb: {
tag: 'rb',
displayName: 'Ruby',
hexColor: '#e53935',
fileExtRegex: /^rb$/,
runnerName: 'ruby',
runnerFilesRegexes: exports.Runners.ruby.filePatterns
},
node: {
tag: 'node',
displayName: 'NodeJS',
hexColor: '#3c873a',
fileExtRegex: /^js$/,
runnerName: 'nodejs',
runnerFilesRegexes: exports.Runners.nodejs.filePatterns
},
ts: {
tag: 'ts',
displayName: 'TypeScript',
hexColor: '#007acc',
fileExtRegex: /^(ts|tsx)$/,
runnerName: 'nodejs',
runnerFilesRegexes: exports.Runners.nodejs.filePatterns
},
file: {
tag: 'file',
displayName: 'Static Files',
hexColor: '#de5500',
fileExtRegex: /^\w+$/,
runnerName: undefined,
runnerFilesRegexes: [] // File has no runner files (yet?)
},
cob: {
tag: 'cob',
displayName: 'Cobol',
hexColor: '#01325a',
fileExtRegex: /^(cob|cbl|cbl)$/,
runnerName: undefined,
runnerFilesRegexes: [] // Cobol has no runner files (yet?)
},
rpc: {
tag: 'rpc',
displayName: 'RPC',
hexColor: '#0f564d',
fileExtRegex: /^rpc$/,
runnerName: undefined,
runnerFilesRegexes: [] // RPC has no runner files (yet?)
}
};
exports.DisplayNameToLanguageId = Object.keys(exports.Languages).reduce((obj, lang) => Object.assign(obj, {
[exports.Languages[lang].displayName]: lang
}), {});
const RunnerToDisplayName = (runner) => {
const match = exports.Runners[runner];
return match ? match.displayName : 'Build';
};
exports.RunnerToDisplayName = RunnerToDisplayName;
const detectRunnersFromFiles = (files) => {
const runners = new Set();
for (const file of files) {
const fileName = path_1.basename(file);
for (const runner of Object.values(exports.Runners)) {
for (const pattern of runner.filePatterns) {
if (pattern.exec(fileName)) {
runners.add(runner.id);
break;
}
}
}
}
return Array.from(runners);
};
exports.detectRunnersFromFiles = detectRunnersFromFiles;