Files
personal_site/frontend/node_modules/@aws-cdk/toolkit-lib/lib/util/guess-language.js
T

61 lines
6.9 KiB
JavaScript
Raw Normal View History

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.languageDisplayName = languageDisplayName;
exports.guessLanguage = guessLanguage;
const path = require("path");
const fs = require("fs-extra");
const directories_1 = require("./directories");
const DISPLAY_NAMES = {
typescript: 'TypeScript',
javascript: 'JavaScript',
python: 'Python',
java: 'Java',
dotnet: '.NET',
go: 'Go',
};
/**
* Return the display name for a language identifier.
*/
function languageDisplayName(language) {
return DISPLAY_NAMES[language] ?? language;
}
/**
* Guess the CDK app language based on the files in the given directory.
*
* Returns `undefined` if our guess fails.
*/
async function guessLanguage(dir) {
try {
const files = new Set(await (0, directories_1.listFiles)(dir, 2, ['node_modules']));
if (files.has('package.json')) {
const pjContents = JSON.parse(await fs.readFile(path.join(dir, 'package.json'), 'utf-8'));
const deps = new Set([
...Object.keys(pjContents.dependencies ?? {}),
...Object.keys(pjContents.devDependencies ?? {}),
]);
if (deps.has('typescript') || deps.has('ts-node') || deps.has('tsx') || deps.has('swc')) {
return 'typescript';
}
else {
return 'javascript';
}
}
if (files.has('requirements.txt') || files.has('setup.py') || files.has('pyproject.toml')) {
return 'python';
}
if (files.has('pom.xml') || files.has('build.xml') || files.has('settings.gradle')) {
return 'java';
}
if (Array.from(files).some(n => n.endsWith('.sln') || n.endsWith('.csproj') || n.endsWith('.fsproj') || n.endsWith('.vbproj'))) {
return 'dotnet';
}
if (files.has('go.mod')) {
return 'go';
}
}
catch {
// Swallow failure
}
return undefined;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Vlc3MtbGFuZ3VhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJndWVzcy1sYW5ndWFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWdCQSxrREFFQztBQU9ELHNDQXFDQztBQTlERCw2QkFBNkI7QUFDN0IsK0JBQStCO0FBQy9CLCtDQUEwQztBQUUxQyxNQUFNLGFBQWEsR0FBMkI7SUFDNUMsVUFBVSxFQUFFLFlBQVk7SUFDeEIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsSUFBSSxFQUFFLE1BQU07SUFDWixNQUFNLEVBQUUsTUFBTTtJQUNkLEVBQUUsRUFBRSxJQUFJO0NBQ1QsQ0FBQztBQUVGOztHQUVHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQUMsUUFBZ0I7SUFDbEQsT0FBTyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxDQUFDO0FBQzdDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0ksS0FBSyxVQUFVLGFBQWEsQ0FBQyxHQUFXO0lBQzdDLElBQUksQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBQSx1QkFBUyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFakUsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDOUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUMxRixNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQztnQkFDbkIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO2dCQUM3QyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUM7YUFDakQsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3hGLE9BQU8sWUFBWSxDQUFDO1lBQ3RCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLFlBQVksQ0FBQztZQUN0QixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7WUFDMUYsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1lBQ25GLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDL0gsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxrQkFBa0I7SUFDcEIsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IHsgbGlzdEZpbGVzIH0gZnJvbSAnLi9kaXJlY3Rvcmllcyc7XG5cbmNvbnN0IERJU1BMQVlfTkFNRVM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIHR5cGVzY3JpcHQ6ICdUeXBlU2NyaXB0JyxcbiAgamF2YXNjcmlwdDogJ0phdmFTY3JpcHQnLFxuICBweXRob246ICdQeXRob24nLFxuICBqYXZhOiAnSmF2YScsXG4gIGRvdG5ldDogJy5ORVQnLFxuICBnbzogJ0dvJyxcbn07XG5cbi8qKlxuICogUmV0dXJuIHRoZSBkaXNwbGF5IG5hbWUgZm9yIGEgbGFuZ3VhZ2UgaWRlbnRpZmllci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxhbmd1YWdlRGlzcGxheU5hbWUobGFuZ3VhZ2U6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBESVNQTEFZX05BTUVTW2xhbmd1YWdlXSA/PyBsYW5ndWFnZTtcbn1cblxuLyoqXG4gKiBHdWVzcyB0aGUgQ0RLIGFwcCBsYW5ndWFnZSBiYXNlZCBvbiB0aGUgZmlsZXMgaW4gdGhlIGdpdmVuIGRpcmVjdG9yeS5cbiAqXG4gKiBSZXR1cm5zIGB1bmRlZmluZWRgIGlmIG91ciBndWVzcyBmYWlscy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGd1ZXNzTGFuZ3VhZ2UoZGlyOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICB0cnkge1xuICAgIGNvbnN0IGZpbGVzID0gbmV3IFNldChhd2FpdCBsaXN0RmlsZXMoZGlyLCAyLCBbJ25vZGVfbW9kdWxlcyddKSk7XG5cbiAgICBpZiAoZmlsZXMuaGFzKCdwYWNrYWdlLmpzb24nKSkge1xuICAgICAgY29uc3QgcGpDb250ZW50cyA9IEpTT04ucGFyc2UoYXdhaXQgZnMucmVhZEZpbGUocGF0aC5qb2luKGRpciwgJ3BhY2thZ2UuanNvbicpLCAndXRmLTgnKSk7XG4gICAgICBjb25zdCBkZXBzID0gbmV3IFNldChbXG4gICAgICAgIC4uLk9iamVjdC5rZXlzKHBqQ29udGVudHMuZGVwZW5kZW5jaWVzID8/IHt9KSxcbiAgICAgICAgLi4uT2JqZWN0LmtleXMocGpDb250ZW50cy5kZXZEZXBlbmRlbmNpZXMgPz8ge30pLFxuICAgICAgXSk7XG4gICAgICBpZiAoZGVwcy5oYXMoJ3R5cGVzY3JpcHQnK