breaking: remove --semver option, add --patch and --minor instead - fixes #14
This commit is contained in:
parent
8f8ad1d59f
commit
f9bbf1e9ef
40
README.md
40
README.md
@ -25,7 +25,8 @@ usage: updates [options]
|
|||||||
-i, --include <pkg,...> Include only given packages
|
-i, --include <pkg,...> Include only given packages
|
||||||
-e, --exclude <pkg,...> Exclude given packages
|
-e, --exclude <pkg,...> Exclude given packages
|
||||||
-t, --types <type,...> Check only given dependency types
|
-t, --types <type,...> Check only given dependency types
|
||||||
-s, --semver patch|minor Consider only up to given semver level
|
-P, --patch [<pkg,...>] Consider only up to semver-patch
|
||||||
|
-m, --minor [<pkg,...>] Consider only up to semver-minor
|
||||||
-E, --error-on-outdated Exit with error code 2 on outdated packages
|
-E, --error-on-outdated Exit with error code 2 on outdated packages
|
||||||
-r, --registry <url> Use given registry URL
|
-r, --registry <url> Use given registry URL
|
||||||
-f, --file <path> Use given package.json file or module directory
|
-f, --file <path> Use given package.json file or module directory
|
||||||
@ -48,18 +49,18 @@ usage: updates [options]
|
|||||||
### Check for updates
|
### Check for updates
|
||||||
```console
|
```console
|
||||||
$ updates
|
$ updates
|
||||||
NAME OLD NEW
|
NAME OLD NEW INFO
|
||||||
chalk 1.3.0 2.3.0
|
string-width 2.1.1 3.0.0 https://github.com/sindresorhus/string-width
|
||||||
got ^7.0.1 ^8.0.1
|
eslint 5.9.0 5.10.0 https://github.com/eslint/eslint
|
||||||
minimist ^1.0.0 ^1.2.0
|
eslint-config-silverwind 2.0.11 2.0.12 https://github.com/silverwind/eslint-config-silverwind
|
||||||
```
|
```
|
||||||
### Update package.json
|
### Update package.json
|
||||||
```console
|
```console
|
||||||
$ updates -u
|
$ updates -u
|
||||||
NAME OLD NEW
|
NAME OLD NEW INFO
|
||||||
chalk 1.3.0 2.3.0
|
string-width 2.1.1 3.0.0 https://github.com/sindresorhus/string-width
|
||||||
got ^7.0.1 ^8.0.1
|
eslint 5.9.0 5.10.0 https://github.com/eslint/eslint
|
||||||
minimist ^1.0.0 ^1.2.0
|
eslint-config-silverwind 2.0.11 2.0.12 https://github.com/silverwind/eslint-config-silverwind
|
||||||
╭────────────────────────╮
|
╭────────────────────────╮
|
||||||
│ package.json updated │
|
│ package.json updated │
|
||||||
╰────────────────────────╯
|
╰────────────────────────╯
|
||||||
@ -72,17 +73,20 @@ The JSON output is an object with possible properties `results`, `message` and `
|
|||||||
$ updates -j | jq
|
$ updates -j | jq
|
||||||
{
|
{
|
||||||
"results": {
|
"results": {
|
||||||
"chalk": {
|
"string-width": {
|
||||||
"old": "1.3.0",
|
"old": "2.1.1",
|
||||||
"new": "2.3.0"
|
"new": "3.0.0",
|
||||||
|
"info": "https://github.com/sindresorhus/string-width"
|
||||||
},
|
},
|
||||||
"got": {
|
"eslint": {
|
||||||
"old": "^7.0.1",
|
"old": "5.9.0",
|
||||||
"new": "^8.0.1"
|
"new": "5.10.0",
|
||||||
|
"info": "https://github.com/eslint/eslint"
|
||||||
},
|
},
|
||||||
"minimist": {
|
"eslint-config-silverwind": {
|
||||||
"old": "^1.0.0",
|
"old": "2.0.11",
|
||||||
"new": "^1.2.0"
|
"new": "2.0.12",
|
||||||
|
"info": "https://github.com/silverwind/eslint-config-silverwind"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
33
updates.js
33
updates.js
@ -16,10 +16,11 @@ const args = require("minimist")(process.argv.slice(2), {
|
|||||||
string: [
|
string: [
|
||||||
"f", "file",
|
"f", "file",
|
||||||
"g", "greatest",
|
"g", "greatest",
|
||||||
|
"m", "minor",
|
||||||
|
"P", "patch",
|
||||||
"p", "prerelease",
|
"p", "prerelease",
|
||||||
"r", "registry",
|
"r", "registry",
|
||||||
"t", "types",
|
"t", "types",
|
||||||
"s", "semver",
|
|
||||||
],
|
],
|
||||||
default: {
|
default: {
|
||||||
"registry": "https://registry.npmjs.org/",
|
"registry": "https://registry.npmjs.org/",
|
||||||
@ -33,7 +34,9 @@ const args = require("minimist")(process.argv.slice(2), {
|
|||||||
h: "help",
|
h: "help",
|
||||||
i: "include",
|
i: "include",
|
||||||
j: "json",
|
j: "json",
|
||||||
|
m: "minor",
|
||||||
n: "no-color",
|
n: "no-color",
|
||||||
|
P: "patch",
|
||||||
p: "prerelease",
|
p: "prerelease",
|
||||||
r: "registry",
|
r: "registry",
|
||||||
s: "semver",
|
s: "semver",
|
||||||
@ -53,7 +56,8 @@ if (args.help) {
|
|||||||
-i, --include <pkg,...> Include only given packages
|
-i, --include <pkg,...> Include only given packages
|
||||||
-e, --exclude <pkg,...> Exclude given packages
|
-e, --exclude <pkg,...> Exclude given packages
|
||||||
-t, --types <type,...> Check only given dependency types
|
-t, --types <type,...> Check only given dependency types
|
||||||
-s, --semver patch|minor Consider only up to given semver level
|
-P, --patch [<pkg,...>] Consider only up to semver-patch
|
||||||
|
-m, --minor [<pkg,...>] Consider only up to semver-minor
|
||||||
-E, --error-on-outdated Exit with error code 2 on outdated packages
|
-E, --error-on-outdated Exit with error code 2 on outdated packages
|
||||||
-r, --registry <url> Use given registry URL
|
-r, --registry <url> Use given registry URL
|
||||||
-f, --file <path> Use given package.json file or module directory
|
-f, --file <path> Use given package.json file or module directory
|
||||||
@ -85,6 +89,8 @@ if (args["no-color"]) process.env.FORCE_COLOR = "0";
|
|||||||
|
|
||||||
const greatest = parseMixedArg(args.greatest);
|
const greatest = parseMixedArg(args.greatest);
|
||||||
const prerelease = parseMixedArg(args.prerelease);
|
const prerelease = parseMixedArg(args.prerelease);
|
||||||
|
const patch = parseMixedArg(args.patch);
|
||||||
|
const minor = parseMixedArg(args.minor);
|
||||||
|
|
||||||
const registry = args.registry.endsWith("/") ? args.registry : args.registry + "/";
|
const registry = args.registry.endsWith("/") ? args.registry : args.registry + "/";
|
||||||
|
|
||||||
@ -111,15 +117,6 @@ if (args.types) {
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
let semvers;
|
|
||||||
if (args.semver === "patch") {
|
|
||||||
semvers = ["patch"];
|
|
||||||
} else if (args.semver === "minor") {
|
|
||||||
semvers = ["patch", "minor"];
|
|
||||||
} else {
|
|
||||||
semvers = ["patch", "minor", "major"];
|
|
||||||
}
|
|
||||||
|
|
||||||
const fs = require("fs");
|
const fs = require("fs");
|
||||||
let pkg, pkgStr;
|
let pkg, pkgStr;
|
||||||
const deps = {};
|
const deps = {};
|
||||||
@ -193,8 +190,18 @@ Promise.all(Object.keys(deps).map(name => get(name))).then(dati => {
|
|||||||
for (const data of dati) {
|
for (const data of dati) {
|
||||||
const useGreatest = typeof greatest === "boolean" ? greatest : greatest.includes(data.name);
|
const useGreatest = typeof greatest === "boolean" ? greatest : greatest.includes(data.name);
|
||||||
const usePre = typeof prerelease === "boolean" ? prerelease : prerelease.includes(data.name);
|
const usePre = typeof prerelease === "boolean" ? prerelease : prerelease.includes(data.name);
|
||||||
|
|
||||||
|
let semvers;
|
||||||
|
if (patch === true || Array.isArray(patch) && patch.includes(data.name)) {
|
||||||
|
semvers = ["patch"];
|
||||||
|
} else if (minor === true || Array.isArray(minor) && minor.includes(data.name)) {
|
||||||
|
semvers = ["patch", "minor"];
|
||||||
|
} else {
|
||||||
|
semvers = ["patch", "minor", "major"];
|
||||||
|
}
|
||||||
|
|
||||||
const oldRange = deps[data.name].old;
|
const oldRange = deps[data.name].old;
|
||||||
const newVersion = findNewVersion(data, {usePre, useGreatest, range: oldRange});
|
const newVersion = findNewVersion(data, {usePre, useGreatest, semvers, range: oldRange});
|
||||||
const newRange = updateRange(oldRange, newVersion);
|
const newRange = updateRange(oldRange, newVersion);
|
||||||
|
|
||||||
if (!newVersion || oldRange === newRange) {
|
if (!newVersion || oldRange === newRange) {
|
||||||
@ -335,7 +342,7 @@ function findNewVersion(data, opts) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((diff === null) ||
|
if ((diff === null) ||
|
||||||
(semvers.includes(diff) && semver.gte(parsed.version, newVersion[0])) ||
|
(opts.semvers.includes(diff) && semver.gte(parsed.version, newVersion[0])) ||
|
||||||
(opts.usePre && diff === "prerelease")) {
|
(opts.usePre && diff === "prerelease")) {
|
||||||
if (opts.useGreatest && semver.gt(parsed.version, newVersion[0])) {
|
if (opts.useGreatest && semver.gt(parsed.version, newVersion[0])) {
|
||||||
newVersion[0] = parsed.version;
|
newVersion[0] = parsed.version;
|
||||||
|
Loading…
Reference in New Issue
Block a user