Compare commits
11 Commits
Author | SHA1 | Date | |
---|---|---|---|
0f15afbb60 | |||
a6255855a0 | |||
251999c3d5 | |||
8a34731e8c | |||
186179d132 | |||
9666658a77 | |||
61f2ed9ef7 | |||
2224a22f0c | |||
c3c35c9b3e | |||
d9f75c236f | |||
61d7ac981b |
2
dist/index.d.ts
vendored
2
dist/index.d.ts
vendored
@ -3,6 +3,6 @@ export declare class SmartUpdate {
|
|||||||
kvStore: KeyValueStore;
|
kvStore: KeyValueStore;
|
||||||
check(npmnameArg: string, compareVersion: string, changelogUrlArg?: string): Promise<void>;
|
check(npmnameArg: string, compareVersion: string, changelogUrlArg?: string): Promise<void>;
|
||||||
private getNpmPackageFromRegistry(npmnameArg);
|
private getNpmPackageFromRegistry(npmnameArg);
|
||||||
private checkIfUpgrade(npmPackage, versionArg, changelogUrlArg?);
|
private checkIfUpgrade(npmPackage, localVersionStringArg, changelogUrlArg?);
|
||||||
}
|
}
|
||||||
export declare let standardHandler: SmartUpdate;
|
export declare let standardHandler: SmartUpdate;
|
||||||
|
25
dist/index.js
vendored
25
dist/index.js
vendored
@ -16,19 +16,23 @@ class SmartUpdate {
|
|||||||
}
|
}
|
||||||
check(npmnameArg, compareVersion, changelogUrlArg) {
|
check(npmnameArg, compareVersion, changelogUrlArg) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
let result = yield this.kvStore.readKey(npmnameArg);
|
|
||||||
let timeStamp = new smarttime_1.TimeStamp();
|
|
||||||
// the newData to write
|
// the newData to write
|
||||||
|
let timeStamp = new smarttime_1.TimeStamp();
|
||||||
let newData = {
|
let newData = {
|
||||||
lastCheck: timeStamp.milliSeconds,
|
lastCheck: timeStamp.milliSeconds,
|
||||||
latestVersion: 'x.x.x',
|
latestVersion: 'x.x.x',
|
||||||
performedUpgrade: false
|
performedUpgrade: false
|
||||||
};
|
};
|
||||||
|
// the comparison data from the keyValue store
|
||||||
|
let result = yield this.kvStore.readKey(npmnameArg);
|
||||||
if (result) {
|
if (result) {
|
||||||
let lastCheckTimeStamp = smarttime_1.TimeStamp.fromMilliSeconds(result.lastCheck);
|
let lastCheckTimeStamp = smarttime_1.TimeStamp.fromMilliSeconds(result.lastCheck);
|
||||||
let compareTime = plugins.smarttime.getMilliSecondsFromUnits({ days: 1 });
|
let tresholdTime = plugins.smarttime.getMilliSecondsFromUnits({ hours: 1 });
|
||||||
if (!lastCheckTimeStamp.isOlderThan(timeStamp, compareTime)) {
|
if (!lastCheckTimeStamp.isOlderThan(timeStamp, tresholdTime)) {
|
||||||
plugins.beautylog.log(`smartupdate: next check tomorrow: ${plugins.beautycolor.coloredString(`${npmnameArg} has already been checked for today.`, 'pink')}`);
|
newData.lastCheck = lastCheckTimeStamp.milliSeconds;
|
||||||
|
let nextCheckInMinutes = (tresholdTime - (timeStamp.milliSeconds - lastCheckTimeStamp.milliSeconds)) / 60000;
|
||||||
|
plugins.beautylog.log(`next update check in less than ${Math.floor(nextCheckInMinutes) + 1} minute(s): ` +
|
||||||
|
`${plugins.beautycolor.coloredString(`${npmnameArg} has already been checked within the last hour.`, 'pink')}`);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -48,15 +52,18 @@ class SmartUpdate {
|
|||||||
return npmPackage;
|
return npmPackage;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
checkIfUpgrade(npmPackage, versionArg, changelogUrlArg) {
|
checkIfUpgrade(npmPackage, localVersionStringArg, changelogUrlArg) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
if (npmPackage.version === versionArg) {
|
// create Version objects
|
||||||
|
let versionNpm = new plugins.smartversion.SmartVersion(npmPackage.version);
|
||||||
|
let versionLocal = new plugins.smartversion.SmartVersion(localVersionStringArg);
|
||||||
|
if (!versionNpm.greaterThan(versionLocal)) {
|
||||||
plugins.beautylog.ok(`smartupdate: You are running the latest version of ${plugins.beautycolor.coloredString(npmPackage.name, 'pink')}`);
|
plugins.beautylog.ok(`smartupdate: You are running the latest version of ${plugins.beautycolor.coloredString(npmPackage.name, 'pink')}`);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
plugins.beautylog.warn(`There is a newer version of ${npmPackage.name} available on npm.`);
|
plugins.beautylog.warn(`There is a newer version of ${npmPackage.name} available on npm.`);
|
||||||
plugins.beautylog.warn(`Your version: ${versionArg} | version on npm: ${npmPackage.version}`);
|
plugins.beautylog.warn(`Your version: ${versionLocal.versionString} | version on npm: ${versionNpm.versionString}`);
|
||||||
if (!process.env.CI && changelogUrlArg) {
|
if (!process.env.CI && changelogUrlArg) {
|
||||||
plugins.beautylog.log('trying to open changelog...');
|
plugins.beautylog.log('trying to open changelog...');
|
||||||
plugins.smartopen.openUrl(changelogUrlArg);
|
plugins.smartopen.openUrl(changelogUrlArg);
|
||||||
@ -68,4 +75,4 @@ class SmartUpdate {
|
|||||||
}
|
}
|
||||||
exports.SmartUpdate = SmartUpdate;
|
exports.SmartUpdate = SmartUpdate;
|
||||||
exports.standardHandler = new SmartUpdate();
|
exports.standardHandler = new SmartUpdate();
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsaURBQWdEO0FBRWhELHlDQUFxQztBQVVyQztJQUFBO1FBQ0UsWUFBTyxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLG9CQUFvQixDQUFDLENBQUE7SUFzRDlFLENBQUM7SUFwRE8sS0FBSyxDQUFFLFVBQWtCLEVBQUUsY0FBc0IsRUFBRSxlQUF3Qjs7WUFDL0UsSUFBSSxNQUFNLEdBQWlCLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUE7WUFDakUsSUFBSSxTQUFTLEdBQUcsSUFBSSxxQkFBUyxFQUFFLENBQUE7WUFFL0IsdUJBQXVCO1lBQ3ZCLElBQUksT0FBTyxHQUFHO2dCQUNaLFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWTtnQkFDakMsYUFBYSxFQUFFLE9BQU87Z0JBQ3RCLGdCQUFnQixFQUFFLEtBQUs7YUFDeEIsQ0FBQTtZQUNELEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ1gsSUFBSSxrQkFBa0IsR0FBRyxxQkFBUyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQTtnQkFDckUsSUFBSSxXQUFXLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO2dCQUN6RSxFQUFFLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM1RCxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxxQ0FBcUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsR0FBRyxVQUFVLHNDQUFzQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQTtvQkFDNUosTUFBTSxDQUFBO2dCQUNSLENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMseUJBQXlCLENBQUMsVUFBVSxDQUFDLENBQUE7WUFDakUsT0FBTyxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFBO1lBQzFDLElBQUksV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsY0FBYyxFQUFFLGVBQWUsQ0FBQyxDQUFBO1lBQ3hGLEVBQUUsQ0FBQSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFFakIsQ0FBQztZQUNELElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUM1QyxDQUFDO0tBQUE7SUFFYSx5QkFBeUIsQ0FBRSxVQUFVOztZQUNqRCxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyw4Q0FBOEMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUMvSCxJQUFJLFdBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUE7WUFDcEQsSUFBSSxVQUFVLEdBQUcsQ0FBQyxNQUFNLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDdEYsTUFBTSxDQUFDLFVBQVUsQ0FBQTtRQUNuQixDQUFDO0tBQUE7SUFFYSxjQUFjLENBQzFCLFVBQXVDLEVBQ3ZDLFVBQWtCLEVBQ2xCLGVBQXdCOztZQUV4QixFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLHNEQUFzRCxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQTtnQkFDeEksTUFBTSxDQUFDLEtBQUssQ0FBQTtZQUNkLENBQUM7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDTixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQywrQkFBK0IsVUFBVSxDQUFDLElBQUksb0JBQW9CLENBQUMsQ0FBQTtnQkFDMUYsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLFVBQVUsc0JBQXNCLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO2dCQUM3RixFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLDZCQUE2QixDQUFDLENBQUE7b0JBQ3BELE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFBO2dCQUM1QyxDQUFDO2dCQUNELE1BQU0sQ0FBQyxJQUFJLENBQUE7WUFDYixDQUFDO1FBQ0gsQ0FBQztLQUFBO0NBQ0Y7QUF2REQsa0NBdURDO0FBQ1UsUUFBQSxlQUFlLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQSJ9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsaURBQWdEO0FBRWhELHlDQUFxQztBQVVyQztJQUFBO1FBQ0UsWUFBTyxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLG9CQUFvQixDQUFDLENBQUE7SUFvRTlFLENBQUM7SUFsRU8sS0FBSyxDQUFFLFVBQWtCLEVBQUUsY0FBc0IsRUFBRSxlQUF3Qjs7WUFFL0UsdUJBQXVCO1lBQ3ZCLElBQUksU0FBUyxHQUFHLElBQUkscUJBQVMsRUFBRSxDQUFBO1lBQy9CLElBQUksT0FBTyxHQUFHO2dCQUNaLFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWTtnQkFDakMsYUFBYSxFQUFFLE9BQU87Z0JBQ3RCLGdCQUFnQixFQUFFLEtBQUs7YUFDeEIsQ0FBQTtZQUVELDhDQUE4QztZQUM5QyxJQUFJLE1BQU0sR0FBaUIsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUVqRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUNYLElBQUksa0JBQWtCLEdBQUcscUJBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7Z0JBQ3JFLElBQUksWUFBWSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtnQkFDM0UsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDN0QsT0FBTyxDQUFDLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxZQUFZLENBQUE7b0JBQ25ELElBQUksa0JBQWtCLEdBQUcsQ0FBQyxZQUFZLEdBQUcs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
|
3
dist/smartupdate.plugins.d.ts
vendored
3
dist/smartupdate.plugins.d.ts
vendored
@ -5,4 +5,5 @@ import * as npmextra from 'npmextra';
|
|||||||
import * as smartnpm from 'smartnpm';
|
import * as smartnpm from 'smartnpm';
|
||||||
import * as smartopen from 'smartopen';
|
import * as smartopen from 'smartopen';
|
||||||
import * as smarttime from 'smarttime';
|
import * as smarttime from 'smarttime';
|
||||||
export { beautylog, beautycolor, npmextra, smartnpm, smartopen, smarttime };
|
import * as smartversion from 'smartversion';
|
||||||
|
export { beautylog, beautycolor, npmextra, smartnpm, smartopen, smarttime, smartversion };
|
||||||
|
4
dist/smartupdate.plugins.js
vendored
4
dist/smartupdate.plugins.js
vendored
@ -13,4 +13,6 @@ const smartopen = require("smartopen");
|
|||||||
exports.smartopen = smartopen;
|
exports.smartopen = smartopen;
|
||||||
const smarttime = require("smarttime");
|
const smarttime = require("smarttime");
|
||||||
exports.smarttime = smarttime;
|
exports.smarttime = smarttime;
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnR1cGRhdGUucGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0dXBkYXRlLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwQkFBdUI7QUFFdkIsdUNBQXNDO0FBUXBDLDhCQUFTO0FBUFgsMkNBQTBDO0FBUXhDLGtDQUFXO0FBUGIscUNBQW9DO0FBUWxDLDRCQUFRO0FBUFYscUNBQW9DO0FBUWxDLDRCQUFRO0FBUFYsdUNBQXNDO0FBUXBDLDhCQUFTO0FBUFgsdUNBQXNDO0FBUXBDLDhCQUFTIn0=
|
const smartversion = require("smartversion");
|
||||||
|
exports.smartversion = smartversion;
|
||||||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnR1cGRhdGUucGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0dXBkYXRlLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwQkFBdUI7QUFFdkIsdUNBQXNDO0FBU3BDLDhCQUFTO0FBUlgsMkNBQTBDO0FBU3hDLGtDQUFXO0FBUmIscUNBQW9DO0FBU2xDLDRCQUFRO0FBUlYscUNBQW9DO0FBU2xDLDRCQUFRO0FBUlYsdUNBQXNDO0FBU3BDLDhCQUFTO0FBUlgsdUNBQXNDO0FBU3BDLDhCQUFTO0FBUlgsNkNBQTRDO0FBUzFDLG9DQUFZIn0=
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "smartupdate",
|
"name": "smartupdate",
|
||||||
"version": "1.0.5",
|
"version": "1.0.10",
|
||||||
"description": "update your tools in a smart way",
|
"description": "update your tools in a smart way",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"typings": "dist/index.d.ts",
|
"typings": "dist/index.d.ts",
|
||||||
@ -13,12 +13,13 @@
|
|||||||
"tapbundle": "^1.1.1"
|
"tapbundle": "^1.1.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"beautycolor": "^1.0.10",
|
"beautycolor": "^1.0.11",
|
||||||
"beautylog": "^6.1.10",
|
"beautylog": "^6.1.10",
|
||||||
"npmextra": "^2.0.9",
|
"npmextra": "^2.0.9",
|
||||||
"smartnpm": "^1.0.4",
|
"smartnpm": "^1.0.4",
|
||||||
"smartopen": "^1.0.3",
|
"smartopen": "^1.0.3",
|
||||||
"smarttime": "^1.0.6",
|
"smarttime": "^1.0.9",
|
||||||
|
"smartversion": "^1.0.3",
|
||||||
"typings-global": "^1.0.20"
|
"typings-global": "^1.0.20"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ import { expect, tap } from 'tapbundle'
|
|||||||
import * as smartupdate from '../ts/index'
|
import * as smartupdate from '../ts/index'
|
||||||
|
|
||||||
tap.test('should check for a npm module', async () => {
|
tap.test('should check for a npm module', async () => {
|
||||||
await smartupdate.standardHandler.check('npmts', '8.0.5', 'http://gitzone.gitlab.io/npmts/changelog.html')
|
await smartupdate.standardHandler.check('lodash', '1.0.5', 'http://gitzone.gitlab.io/npmts/changelog.html')
|
||||||
})
|
})
|
||||||
|
|
||||||
tap.start()
|
tap.start()
|
||||||
|
32
ts/index.ts
32
ts/index.ts
@ -14,27 +14,38 @@ export class SmartUpdate {
|
|||||||
kvStore = new plugins.npmextra.KeyValueStore('custom', 'global:smartupdate')
|
kvStore = new plugins.npmextra.KeyValueStore('custom', 'global:smartupdate')
|
||||||
|
|
||||||
async check (npmnameArg: string, compareVersion: string, changelogUrlArg?: string) {
|
async check (npmnameArg: string, compareVersion: string, changelogUrlArg?: string) {
|
||||||
let result: ICacheStatus = await this.kvStore.readKey(npmnameArg)
|
|
||||||
let timeStamp = new TimeStamp()
|
|
||||||
|
|
||||||
// the newData to write
|
// the newData to write
|
||||||
|
let timeStamp = new TimeStamp()
|
||||||
let newData = {
|
let newData = {
|
||||||
lastCheck: timeStamp.milliSeconds,
|
lastCheck: timeStamp.milliSeconds,
|
||||||
latestVersion: 'x.x.x',
|
latestVersion: 'x.x.x',
|
||||||
performedUpgrade: false
|
performedUpgrade: false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// the comparison data from the keyValue store
|
||||||
|
let result: ICacheStatus = await this.kvStore.readKey(npmnameArg)
|
||||||
|
|
||||||
if (result) {
|
if (result) {
|
||||||
let lastCheckTimeStamp = TimeStamp.fromMilliSeconds(result.lastCheck)
|
let lastCheckTimeStamp = TimeStamp.fromMilliSeconds(result.lastCheck)
|
||||||
let compareTime = plugins.smarttime.getMilliSecondsFromUnits({ days: 1 })
|
let tresholdTime = plugins.smarttime.getMilliSecondsFromUnits({ hours: 1 })
|
||||||
if (!lastCheckTimeStamp.isOlderThan(timeStamp, compareTime)) {
|
if (!lastCheckTimeStamp.isOlderThan(timeStamp, tresholdTime)) {
|
||||||
plugins.beautylog.log(`smartupdate: next check tomorrow: ${plugins.beautycolor.coloredString(`${npmnameArg} has already been checked for today.`, 'pink')}`)
|
newData.lastCheck = lastCheckTimeStamp.milliSeconds
|
||||||
|
let nextCheckInMinutes = (tresholdTime - (timeStamp.milliSeconds - lastCheckTimeStamp.milliSeconds)) / 60000
|
||||||
|
plugins.beautylog.log(
|
||||||
|
`next update check in less than ${Math.floor(nextCheckInMinutes) + 1} minute(s): ` +
|
||||||
|
`${plugins.beautycolor.coloredString(
|
||||||
|
`${npmnameArg} has already been checked within the last hour.`
|
||||||
|
, 'pink'
|
||||||
|
)}`
|
||||||
|
)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let npmPackage = await this.getNpmPackageFromRegistry(npmnameArg)
|
let npmPackage = await this.getNpmPackageFromRegistry(npmnameArg)
|
||||||
newData.latestVersion = npmPackage.version
|
newData.latestVersion = npmPackage.version
|
||||||
let upgradeBool = await this.checkIfUpgrade(npmPackage, compareVersion, changelogUrlArg)
|
let upgradeBool = await this.checkIfUpgrade(npmPackage, compareVersion, changelogUrlArg)
|
||||||
if(upgradeBool) {
|
if (upgradeBool) {
|
||||||
|
|
||||||
}
|
}
|
||||||
this.kvStore.writeKey(npmnameArg, newData)
|
this.kvStore.writeKey(npmnameArg, newData)
|
||||||
@ -49,15 +60,18 @@ export class SmartUpdate {
|
|||||||
|
|
||||||
private async checkIfUpgrade (
|
private async checkIfUpgrade (
|
||||||
npmPackage: plugins.smartnpm.NpmPackage,
|
npmPackage: plugins.smartnpm.NpmPackage,
|
||||||
versionArg: string,
|
localVersionStringArg: string,
|
||||||
changelogUrlArg?: string
|
changelogUrlArg?: string
|
||||||
) {
|
) {
|
||||||
if (npmPackage.version === versionArg) {
|
// create Version objects
|
||||||
|
let versionNpm = new plugins.smartversion.SmartVersion(npmPackage.version)
|
||||||
|
let versionLocal = new plugins.smartversion.SmartVersion(localVersionStringArg)
|
||||||
|
if (!versionNpm.greaterThan(versionLocal)) {
|
||||||
plugins.beautylog.ok(`smartupdate: You are running the latest version of ${plugins.beautycolor.coloredString(npmPackage.name, 'pink')}`)
|
plugins.beautylog.ok(`smartupdate: You are running the latest version of ${plugins.beautycolor.coloredString(npmPackage.name, 'pink')}`)
|
||||||
return false
|
return false
|
||||||
} else {
|
} else {
|
||||||
plugins.beautylog.warn(`There is a newer version of ${npmPackage.name} available on npm.`)
|
plugins.beautylog.warn(`There is a newer version of ${npmPackage.name} available on npm.`)
|
||||||
plugins.beautylog.warn(`Your version: ${versionArg} | version on npm: ${npmPackage.version}`)
|
plugins.beautylog.warn(`Your version: ${versionLocal.versionString} | version on npm: ${versionNpm.versionString}`)
|
||||||
if (!process.env.CI && changelogUrlArg) {
|
if (!process.env.CI && changelogUrlArg) {
|
||||||
plugins.beautylog.log('trying to open changelog...')
|
plugins.beautylog.log('trying to open changelog...')
|
||||||
plugins.smartopen.openUrl(changelogUrlArg)
|
plugins.smartopen.openUrl(changelogUrlArg)
|
||||||
|
@ -6,6 +6,7 @@ import * as npmextra from 'npmextra'
|
|||||||
import * as smartnpm from 'smartnpm'
|
import * as smartnpm from 'smartnpm'
|
||||||
import * as smartopen from 'smartopen'
|
import * as smartopen from 'smartopen'
|
||||||
import * as smarttime from 'smarttime'
|
import * as smarttime from 'smarttime'
|
||||||
|
import * as smartversion from 'smartversion'
|
||||||
|
|
||||||
export {
|
export {
|
||||||
beautylog,
|
beautylog,
|
||||||
@ -13,5 +14,6 @@ export {
|
|||||||
npmextra,
|
npmextra,
|
||||||
smartnpm,
|
smartnpm,
|
||||||
smartopen,
|
smartopen,
|
||||||
smarttime
|
smarttime,
|
||||||
|
smartversion
|
||||||
}
|
}
|
||||||
|
31
yarn.lock
31
yarn.lock
@ -53,8 +53,8 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-2.0.29.tgz#5002e14f75e2d71e564281df0431c8c1b4a2a36a"
|
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-2.0.29.tgz#5002e14f75e2d71e564281df0431c8c1b4a2a36a"
|
||||||
|
|
||||||
"@types/node@*", "@types/node@^8.0.10":
|
"@types/node@*", "@types/node@^8.0.10":
|
||||||
version "8.0.22"
|
version "8.0.24"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.22.tgz#9c6bfee1f45f5e9952ff6b487e657ecca48c7777"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.24.tgz#06c580084d9add1fb40c1510ef0b448961246fb1"
|
||||||
|
|
||||||
"@types/open@^0.0.29":
|
"@types/open@^0.0.29":
|
||||||
version "0.0.29"
|
version "0.0.29"
|
||||||
@ -68,6 +68,10 @@
|
|||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/@types/q/-/q-1.0.3.tgz#08e99d20f7abfc0fe202b6d5a0921bfafcdea8d0"
|
resolved "https://registry.yarnpkg.com/@types/q/-/q-1.0.3.tgz#08e99d20f7abfc0fe202b6d5a0921bfafcdea8d0"
|
||||||
|
|
||||||
|
"@types/semver@^5.3.33":
|
||||||
|
version "5.3.34"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-5.3.34.tgz#6fade409ceb8ae817c1f7f1cfa5375416e97045f"
|
||||||
|
|
||||||
"@types/shelljs@^0.7.2":
|
"@types/shelljs@^0.7.2":
|
||||||
version "0.7.4"
|
version "0.7.4"
|
||||||
resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.7.4.tgz#137b5f31306eaff4de120ffe5b9d74b297809cfc"
|
resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.7.4.tgz#137b5f31306eaff4de120ffe5b9d74b297809cfc"
|
||||||
@ -111,12 +115,11 @@ balanced-match@^1.0.0:
|
|||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
|
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
|
||||||
|
|
||||||
beautycolor@^1.0.10, beautycolor@^1.0.7, beautycolor@^1.0.9:
|
beautycolor@^1.0.11, beautycolor@^1.0.7, beautycolor@^1.0.9:
|
||||||
version "1.0.10"
|
version "1.0.11"
|
||||||
resolved "https://registry.yarnpkg.com/beautycolor/-/beautycolor-1.0.10.tgz#4b50758e59115839b3bb2bfe8aaaec9e29c747dd"
|
resolved "https://registry.yarnpkg.com/beautycolor/-/beautycolor-1.0.11.tgz#71c5568d5a7ed5c144d3a54f753ad1b08862aea5"
|
||||||
dependencies:
|
dependencies:
|
||||||
ansi-256-colors "^1.1.0"
|
ansi-256-colors "^1.1.0"
|
||||||
tapbundle "^1.1.1"
|
|
||||||
typings-global "^1.0.14"
|
typings-global "^1.0.14"
|
||||||
|
|
||||||
beautylog@^6.1.10:
|
beautylog@^6.1.10:
|
||||||
@ -593,7 +596,7 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1:
|
|||||||
version "5.1.1"
|
version "5.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
|
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
|
||||||
|
|
||||||
semver@^5.3.0:
|
semver@^5.3.0, semver@^5.4.1:
|
||||||
version "5.4.1"
|
version "5.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
|
resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
|
||||||
|
|
||||||
@ -708,12 +711,20 @@ smartshell@^1.0.6:
|
|||||||
typings-global "^1.0.19"
|
typings-global "^1.0.19"
|
||||||
which "^1.2.14"
|
which "^1.2.14"
|
||||||
|
|
||||||
smarttime@^1.0.6:
|
smarttime@^1.0.9:
|
||||||
version "1.0.6"
|
version "1.0.9"
|
||||||
resolved "https://registry.yarnpkg.com/smarttime/-/smarttime-1.0.6.tgz#0412a021cff88e8e41b766103a2d9e42fe816ddc"
|
resolved "https://registry.yarnpkg.com/smarttime/-/smarttime-1.0.9.tgz#a307bde5bb56207a4bc92eeb416de503dae64fec"
|
||||||
dependencies:
|
dependencies:
|
||||||
typings-global "^1.0.16"
|
typings-global "^1.0.16"
|
||||||
|
|
||||||
|
smartversion@^1.0.3:
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/smartversion/-/smartversion-1.0.3.tgz#8b6b1553594a4df7fac8495bc2802b4a6f84a27c"
|
||||||
|
dependencies:
|
||||||
|
"@types/semver" "^5.3.33"
|
||||||
|
semver "^5.4.1"
|
||||||
|
typings-global "^1.0.16"
|
||||||
|
|
||||||
sprintf-js@~1.0.2:
|
sprintf-js@~1.0.2:
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
|
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
|
||||||
|
Reference in New Issue
Block a user