1 | const fs = require("fs");
|
2 | const core = require("./core");
|
3 |
|
4 | const INDENT = 2;
|
5 |
|
6 | function determineOutdated(pOutdatedObject, pPackageObject) {
|
7 | pOutdatedObject =
|
8 | pOutdatedObject.length <= 0 ? {} : JSON.parse(pOutdatedObject);
|
9 | const lOutdatedObject = core.filterOutdatedPackages(
|
10 | pOutdatedObject,
|
11 | pPackageObject
|
12 | );
|
13 |
|
14 | if (Object.keys(pOutdatedObject).length <= 0) {
|
15 | return {
|
16 | OK: true,
|
17 | message: " Up'em says: Everything seems to be up to date already.\n\n",
|
18 | };
|
19 | }
|
20 |
|
21 | if (Object.keys(lOutdatedObject).length <= 0) {
|
22 | return {
|
23 | OK: true,
|
24 | message:
|
25 | " Up'em says: Everything not in 'upem.donotup' seems to be up to date already.\n\n",
|
26 | };
|
27 | }
|
28 |
|
29 | return {
|
30 | OK: true,
|
31 | outdatedObject: lOutdatedObject,
|
32 | };
|
33 | }
|
34 |
|
35 | module.exports = (
|
36 | pPackageInputFileName,
|
37 | pOutdatedObject,
|
38 | pPackageOutputFileName = pPackageInputFileName,
|
39 | pOptions
|
40 | ) => {
|
41 | try {
|
42 | const lPackageFile = fs.readFileSync(pPackageInputFileName);
|
43 | const lPackageObject = JSON.parse(lPackageFile);
|
44 |
|
45 | const lOutdatedResult = determineOutdated(pOutdatedObject, lPackageObject);
|
46 |
|
47 | if (!lOutdatedResult.outdatedObject) {
|
48 | return lOutdatedResult;
|
49 | }
|
50 |
|
51 | try {
|
52 | fs.writeFileSync(
|
53 | pPackageOutputFileName,
|
54 | JSON.stringify(
|
55 | core.updateAllDeps(
|
56 | lPackageObject,
|
57 | lOutdatedResult.outdatedObject,
|
58 | pOptions
|
59 | ),
|
60 |
|
61 | null,
|
62 | INDENT
|
63 | )
|
64 | );
|
65 | return {
|
66 | OK: true,
|
67 | message: ` Up'em just updated all outdated dependencies in package.json to latest:\n\n ${Object.keys(
|
68 | lOutdatedResult.outdatedObject
|
69 | ).join(", ")}\n\n`,
|
70 | };
|
71 | } catch (pError) {
|
72 | return {
|
73 | OK: false,
|
74 | message: ` Up'em encountered a hitch when updating package.json:\n${pError}\n\n`,
|
75 | };
|
76 | }
|
77 | } catch (pError) {
|
78 | return {
|
79 | OK: false,
|
80 | message: ` Up'em encountered a hitch:\n${pError}\n\n`,
|
81 | };
|
82 | }
|
83 | };
|