UNPKG

3.1 kBJavaScriptView Raw
1#!/usr/bin/env node
2"use strict";
3/*-----------------------------------------------------------------------------
4| Copyright (c) Jupyter Development Team.
5| Distributed under the terms of the Modified BSD License.
6|----------------------------------------------------------------------------*/
7var __importStar = (this && this.__importStar) || function (mod) {
8 if (mod && mod.__esModule) return mod;
9 var result = {};
10 if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
11 result["default"] = mod;
12 return result;
13};
14Object.defineProperty(exports, "__esModule", { value: true });
15const path = __importStar(require("path"));
16const utils = __importStar(require("./utils"));
17const packageJson = require("package-json");
18let allDeps = [];
19let allDevDeps = [];
20/**
21 * Get the appropriate dependency for a given package name.
22 *
23 * @param name - The name of the package.
24 *
25 * @returns The dependency version specifier.
26 */
27async function getDependency(name) {
28 let version = '';
29 let versions = {};
30 allDeps = [];
31 allDevDeps = [];
32 utils.getLernaPaths().forEach(pkgRoot => {
33 // Read in the package.json.
34 let packagePath = path.join(pkgRoot, 'package.json');
35 let data;
36 try {
37 data = utils.readJSONFile(packagePath);
38 }
39 catch (e) {
40 return;
41 }
42 if (data.name === name) {
43 version = '^' + data.version;
44 return;
45 }
46 let deps = data.dependencies || {};
47 let devDeps = data.devDependencies || {};
48 if (deps[name]) {
49 allDeps.push(data.name);
50 if (deps[name] in versions) {
51 versions[deps[name]]++;
52 }
53 else {
54 versions[deps[name]] = 1;
55 }
56 }
57 if (devDeps[name]) {
58 allDevDeps.push(data.name);
59 if (devDeps[name] in versions) {
60 versions[devDeps[name]]++;
61 }
62 else {
63 versions[devDeps[name]] = 1;
64 }
65 }
66 });
67 if (version) {
68 return version;
69 }
70 if (Object.keys(versions).length > 0) {
71 // Get the most common version.
72 version = Object.keys(versions).reduce((a, b) => {
73 return versions[a] > versions[b] ? a : b;
74 });
75 }
76 else {
77 const releaseData = await packageJson(name);
78 version = '~' + releaseData.version;
79 }
80 return Promise.resolve(version);
81}
82exports.getDependency = getDependency;
83if (require.main === module) {
84 // Make sure we have required command line arguments.
85 if (process.argv.length < 3) {
86 let msg = '** Must supply a target library name\n';
87 process.stderr.write(msg);
88 process.exit(1);
89 }
90 let name = process.argv[2];
91 void getDependency(name).then(version => {
92 console.log('dependency of: ', allDeps);
93 console.log('devDependency of:', allDevDeps);
94 console.log(`\n "${name}": "${version}"`);
95 });
96}
97//# sourceMappingURL=get-dependency.js.map
\No newline at end of file