From 65955ef394a5f5d15ecfa3379ee88d17990554d0 Mon Sep 17 00:00:00 2001 From: silverwind Date: Thu, 31 May 2018 19:33:22 +0200 Subject: [PATCH] don't return 255 code any more, misc tweaks --- .eslintrc | 250 +-------------------------------------------------- README.md | 4 +- package.json | 10 ++- updates.js | 49 +++++----- 4 files changed, 34 insertions(+), 279 deletions(-) diff --git a/.eslintrc b/.eslintrc index c4bec68..3487193 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,250 +1,2 @@ -# https://github.com/eslint/eslint/tree/master/docs/rules - root: true - -parserOptions: - ecmaVersion: 2017 - -rules: - accessor-pairs: [2] - array-bracket-newline: [0] - array-bracket-spacing: [2, never] - array-callback-return: [0] - array-element-newline: [0] - arrow-body-style: [0] - arrow-parens: [2, as-needed] - arrow-spacing: [2, {before: true, after: true}] - block-scoped-var: [2] - brace-style: [2, 1tbs, {allowSingleLine: true}] - camelcase: [2, {properties: never}] - capitalized-comments: [0] - class-methods-use-this: [2] - comma-dangle: [0] - comma-spacing: [2, {before: false, after: true}] - comma-style: [2, last] - complexity: [0] - computed-property-spacing: [2, never] - consistent-return: [0] - constructor-super: [2] - curly: [0] - default-case: [0] - dot-location: [2, property] - dot-notation: [0] - eol-last: [2] - eqeqeq: [2] - for-direction: [2] - func-call-spacing: [2, never] - func-name-matching: [2] - func-names: [0] - function-paren-newline: [0] - generator-star-spacing: [2, before] - global-require: [0] - guard-for-in: [2] - handle-callback-err: [2, ^(err|error)$] - id-blacklist: [0] - id-length: [0] - id-match: [0] - indent: [2, 2, {VariableDeclarator: 0}] - jsx-quotes: [0] - key-spacing: [0] - keyword-spacing: [2] - linebreak-style: [2, unix] - lines-around-comment: [0] - lines-around-directive: [0] - lines-between-class-members: [2, never] - max-len: [0] - max-lines: [0] - max-nested-callbacks: [0] - max-params: [0] - max-statements-per-line: [0] - max-statements: [0] - multiline-comment-style: [2, separate-lines] - multiline-ternary: [0] - new-cap: [0] - new-parens: [2] - newline-before-return: [0] - newline-per-chained-call: [0] - no-alert: [0] - no-array-constructor: [0] - no-await-in-loop: [0] - no-bitwise: [0] - no-buffer-constructor: [0] # enable for node 6 - no-caller: [2] - no-case-declarations: [2] - no-class-assign: [2] - no-compare-neg-zero: [2] - no-cond-assign: [2, except-parens] - no-confusing-arrow: [0] - no-const-assign: [2] - no-constant-condition: [0] - no-continue: [0] - no-control-regex: [2] - no-debugger: [2] - no-delete-var: [2] - no-div-regex: [0] - no-dupe-args: [2] - no-dupe-class-members: [2] - no-dupe-keys: [2] - no-duplicate-case: [2] - no-duplicate-imports: [2] - no-else-return: [0] - no-empty-character-class: [2] - no-empty-function: [0] - no-empty-pattern: [2] - no-empty: [2, {allowEmptyCatch: true}] - no-eq-null: [2] - no-eval: [2] - no-ex-assign: [2] - no-extend-native: [2] - no-extra-bind: [2] - no-extra-boolean-cast: [2] - no-extra-label: [0] - no-extra-parens: [0] - no-extra-semi: [2] - no-fallthrough: [2] - no-floating-decimal: [0] - no-func-assign: [2] - no-global-assign: [2] - no-implicit-coercion: [0] - no-implicit-globals: [0] - no-implied-eval: [2] - no-inline-comments: [0] - no-inner-declarations: [2] - no-invalid-regexp: [2] - no-invalid-this: [0] - no-irregular-whitespace: [2] - no-iterator: [2] - no-label-var: [2] - no-labels: [2] - no-lone-blocks: [2] - no-lonely-if: [0] - no-loop-func: [0] - no-magic-numbers: [0] - no-mixed-operators: [0] - no-mixed-requires: [2, true] - no-mixed-spaces-and-tabs: [2] - no-multi-spaces: - - 2 - - ignoreEOLComments: true - exceptions: - VariableDeclarator: true - ImportDeclaration: true - Property: true - no-multi-str: [2] - no-multiple-empty-lines: [2, {max: 1, maxEOF: 0, maxBOF: 0}] - no-native-reassign: [2] - no-negated-condition: [0] - no-negated-in-lhs: [2] - no-nested-ternary: [0] - no-new-func: [2] - no-new-object: [2] - no-new-require: [2] - no-new-symbol: [2] - no-new-wrappers: [2] - no-new: [0] - no-obj-calls: [2] - no-octal-escape: [2] - no-octal: [2] - no-path-concat: [2] - no-process-exit: [0] - no-proto: [2] - no-redeclare: [2] - no-regex-spaces: [2] - no-restricted-imports: [0] - no-restricted-modules: [2, domain, freelist, smalloc, sys] - no-restricted-syntax: [2, WithStatement] - no-return-assign: [0] - no-return-await: [0] - no-script-url: [2] - no-self-assign: [2, {props: true}] - no-self-compare: [2] - no-sequences: [2] - no-shadow-restricted-names: [2] - no-shadow: [0] - no-spaced-func: [2] - no-sparse-arrays: [2] - no-tabs: [2] - no-template-curly-in-string: [2] - no-this-before-super: [2] - no-throw-literal: [2] - no-trailing-spaces: [2] - no-undef-init: [2] - no-undef: [2] - no-undefined: [0] - no-underscore-dangle: [0] - no-unexpected-multiline: [2] - no-unmodified-loop-condition: [2] - no-unneeded-ternary: [2] - no-unreachable: [2] - no-unsafe-finally: [2] - no-unsafe-negation: [2] - no-unused-expressions: [2] - no-unused-labels: [0] - no-unused-vars: [2, {args: all, argsIgnorePattern: ^_, varsIgnorePattern: ^_}] - no-use-before-define: [2, nofunc] - no-useless-call: [2] - no-useless-computed-key: [2] - no-useless-concat: [2] - no-useless-constructor: [2] - no-useless-escape: [2] - no-var: [2] - no-warning-comments: [0] - no-whitespace-before-property: [2] - no-with: [2] - nonblock-statement-body-position: [2] - object-curly-newline: [0] - object-curly-spacing: [2, never] - object-shorthand: [0] - one-var-declaration-per-line: [0] - one-var: [0] - operator-assignment: [2, always] - operator-linebreak: [2, after] - padded-blocks: [2, never] - prefer-arrow-callback: [2] - prefer-const: [2] - prefer-destructuring: [0] - prefer-numeric-literals: [2] - prefer-promise-reject-errors: [2, {allowEmptyReject: false}] - prefer-reflect: [0] - prefer-rest-params: [2] - prefer-spread: [2] - prefer-template: [0] - quote-props: [0] - quotes: [2, double, {avoidEscape: true, allowTemplateLiterals: true}] - radix: [2, as-needed] - require-await: [0] - require-jsdoc: [0] - require-yield: [2] - semi-spacing: [2, {before: false, after: true}] - semi-style: [2, last] - semi: [2, always] - sort-imports: [0] - sort-keys: [0] - space-before-blocks: [2, always] - space-before-function-paren: [2, {anonymous: never, named: never, asyncArrow: always}] - space-in-parens: [2, never] - space-infix-ops: [2] - space-unary-ops: [2] - spaced-comment: [2, always, {markers: ["!"]}] - strict: [0] - switch-colon-spacing: [2] - symbol-description: [2] - template-curly-spacing: [2, never] - template-tag-spacing: [2, never] - unicode-bom: [2, never] - use-isnan: [2] - valid-typeof: [2] - wrap-iife: [2, inside] - wrap-regex: [0] - yield-star-spacing: [2, {before: true, after: false}] - yoda: [2, never] - -env: - amd: true - browser: true - commonjs: true - es6: true - greasemonkey: true - jquery: true - mocha: true - node: true +extends: eslint-config-silverwind diff --git a/README.md b/README.md index dc81d25..465f1e9 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@

