update-notifier
update-notifier copied to clipboard
Allow simply showing notification for manual checks (with callback)
Currently to check and immediately show notification you have to do something like that:
const notifier = updateNotifier({
pkg: packageJson,
callback: (err, update) => {
if(update && update.type && update.type != 'latest') {
notifier.update = update;
notifier.notify({defer: false});
}
},
})
The problem is that notifier.update = update; is undocumented hack so better alternative to do that should be provided.
There is one more thing.
When the opts.callback is used, you do not create lastUpdateCheck so.. Never will be updated and neither can be detected. Because it even does not creates a config file?
I think that here in this .then should be added
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()
});
My use case scenario is that want to create a module that auto updates when needed.
Something like that
export default function autoUpdater(options) {
const opts = Object.assign({}, options);
if (!opts.pkg.name || !opts.pkg.version) {
throw new Error('unpdateNotifier: pkg.name and pkg.version are required');
}
opts.callback = (err, info) => {
if (err) {
throw err;
}
if (isInstalledGlobally(opts.pkg.name) && info.type !== 'latest') {
execSync(`npm install --global ${opts.pkg.name}`);
}
};
return unpdateNotifier(opts);
}