Skip to content

Commit badb662

Browse files
authored
feat(update): reduce number of kept versions to 2 (#1238)
refs #201
1 parent 6281eaa commit badb662

File tree

2 files changed

+18
-21
lines changed

2 files changed

+18
-21
lines changed

lib/commands/update.js

+11-11
Original file line numberDiff line numberDiff line change
@@ -142,21 +142,21 @@ class UpdateCommand extends Command {
142142
return yarnInstall(ctx.ui, ctx.zip);
143143
}
144144

145-
removeOldVersions(ctx, task) {
145+
async removeOldVersions({instance}, task) {
146146
const semver = require('semver');
147147

148-
return fs.readdir(path.join(process.cwd(), 'versions')).then((versions) => {
149-
versions = versions.filter(semver.valid).sort(semver.compare);
150-
if (versions.length <= 5) {
151-
task.skip();
152-
return;
153-
}
148+
const versionDirs = await fs.readdir(path.join(instance.dir, 'versions'));
149+
const versions = versionDirs.filter(semver.valid).sort(semver.compare);
154150

155-
const promises = versions.slice(0, -5)
156-
.map(version => fs.remove(path.join(process.cwd(), 'versions', version)));
151+
if (versions.length <= 2) {
152+
task.skip();
153+
return;
154+
}
157155

158-
return Promise.all(promises);
159-
});
156+
const promises = versions.slice(0, -2)
157+
.map(version => fs.remove(path.join(instance.dir, 'versions', version)));
158+
159+
await Promise.all(promises);
160160
}
161161

162162
async version(context) {

test/unit/commands/update-spec.js

+7-10
Original file line numberDiff line numberDiff line change
@@ -785,20 +785,17 @@ describe('Unit: Commands > Update', function () {
785785
});
786786

787787
describe('removeOldVersions', function () {
788-
it('skips if there are 5 or fewer versions installed', async function () {
788+
it('skips if there are 2 or fewer versions installed', async function () {
789789
const dirs = [
790-
'versions/1.4.0',
791-
'versions/1.5.0',
792790
'versions/1.5.1',
793791
'versions/1.5.2'
794792
];
795793
const env = setupTestFolder({dirs: dirs});
796794
const UpdateCommand = require(modulePath);
797795
const instance = new UpdateCommand({}, {});
798-
sinon.stub(process, 'cwd').returns(env.dir);
799796
const skipStub = sinon.stub();
800797

801-
await instance.removeOldVersions({}, {skip: skipStub});
798+
await instance.removeOldVersions({instance: {dir: env.dir}}, {skip: skipStub});
802799
expect(skipStub.calledOnce).to.be.true;
803800

804801
dirs.forEach((version) => {
@@ -825,20 +822,20 @@ describe('Unit: Commands > Update', function () {
825822
const instance = new UpdateCommand({}, {});
826823
sinon.stub(process, 'cwd').returns(env.dir);
827824
const keptVersions = [
828-
'1.1.0',
829-
'1.2.0',
830-
'1.3.0',
831825
'1.4.0',
832826
'1.5.0'
833827
];
834828
const removedVersions = [
835829
'1.0.0-beta.2',
836830
'1.0.0-RC.1',
837831
'1.0.0',
838-
'1.0.2'
832+
'1.0.2',
833+
'1.1.0',
834+
'1.2.0',
835+
'1.3.0'
839836
];
840837

841-
await instance.removeOldVersions();
838+
await instance.removeOldVersions({instance: {dir: env.dir}});
842839
keptVersions.forEach((version) => {
843840
expect(fs.existsSync(path.join(env.dir, 'versions', version))).to.be.true;
844841
});

0 commit comments

Comments
 (0)