Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Unified Diff: node_modules/vulcanize/node_modules/update-notifier/index.js

Issue 800513006: Added vulcanize under third_party/npm_modules (Closed) Base URL: https://chromium.googlesource.com/infra/third_party/npm_modules.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: node_modules/vulcanize/node_modules/update-notifier/index.js
diff --git a/node_modules/vulcanize/node_modules/update-notifier/index.js b/node_modules/vulcanize/node_modules/update-notifier/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..273ab87d71e8ee2065f176e61bfce4c9a7e36d15
--- /dev/null
+++ b/node_modules/vulcanize/node_modules/update-notifier/index.js
@@ -0,0 +1,123 @@
+'use strict';
+var spawn = require('child_process').spawn;
+var path = require('path');
+var Configstore = require('configstore');
+var chalk = require('chalk');
+var semverDiff = require('semver-diff');
+var latestVersion = require('latest-version');
+var stringLength = require('string-length');
+var isNpm = require('is-npm');
+
+function UpdateNotifier(options) {
+ this.options = options = options || {};
+
+ if (!options.packageName || !options.packageVersion) {
+ throw new Error('packageName and packageVersion required');
+ }
+
+ this.packageName = options.packageName;
+ this.packageVersion = options.packageVersion;
+ this.updateCheckInterval = typeof options.updateCheckInterval === 'number' ? options.updateCheckInterval : 1000 * 60 * 60 * 24; // 1 day
+ this.hasCallback = typeof options.callback === 'function';
+ this.callback = options.callback || function () {};
+
+ if (!this.hasCallback) {
+ this.config = new Configstore('update-notifier-' + this.packageName, {
+ optOut: false,
+ // init with the current time so the first check is only
+ // after the set interval, so not to bother users right away
+ lastUpdateCheck: Date.now()
+ });
+ }
+}
+
+UpdateNotifier.prototype.check = function () {
+ if (this.hasCallback) {
+ return this.checkNpm(this.callback);
+ }
+
+ if (this.config.get('optOut') || 'NO_UPDATE_NOTIFIER' in process.env) {
+ return;
+ }
+
+ this.update = this.config.get('update');
+
+ if (this.update) {
+ this.config.del('update');
+ }
+
+ // Only check for updates on a set interval
+ if (Date.now() - this.config.get('lastUpdateCheck') < this.updateCheckInterval) {
+ return;
+ }
+
+ // Spawn a detached process, passing the options as an environment property
+ spawn(process.execPath, [path.join(__dirname, 'check.js'), JSON.stringify(this.options)], {
+ detached: true,
+ stdio: 'ignore'
+ }).unref();
+};
+
+UpdateNotifier.prototype.checkNpm = function (cb) {
+ latestVersion(this.packageName, function (err, latestVersion) {
+ if (err) {
+ return cb(err);
+ }
+
+ cb(null, {
+ latest: latestVersion,
+ current: this.packageVersion,
+ type: semverDiff(this.packageVersion, latestVersion) || 'latest',
+ name: this.packageName
+ });
+ }.bind(this));
+};
+
+UpdateNotifier.prototype.notify = function (opts) {
+ if (!process.stdout.isTTY || isNpm || !this.update) {
+ return this;
+ }
+
+ opts = opts || {};
+ opts.defer = opts.defer === undefined ? true : false;
+
+ var fill = function (str, count) {
+ return Array(count + 1).join(str);
+ };
+
+ var line1 = ' Update available: ' + chalk.green.bold(this.update.latest) +
+ chalk.dim(' (current: ' + this.update.current + ')') + ' ';
+ var line2 = ' Run ' + chalk.blue('npm update -g ' + this.packageName) +
+ ' to update. ';
+ var contentWidth = Math.max(stringLength(line1), stringLength(line2));
+ var line1rest = contentWidth - stringLength(line1);
+ var line2rest = contentWidth - stringLength(line2);
+ var top = chalk.yellow('┌' + fill('─', contentWidth) + '┐');
+ var bottom = chalk.yellow('└' + fill('─', contentWidth) + '┘');
+ var side = chalk.yellow('│');
+
+ var message =
+ '\n\n' +
+ top + '\n' +
+ side + line1 + fill(' ', line1rest) + side + '\n' +
+ side + line2 + fill(' ', line2rest) + side + '\n' +
+ bottom + '\n';
+
+ if (opts.defer) {
+ process.on('exit', function () {
+ console.error(message);
+ });
+ } else {
+ console.error(message);
+ }
+
+ return this;
+};
+
+module.exports = function (options) {
+ var updateNotifier = new UpdateNotifier(options);
+ updateNotifier.check();
+ return updateNotifier;
+};
+
+module.exports.UpdateNotifier = UpdateNotifier;

Powered by Google App Engine
This is Rietveld 408576698