UNPKG

@atomist/org-visualizer

Version:

Organization Visualizer using Atomist project scanning

87 lines 3.72 kB
"use strict"; /* * Copyright © 2019 Atomist, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const automation_client_1 = require("@atomist/automation-client"); const sdm_1 = require("@atomist/sdm"); const sdm_pack_fingerprints_1 = require("@atomist/sdm-pack-fingerprints"); const _ = require("lodash"); exports.TypeScriptVersionType = "typescript-version"; const PackageJsonName = "package.json"; /** * What version of TypeScript does each project build with? * * Each TypeScript project gets one fingerprint, containing * the TypeScript version(s) declared as a dependency and/or devDependency. * in package.json. * */ exports.TypeScriptVersion = { name: exports.TypeScriptVersionType, displayName: "TypeScript Version", documentationUrl: "https://atomist-blogs.github.io/org-visualizer/modules/_lib_feature_node_typescriptversionfeature_.html#typescriptversionfeature", extract: (p) => __awaiter(this, void 0, void 0, function* () { if (!(yield p.hasFile(PackageJsonName))) { return undefined; } try { const pj = JSON.parse(yield (yield p.getFile(PackageJsonName)).getContent()); const versions = [ _.get(pj.dependencies, "typescript"), _.get(pj.devDependencies, "typescript"), ].filter(v => !!v); if (versions.length === 0) { return undefined; } return { type: exports.TypeScriptVersionType, name: exports.TypeScriptVersionType, abbreviation: "tsv", version: "0.1.0", data: versions, sha: sdm_pack_fingerprints_1.sha256(JSON.stringify(versions)), }; } catch (e) { automation_client_1.logger.warn("Error extracting TypeScript version: %s", e.message); return undefined; } }), apply: (p, fp) => __awaiter(this, void 0, void 0, function* () { if (fp.data.length !== 1) { return false; } if (!(yield p.hasFile(PackageJsonName))) { return false; } if (!p.baseDir) { return false; } yield sdm_1.execPromise("npm", ["install", `typescript@${fp.data[0]}`, "--save-dev", "--safe-exact"], { cwd: p.baseDir }); return true; }), toDisplayableFingerprintName: () => "TypeScript version", toDisplayableFingerprint: fp => fp.data.join(","), }; //# sourceMappingURL=TypeScriptVersion.js.map