vsc-material-theme/extensions/helpers/check-installation.ts

34 lines
1.1 KiB
TypeScript

import {getDefaultValues, getPackageJSON} from './fs';
import {IInstallationType} from '../interfaces/iinstallation-type';
const splitVersion = (input: string): {major: number; minor: number; patch: number} => {
const [major, minor, patch] = input.split('.').map(i => parseInt(i, 10));
return {major, minor, patch};
};
export default (): IInstallationType => {
const out: IInstallationType = {
isUpdate: false,
isFirstInstall: false
};
const defaults = getDefaultValues();
const packageJSON = getPackageJSON();
const isFirstInstall = defaults.changelog === undefined ||
(defaults.changelog !== undefined && typeof defaults.changelog.lastversion !== 'string');
if (isFirstInstall) {
return {...out, isFirstInstall};
}
const versionCurrent = splitVersion(packageJSON.version);
const versionOld = isFirstInstall ? null : splitVersion(defaults.changelog.lastversion);
const isUpdate = !versionOld ||
versionCurrent.major > versionOld.major ||
versionCurrent.minor > versionOld.minor ||
versionCurrent.patch > versionOld.patch;
return {...out, isUpdate};
};