lincd-cli 0.2.36 → 0.2.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/defaults/app-with-backend/.prettierignore +2 -1
- package/defaults/app-with-backend/.yarn/plugins/@yarnpkg/plugin-version.cjs +550 -0
- package/defaults/app-with-backend/.yarn/releases/yarn-3.6.1.cjs +874 -0
- package/defaults/app-with-backend/gitignore.template +22 -0
- package/defaults/app-with-backend/yarnrc.yml.template +8 -0
- package/lib/cli-methods.js +74 -34
- package/lib/cli.js +3 -0
- package/lib/config-grunt.js +2 -1
- package/lib/utils.js +57 -20
- package/package.json +2 -2
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
node_modules
|
|
2
|
+
frontend/build
|
|
3
|
+
frontend/web/assets
|
|
4
|
+
data/uploads
|
|
5
|
+
data/metadata
|
|
6
|
+
data/sessions
|
|
7
|
+
.yarn/*
|
|
8
|
+
!.yarn/patches
|
|
9
|
+
!.yarn/plugins
|
|
10
|
+
!.yarn/releases
|
|
11
|
+
!.yarn/sdks
|
|
12
|
+
!.yarn/versions
|
|
13
|
+
packages/**/dist
|
|
14
|
+
packages/**/lib
|
|
15
|
+
packages/**/.yarn/*
|
|
16
|
+
!packages/**/.yarn/patches
|
|
17
|
+
!packages/**/.yarn/plugins
|
|
18
|
+
!packages/**/.yarn/releases
|
|
19
|
+
!packages/**/.yarn/sdks
|
|
20
|
+
!packages/**/.yarn/versions
|
|
21
|
+
android/app/build
|
|
22
|
+
ios/App/App/public
|
package/lib/cli-methods.js
CHANGED
|
@@ -35,7 +35,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
35
35
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
36
|
};
|
|
37
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
-
exports.executeCommandForPackage = exports.addCapacitor = exports.executeCommandForEachPackage = exports.buildUpdated = exports.publishPackage = exports.publishUpdated = exports.buildPackage = exports.buildMetadata = exports.register = exports.createPackage = exports.createComponent = exports.createSetComponent = exports.createShape = exports.createOntology = exports.getLincdPackages = exports.buildAll = exports.developPackage = exports.createApp = void 0;
|
|
38
|
+
exports.executeCommandForPackage = exports.addCapacitor = exports.executeCommandForEachPackage = exports.buildUpdated = exports.publishPackage = exports.publishUpdated = exports.buildPackage = exports.buildMetadata = exports.register = exports.createPackage = exports.depCheck = exports.createComponent = exports.createSetComponent = exports.createShape = exports.createOntology = exports.getLincdPackages = exports.buildAll = exports.developPackage = exports.createApp = void 0;
|
|
39
39
|
const path_1 = __importDefault(require("path"));
|
|
40
40
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
41
41
|
const utils_1 = require("./utils");
|
|
@@ -47,6 +47,7 @@ const JSONLDWriter_1 = require("lincd-jsonld/lib/utils/JSONLDWriter");
|
|
|
47
47
|
const NameSpace_1 = require("lincd/lib/utils/NameSpace");
|
|
48
48
|
const Prefix_1 = require("lincd/lib/utils/Prefix");
|
|
49
49
|
const get_env_vars_1 = require("env-cmd/dist/get-env-vars");
|
|
50
|
+
const depcheck_1 = __importDefault(require("depcheck"));
|
|
50
51
|
var glob = require('glob');
|
|
51
52
|
var variables = {};
|
|
52
53
|
var open = require('open');
|
|
@@ -63,7 +64,8 @@ const createApp = (name, basePath = process.cwd()) => __awaiter(void 0, void 0,
|
|
|
63
64
|
fs_extra_1.default.copySync(path_1.default.join(__dirname, '..', 'defaults', 'app-with-backend'), targetFolder);
|
|
64
65
|
//make sure the data folder exists (even though its empty).. copying empty folders does not work with fs.copySync
|
|
65
66
|
fs_extra_1.default.mkdirSync(path_1.default.join(targetFolder, 'data'), { recursive: true });
|
|
66
|
-
|
|
67
|
+
fs_extra_1.default.renameSync(path_1.default.join(targetFolder, 'gitignore.template'), path_1.default.join(targetFolder, '.gitignore'));
|
|
68
|
+
fs_extra_1.default.renameSync(path_1.default.join(targetFolder, 'yarnrc.yml.template'), path_1.default.join(targetFolder, '.yarnrc.yml'));
|
|
67
69
|
// fs.copySync(path.join(__dirname, '..', 'defaults', 'app'), targetFolder);
|
|
68
70
|
log("Creating new LINCD application '" + name + "'");
|
|
69
71
|
//replace variables in some copied files
|
|
@@ -234,8 +236,12 @@ function runOnPackagesGroupedByDependencies(lincdPackages, onBuildStack, onStack
|
|
|
234
236
|
});
|
|
235
237
|
if (stack.length <= 0 && done.size < lincdPackages.size) {
|
|
236
238
|
console.log(chalk_1.default.red('Only ' + done.size + ' out of ' + lincdPackages.size + ' packages have been built'));
|
|
237
|
-
console.log('ALL remaining packages have dependencies that have not been met. This may point to ' +
|
|
238
|
-
|
|
239
|
+
console.log('ALL remaining packages have dependencies that have not been met. This may point to ' +
|
|
240
|
+
chalk_1.default.red('circular dependencies.'));
|
|
241
|
+
console.log('Already built: ' +
|
|
242
|
+
Array.from(done)
|
|
243
|
+
.map((p) => chalk_1.default.green(p.packageName))
|
|
244
|
+
.join(', '));
|
|
239
245
|
console.log(chalk_1.default.blue('\nTo solve this issue') + ': find the circular dependencies below and fix the dependencies:\n\n');
|
|
240
246
|
//TODO: actually find and name the packages that have circular dependencies
|
|
241
247
|
// let circular = [];
|
|
@@ -253,15 +259,20 @@ function runOnPackagesGroupedByDependencies(lincdPackages, onBuildStack, onStack
|
|
|
253
259
|
// process.exit();
|
|
254
260
|
// }
|
|
255
261
|
// });
|
|
256
|
-
lincdPackages.forEach(pkg => {
|
|
262
|
+
lincdPackages.forEach((pkg) => {
|
|
257
263
|
let deps = dependencies.get(pkg);
|
|
258
264
|
if (!done.has(pkg)) {
|
|
259
|
-
console.log(chalk_1.default.red(pkg.packageName) +
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
+
console.log(chalk_1.default.red(pkg.packageName) +
|
|
266
|
+
' has not been built yet. Unbuilt dependencies:\n' +
|
|
267
|
+
deps
|
|
268
|
+
.filter((dependency) => {
|
|
269
|
+
return !Array.from(done).some((p) => {
|
|
270
|
+
// console.log(p.packageName,dependency.packageName,p===dependency)
|
|
271
|
+
return p === dependency;
|
|
272
|
+
});
|
|
273
|
+
})
|
|
274
|
+
.map((p) => chalk_1.default.red('\t- ' + ((p === null || p === void 0 ? void 0 : p.packageName) ? p.packageName : p.toString()) + '\n'))
|
|
275
|
+
.join(' '));
|
|
265
276
|
// console.log(chalk.red(pkg.packageName)+' has not been built yet. Built dependencies:\n' + deps.filter(dependency => {
|
|
266
277
|
// return Array.from(done).some(p => p.packageName === pkg.packageName)
|
|
267
278
|
// }).map(p => chalk.green('\t- '+p.packageName+'\n')).join(" "))
|
|
@@ -281,19 +292,19 @@ function runOnPackagesGroupedByDependencies(lincdPackages, onBuildStack, onStack
|
|
|
281
292
|
runStack(startStack);
|
|
282
293
|
}
|
|
283
294
|
function hasDependency(pkg, childPkg, dependencies, depth = 1) {
|
|
284
|
-
console.log(
|
|
295
|
+
console.log('Does ' + pkg.packageName + ' have dep ' + childPkg.packageName + ' ?');
|
|
285
296
|
let deps = dependencies.get(pkg);
|
|
286
|
-
if (deps.some(dependency => {
|
|
297
|
+
if (deps.some((dependency) => {
|
|
287
298
|
console.log(dependency.packageName, childPkg.packageName, dependency === childPkg);
|
|
288
299
|
if (depth === 2)
|
|
289
300
|
return false;
|
|
290
301
|
// return dependency === childPkg;
|
|
291
302
|
return dependency === childPkg || hasDependency(dependency, childPkg, dependencies, depth++);
|
|
292
303
|
})) {
|
|
293
|
-
console.log(
|
|
304
|
+
console.log('##YES');
|
|
294
305
|
return true;
|
|
295
306
|
}
|
|
296
|
-
console.log(
|
|
307
|
+
console.log('going up');
|
|
297
308
|
return false;
|
|
298
309
|
}
|
|
299
310
|
function buildAll(target, target2, target3) {
|
|
@@ -352,7 +363,11 @@ function buildAll(target, target2, target3) {
|
|
|
352
363
|
}
|
|
353
364
|
//unless told otherwise, build the package
|
|
354
365
|
if (!command) {
|
|
355
|
-
command = (0, utils_1.execPromise)('cd ' +
|
|
366
|
+
command = (0, utils_1.execPromise)('cd ' +
|
|
367
|
+
pkg.path +
|
|
368
|
+
' && yarn exec lincd build' +
|
|
369
|
+
(target ? ' ' + target : '') +
|
|
370
|
+
(target2 ? ' ' + target2 : ''), false, false, {}, false);
|
|
356
371
|
debugInfo(chalk_1.default.cyan('Building ' + pkg.packageName));
|
|
357
372
|
}
|
|
358
373
|
return command
|
|
@@ -486,8 +501,8 @@ function setVariable(name, replacement) {
|
|
|
486
501
|
variables[name] = replacement;
|
|
487
502
|
}
|
|
488
503
|
var replaceVariablesInFile = (filePath) => __awaiter(void 0, void 0, void 0, function* () {
|
|
489
|
-
var fileContent = yield fs_extra_1.default.readFile(filePath, 'utf8').catch(err => {
|
|
490
|
-
console.warn(chalk_1.default.red(
|
|
504
|
+
var fileContent = yield fs_extra_1.default.readFile(filePath, 'utf8').catch((err) => {
|
|
505
|
+
console.warn(chalk_1.default.red('Could not read file ' + filePath));
|
|
491
506
|
});
|
|
492
507
|
if (fileContent) {
|
|
493
508
|
var newContent = replaceCurlyVariables(fileContent);
|
|
@@ -706,6 +721,28 @@ const createComponent = (name, basePath = process.cwd()) => __awaiter(void 0, vo
|
|
|
706
721
|
}
|
|
707
722
|
});
|
|
708
723
|
exports.createComponent = createComponent;
|
|
724
|
+
const depCheck = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
725
|
+
(0, depcheck_1.default)(process.cwd(), {}, (results) => {
|
|
726
|
+
if (results.missing) {
|
|
727
|
+
let missing = Object.keys(results.missing);
|
|
728
|
+
//currently react is not an explicit dependency, but we should add it as a peer dependency
|
|
729
|
+
missing.splice(missing.indexOf('react'));
|
|
730
|
+
if (missing.length > 0) {
|
|
731
|
+
console.warn(chalk_1.default.red('Missing dependencies:\n\t' + missing.join(',\n\t')));
|
|
732
|
+
}
|
|
733
|
+
}
|
|
734
|
+
// if(Object.keys(results.invalidFiles).length > 0) {
|
|
735
|
+
// console.warn(chalk.red("Invalid files:\n")+Object.keys(results.invalidFiles).join(",\n"));
|
|
736
|
+
// }
|
|
737
|
+
// if(Object.keys(results.invalidDirs).length > 0) {
|
|
738
|
+
// console.warn(chalk.red("Invalid dirs:\n")+results.invalidDirs.toString());
|
|
739
|
+
// }
|
|
740
|
+
// if(results.unused) {
|
|
741
|
+
// console.warn("Unused dependencies: "+results.missing.join(", "));
|
|
742
|
+
// }
|
|
743
|
+
});
|
|
744
|
+
});
|
|
745
|
+
exports.depCheck = depCheck;
|
|
709
746
|
const createPackage = (name, uriBase, basePath = process.cwd()) => __awaiter(void 0, void 0, void 0, function* () {
|
|
710
747
|
//if ran with npx, basePath will be the root directory of the repository, even if we're executing from a sub folder (the root directory is where node_modules lives and package.json with workspaces)
|
|
711
748
|
//so we manually find a packages folder, if it exists we go into that.
|
|
@@ -906,7 +943,7 @@ const buildMetadata = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
906
943
|
}
|
|
907
944
|
else {
|
|
908
945
|
if (!response.packageUri) {
|
|
909
|
-
console.warn(
|
|
946
|
+
console.warn('No package URI from meta data. Not building meta data for this package');
|
|
910
947
|
return;
|
|
911
948
|
}
|
|
912
949
|
let pkgNode = models_1.NamedNode.getOrCreate(response.packageUri);
|
|
@@ -1020,7 +1057,7 @@ const getLastCommitTime = (packagePath) => {
|
|
|
1020
1057
|
// process.exit();
|
|
1021
1058
|
return (0, utils_1.execPromise)(`git log -1 --format="%h %ci" -- ${packagePath}`)
|
|
1022
1059
|
.then((result) => __awaiter(void 0, void 0, void 0, function* () {
|
|
1023
|
-
let commitId = result.substring(0, result.indexOf(
|
|
1060
|
+
let commitId = result.substring(0, result.indexOf(' '));
|
|
1024
1061
|
let date = result.substring(commitId.length + 1);
|
|
1025
1062
|
let lastCommitDate = new Date(date);
|
|
1026
1063
|
let changes = yield (0, utils_1.execPromise)(`git show --stat --oneline ${commitId} -- ${packagePath}`);
|
|
@@ -1080,10 +1117,10 @@ var publishUpdated = function (test = false) {
|
|
|
1080
1117
|
return chalk_1.default.gray(pckg.packageName + ' is private');
|
|
1081
1118
|
// return previousResult + ' ' + chalk.gray(pckg.packageName + ' is private\n');
|
|
1082
1119
|
}
|
|
1083
|
-
console.log(
|
|
1120
|
+
console.log('testing npm');
|
|
1084
1121
|
return (0, utils_1.execPromise)('npm info ' + pckg.packageName + ' --json')
|
|
1085
1122
|
.then((output) => __awaiter(this, void 0, void 0, function* () {
|
|
1086
|
-
console.log(
|
|
1123
|
+
console.log('testing npm done');
|
|
1087
1124
|
var info;
|
|
1088
1125
|
try {
|
|
1089
1126
|
if (output == '' || output.includes('E404')) {
|
|
@@ -1123,10 +1160,10 @@ var publishUpdated = function (test = false) {
|
|
|
1123
1160
|
shouldPublish = lastPublishDate.getTime() < lastCommitInfo.date.getTime();
|
|
1124
1161
|
//ignore changes to package.json if that's the only change, because when we publish the version number changes, which is then committed
|
|
1125
1162
|
//(note there is always 2 lines for commit info + number of files changed)
|
|
1126
|
-
let changedFiles = lastCommitInfo.changes.split(
|
|
1163
|
+
let changedFiles = lastCommitInfo.changes.split('\n').filter((line) => line.includes('|'));
|
|
1127
1164
|
let numberOfFilesChanges = changedFiles.length;
|
|
1128
1165
|
// console.log("CHECK "+lastCommitInfo.changes.includes("package.json")+" - "+numberOfFilesChanges)
|
|
1129
|
-
if (shouldPublish && lastCommitInfo.changes.includes(
|
|
1166
|
+
if (shouldPublish && lastCommitInfo.changes.includes('package.json') && numberOfFilesChanges === 1) {
|
|
1130
1167
|
shouldPublish = false;
|
|
1131
1168
|
}
|
|
1132
1169
|
if (shouldPublish) {
|
|
@@ -1136,7 +1173,10 @@ var publishUpdated = function (test = false) {
|
|
|
1136
1173
|
lastPublishDate.toTimeString() +
|
|
1137
1174
|
' published ' +
|
|
1138
1175
|
info.version);
|
|
1139
|
-
log(lastCommitInfo.date.toDateString() +
|
|
1176
|
+
log(lastCommitInfo.date.toDateString() +
|
|
1177
|
+
' ' +
|
|
1178
|
+
new Date(lastCommitInfo.date).toTimeString() +
|
|
1179
|
+
' source last committed:');
|
|
1140
1180
|
log(lastCommitInfo.changes);
|
|
1141
1181
|
}
|
|
1142
1182
|
}
|
|
@@ -1199,7 +1239,7 @@ function getEnvJsonPath(relativeToPath = process.cwd()) {
|
|
|
1199
1239
|
}
|
|
1200
1240
|
// let path = './';
|
|
1201
1241
|
for (let i = 0; i <= 10; i++) {
|
|
1202
|
-
let envFile = yield (0, get_env_vars_1.getEnvFile)({ filePath: relativeToPath + path + '.env.json' }).catch(err => {
|
|
1242
|
+
let envFile = yield (0, get_env_vars_1.getEnvFile)({ filePath: relativeToPath + path + '.env.json' }).catch((err) => {
|
|
1203
1243
|
return null;
|
|
1204
1244
|
});
|
|
1205
1245
|
if (envFile) {
|
|
@@ -1273,7 +1313,7 @@ var buildUpdated = function (back, target, target2, test = false) {
|
|
|
1273
1313
|
let packagesLeft = packages.size;
|
|
1274
1314
|
runOnPackagesGroupedByDependencies(packages, (packageGroup, dependencies) => {
|
|
1275
1315
|
debugInfo('Now checking: ' + chalk_1.default.blue(packageGroup.map((i) => i.packageName)));
|
|
1276
|
-
debugInfo(
|
|
1316
|
+
debugInfo(packagesLeft + ' packages left.');
|
|
1277
1317
|
packagesLeft = packagesLeft - packageGroup.length;
|
|
1278
1318
|
return (pkg) => __awaiter(this, void 0, void 0, function* () {
|
|
1279
1319
|
// debugInfo('# Checking package ' + pkg.packageName);
|
|
@@ -1447,7 +1487,7 @@ var gitIgnore = function (...entries) {
|
|
|
1447
1487
|
};
|
|
1448
1488
|
var addLinesToFile = function (filePath, entries) {
|
|
1449
1489
|
let fileContents = fs_extra_1.default.readFileSync(filePath, { encoding: 'utf8' });
|
|
1450
|
-
entries.forEach(entry => {
|
|
1490
|
+
entries.forEach((entry) => {
|
|
1451
1491
|
fileContents += '\n' + entry;
|
|
1452
1492
|
});
|
|
1453
1493
|
fs_extra_1.default.writeFileSync(filePath, fileContents);
|
|
@@ -1461,12 +1501,12 @@ var addCapacitor = function (basePath = process.cwd()) {
|
|
|
1461
1501
|
let envCmdPath = path_1.default.resolve(basePath, '.env-cmdrc.json');
|
|
1462
1502
|
let envCmd = JSON.parse(fs_extra_1.default.readFileSync(envCmdPath, { encoding: 'utf8' }));
|
|
1463
1503
|
envCmd['static-dev'] = {
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1504
|
+
NODE_ENV: 'production',
|
|
1505
|
+
SITE_ROOT: 'http://localhost:4000',
|
|
1506
|
+
DATA_ROOT: 'http://localhost:4000/data',
|
|
1507
|
+
OUTPUT_PATH: './frontend/web/assets',
|
|
1508
|
+
ASSET_PATH: './assets/',
|
|
1509
|
+
ENTRY_PATH: './frontend/src/index-static.tsx',
|
|
1470
1510
|
};
|
|
1471
1511
|
fs_extra_1.default.writeFile(envCmdPath, JSON.stringify(envCmd, null, 2));
|
|
1472
1512
|
log('Edited .env-cmdrc.json');
|
package/lib/cli.js
CHANGED
|
@@ -110,6 +110,9 @@ program.command('all [action] [filter] [filter-value]').action((command, filter,
|
|
|
110
110
|
program.command('dev [target] [mode]').action((target, mode) => {
|
|
111
111
|
(0, cli_methods_1.developPackage)(target, mode);
|
|
112
112
|
});
|
|
113
|
+
program.command('depcheck').action((target, mode) => {
|
|
114
|
+
(0, cli_methods_1.depCheck)();
|
|
115
|
+
});
|
|
113
116
|
program
|
|
114
117
|
.command('package')
|
|
115
118
|
.action((name, command, args) => {
|
package/lib/config-grunt.js
CHANGED
|
@@ -75,7 +75,7 @@ function setupGrunt(grunt, moduleName, config) {
|
|
|
75
75
|
grunt.registerTask('build-es6', (0, utils_1.flatten)([
|
|
76
76
|
'prepare-build',
|
|
77
77
|
buildFrontend ? 'webpack:build-es6' : null,
|
|
78
|
-
buildServer ? ['clean:lib', 'exec:build-lib', 'copy:lib'] : null,
|
|
78
|
+
buildServer ? ['clean:lib', 'exec:build-lib', 'copy:lib', 'exec:depcheck'] : null,
|
|
79
79
|
// 'exec:shapes',
|
|
80
80
|
]));
|
|
81
81
|
grunt.registerTask('build-lib', ['prepare-build', 'exec:build-lib', 'copy:lib']);
|
|
@@ -96,6 +96,7 @@ function setupGrunt(grunt, moduleName, config) {
|
|
|
96
96
|
'build-lib-es5': 'yarn exec tsc --pretty -p tsconfig-es5.json',
|
|
97
97
|
beforeBuildCommand: config.beforeBuildCommand,
|
|
98
98
|
'server-dev': 'tsc -w',
|
|
99
|
+
depcheck: 'yarn lincd depcheck',
|
|
99
100
|
test: 'tsc -w',
|
|
100
101
|
// shapes: 'lincd shapes',
|
|
101
102
|
'css-declarations': 'tcm -p **/*.scss',
|
package/lib/utils.js
CHANGED
|
@@ -53,7 +53,6 @@ exports.getPackageJSON = getPackageJSON;
|
|
|
53
53
|
* @param packageJson
|
|
54
54
|
*/
|
|
55
55
|
var getLINCDDependencies = function (packageJson, checkedPackages = new Set()) {
|
|
56
|
-
var _a;
|
|
57
56
|
if (!packageJson) {
|
|
58
57
|
packageJson = (0, exports.getPackageJSON)();
|
|
59
58
|
}
|
|
@@ -81,33 +80,71 @@ var getLINCDDependencies = function (packageJson, checkedPackages = new Set()) {
|
|
|
81
80
|
}
|
|
82
81
|
}
|
|
83
82
|
if (firstTime) {
|
|
84
|
-
let dependencyMap = new Map();
|
|
83
|
+
// let dependencyMap:Map<string,Set<string>> = new Map();
|
|
85
84
|
let lincdPackageNames = new Set(lincdPackagePaths.map(([packageName, modulePath, pkgDependencies]) => packageName));
|
|
86
85
|
//remove lincd-cli from the list of lincd packages
|
|
87
86
|
lincdPackageNames.delete('lincd-cli');
|
|
88
|
-
lincdPackagePaths.forEach(([packageName, modulePath, pkgDependencies]) => {
|
|
89
|
-
|
|
87
|
+
lincdPackagePaths.forEach(([packageName, modulePath, pkgDependencies], key) => {
|
|
88
|
+
let lincdDependencies = pkgDependencies.filter(dependency => lincdPackageNames.has(dependency));
|
|
89
|
+
if (packageName === 'lincd-cli') {
|
|
90
|
+
//remove lincd-modules from the dependencies of lincd-cli (it's not a hard dependency, and it messes things up)
|
|
91
|
+
lincdDependencies.splice(lincdDependencies.indexOf('lincd-modules'), 1);
|
|
92
|
+
}
|
|
93
|
+
// dependencyMap.set(packageName, new Set(lincdDependencies));
|
|
94
|
+
//update dependencies to be the actual lincd package objects
|
|
95
|
+
lincdPackagePaths[key][2] = lincdDependencies;
|
|
90
96
|
});
|
|
91
|
-
//
|
|
92
|
-
|
|
93
|
-
//
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
97
|
+
// //add the nested dependencies for each lincd package
|
|
98
|
+
// for (let [packageName,pkgDependencies] of dependencyMap) {
|
|
99
|
+
// pkgDependencies.forEach((dependency) => {
|
|
100
|
+
// if (dependencyMap.has(dependency)) {
|
|
101
|
+
// dependencyMap.get(dependency).forEach((nestedDependency) => {
|
|
102
|
+
// pkgDependencies.add(nestedDependency);
|
|
103
|
+
// });
|
|
104
|
+
// }
|
|
105
|
+
// });
|
|
106
|
+
// }
|
|
107
|
+
//
|
|
108
|
+
// dependencyMap.forEach((dependencies,packageName) => {
|
|
109
|
+
// //check for circular dependencies
|
|
110
|
+
// if([...dependencies].some(dependency => {
|
|
111
|
+
// return dependencyMap.get(dependency).has(packageName);
|
|
112
|
+
// }))
|
|
113
|
+
// {
|
|
114
|
+
// console.warn(`Circular dependency detected between ${packageName} and ${dependency}`);
|
|
115
|
+
// }
|
|
116
|
+
//
|
|
117
|
+
// });
|
|
118
|
+
// a simple sort with dependencyMap doesn't seem to work,so we start with LINCD (least dependencies) and from there add packages that have all their dependencies already added
|
|
119
|
+
let sortedPackagePaths = [];
|
|
120
|
+
let addedPackages = new Set(['lincd']);
|
|
121
|
+
sortedPackagePaths.push(lincdPackagePaths.find(([packageName]) => {
|
|
122
|
+
return packageName === 'lincd';
|
|
123
|
+
}));
|
|
124
|
+
while (addedPackages.size !== lincdPackagePaths.length) {
|
|
125
|
+
let startSize = addedPackages.size;
|
|
126
|
+
lincdPackagePaths.forEach(([packageName, modulePath, pkgDependencies]) => {
|
|
127
|
+
if (!addedPackages.has(packageName) && pkgDependencies.every(dependency => addedPackages.has(dependency))) {
|
|
128
|
+
sortedPackagePaths.push([packageName, modulePath, pkgDependencies]);
|
|
129
|
+
addedPackages.add(packageName);
|
|
100
130
|
}
|
|
101
131
|
});
|
|
132
|
+
if (startSize === addedPackages.size) {
|
|
133
|
+
console.warn('Could not sort lincd packages, circular dependencies?');
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
102
136
|
}
|
|
103
137
|
//sort the lincd packages by least dependent first
|
|
104
|
-
lincdPackagePaths.sort(([packageNameA
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
138
|
+
// lincdPackagePaths = lincdPackagePaths.sort(([packageNameA],[packageNameB]) => {
|
|
139
|
+
// //if package A depends on package B, then package B should come first
|
|
140
|
+
// if (dependencyMap.get(packageNameA).has(packageNameB)) {
|
|
141
|
+
// console.log(packageNameA+' depends on '+packageNameB+ ' (below)')
|
|
142
|
+
// return 1;
|
|
143
|
+
// }
|
|
144
|
+
// console.log(packageNameA+' above '+packageNameB)
|
|
145
|
+
// return -1;
|
|
146
|
+
// });
|
|
147
|
+
return sortedPackagePaths;
|
|
111
148
|
}
|
|
112
149
|
return lincdPackagePaths;
|
|
113
150
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lincd-cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.38",
|
|
4
4
|
"description": "Command line tools for the lincd.js library",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
"build": "npm exec tsc",
|
|
9
9
|
"dev": "npm exec tsc -w"
|
|
10
10
|
},
|
|
11
|
-
"lincd": true,
|
|
12
11
|
"keywords": [
|
|
13
12
|
"lincd",
|
|
14
13
|
"cli",
|
|
@@ -45,6 +44,7 @@
|
|
|
45
44
|
"commander": "^9.4.0",
|
|
46
45
|
"copy-webpack-plugin": "^11.0.0",
|
|
47
46
|
"css-loader": "^6.7.1",
|
|
47
|
+
"depcheck": "^1.4.3",
|
|
48
48
|
"env-cmd": "^10.1.0",
|
|
49
49
|
"find-nearest-package-json": "^2.0.1",
|
|
50
50
|
"fs-extra": "^10.1.0",
|