-`updates` is a CLI tool which checks for dependency updates of the current project and optionally updates `package.json`. It is typically able to complete in less than a second. It can output JSON for interop with other tools. +`updates` is a CLI tool which checks for npm dependency updates of the current project and optionally updates `package.json`. It is typically able to complete in less than a second. ## Install @@ -34,7 +34,7 @@ package.json updated! ``` ### JSON Output -The resulting JSON object always has the key `results` which lists available updates. Additionally, `message` and `error` properties can be present. +`updates` can output JSON. The result is always an object with the key `results` and depending on operation, , `message` and `error` properties can also be present. ```console $ updates -j diff --git a/package.json b/package.json index 3753af4..64cd548 100644 --- a/package.json +++ b/package.json @@ -14,11 +14,14 @@ "test": "make test" }, "keywords": [ + "dependencies", "update", + "updates", + "check", + "checker", "npm", "yarn", - "packages", - "dependencies" + "packages" ], "files": [ "updates.js" @@ -33,6 +36,7 @@ "semver": "^5.5.0" }, "devDependencies": { - "eslint": "^4.19.1" + "eslint": "^4.19.1", + "eslint-config-silverwind": "^1.0.42" } } diff --git a/updates.js b/updates.js index b1ee3dc..8a89892 100755 --- a/updates.js +++ b/updates.js @@ -3,17 +3,21 @@ const args = require("minimist")(process.argv.slice(2), { boolean: [ - "update", "u", "json", "j", "color", "no-color", "version", "v", - "help", "h", "prerelease", "p" + "color", "no-color", + "help", "h", + "json", "j", + "prerelease", "p", + "update", "u", + "version", "v", ], alias: { - u: "update", - p: "prerelease", - i: "include", e: "exclude", + h: "help", + i: "include", j: "json", + p: "prerelease", + u: "update", v: "version", - h: "help" }, }); @@ -21,20 +25,15 @@ if (args.help) { process.stdout.write(`usage: updates [options] Options: - -u, --update Update package.json - -p, --prerelease Consider prerelease versions - -j, --json Output a JSON object - -i, --include Only include given packages - -e, --exclude Exclude given packages - -c, --color Force-enable color output - -n, --no-color Disable color output - -v, --version Print the version - -h, --help Print this help - - Exit Codes: - 0 Success - 1 Error - 255 Dependencies are up to date + -u, --update Update package.json + -p, --prerelease Consider prerelease versions + -j, --json Output a JSON object + -i, --include Only include given packages + -e, --exclude Exclude given packages + -c, --color Force-enable color output + -n, --no-color Disable color output + -v, --version Print the version + -h, --help Print this help Examples: $ updates @@ -79,13 +78,13 @@ const deps = {}; try { pkgStr = fs.readFileSync(packageFile, "utf8"); } catch (err) { - finish(new Error("Unable to open package.json")); + finish(new Error(`Unable to open package.json: ${err.message}`)); } try { pkg = JSON.parse(pkgStr); } catch (err) { - finish(new Error("Error parsing package.json:" + err.message)); + finish(new Error(`Error parsing package.json: ${err.message}`)); } let include, exclude; @@ -127,7 +126,7 @@ Promise.all(Object.keys(deps).map(dep => rp(url + dep))).then(responses => { // log results if (!Object.keys(deps).length) { - finish("All packages are up to date.", {exitCode: 255}); + finish("All packages are up to date."); } // exit if -u is not given @@ -137,7 +136,7 @@ Promise.all(Object.keys(deps).map(dep => rp(url + dep))).then(responses => { fs.writeFile(packageFile, updatePkg(), "utf8", err => { if (err) { - finish(new Error("Error writing package.json:" + err.message)); + finish(new Error(`Error writing package.json: ${err.message}`)); } else { finish("package.json updated!"); } @@ -201,7 +200,7 @@ function formatDeps() { "new": highlightDiff(deps[dep].new, deps[dep].old, true), }; }), { - columnSplitter: " ", + columnSplitter: " ".repeat(4), }); }