2017-12-20 21:46:01 +00:00
|
|
|
/*
|
2019-04-30 15:38:01 +00:00
|
|
|
Copyright 2016-2019 Balena
|
2017-12-20 21:46:01 +00:00
|
|
|
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
you may not use this file except in compliance with the License.
|
|
|
|
You may obtain a copy of the License at
|
|
|
|
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
See the License for the specific language governing permissions and
|
|
|
|
limitations under the License.
|
|
|
|
*/
|
|
|
|
|
|
|
|
import isRoot = require('is-root');
|
2019-03-12 22:07:57 +00:00
|
|
|
import * as UpdateNotifier from 'update-notifier';
|
|
|
|
|
2017-12-20 21:46:01 +00:00
|
|
|
import packageJSON = require('../../package.json');
|
|
|
|
|
|
|
|
// Check for an update once a day. 1 day granularity should be
|
|
|
|
// enough, rather than every run.
|
2018-10-19 14:38:50 +00:00
|
|
|
const balenaUpdateInterval = 1000 * 60 * 60 * 24 * 1;
|
2017-12-20 21:46:01 +00:00
|
|
|
|
|
|
|
let notifier: UpdateNotifier.UpdateNotifier;
|
|
|
|
|
|
|
|
export function notify() {
|
2018-01-04 16:17:43 +00:00
|
|
|
if (!notifier) {
|
2019-04-30 15:38:01 +00:00
|
|
|
// `update-notifier` creates files to make the next
|
|
|
|
// running time ask for updated, however this can lead
|
|
|
|
// to ugly EPERM issues if those files are created as root.
|
|
|
|
if (isRoot()) {
|
|
|
|
return;
|
|
|
|
} else {
|
|
|
|
notifier = UpdateNotifier({
|
|
|
|
pkg: packageJSON,
|
|
|
|
updateCheckInterval: balenaUpdateInterval,
|
|
|
|
});
|
|
|
|
}
|
2017-12-20 21:46:01 +00:00
|
|
|
}
|
2019-04-30 15:38:01 +00:00
|
|
|
const up = notifier.update;
|
2020-04-28 13:19:45 +00:00
|
|
|
if (
|
|
|
|
up &&
|
|
|
|
(require('semver') as typeof import('semver')).lt(up.current, up.latest)
|
|
|
|
) {
|
2019-04-30 15:38:01 +00:00
|
|
|
notifier.notify({
|
|
|
|
defer: false,
|
|
|
|
message: `Update available ${up.current} → ${up.latest}\n
|
|
|
|
https://github.com/balena-io/balena-cli/blob/master/INSTALL.md`,
|
|
|
|
});
|
2017-12-20 21:46:01 +00:00
|
|
|
}
|
2018-01-04 14:07:55 +00:00
|
|
|
}
|