UNPKG

@metacall/protocol

Version:

Tool for deploying into MetaCall FaaS platform.

131 lines (128 loc) 3.85 kB
"use strict"; /* * 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;