Skip to content
This repository was archived by the owner on Dec 12, 2021. It is now read-only.

Commit d857298

Browse files
committed
FIX: Migrations
1 parent 2b745d9 commit d857298

File tree

4 files changed

+57
-36
lines changed

4 files changed

+57
-36
lines changed

lib/snippet-injector.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@ export default {
1313

1414
activate(state) {
1515
this.storage = new Storage({dir: '/storage/snippet-injector/snippets/'});
16+
console.warn(this.storage.storageDir);
17+
console.warn(this.storage.dir);
1618
this.storage.migrate();
17-
19+
1820
// Events subscribed to in atom's system can be easily cleaned up with a CompositeDisposable
1921
this.subscriptions = new CompositeDisposable();
2022
// Register command that toggles this view

lib/snippet.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export default class Snippet {
99
tags = new Array();
1010
lang = '';
1111
uid = Date.now().toString();
12-
version = Util.getPackageVersion();
12+
version = undefined;
1313

1414
constructor(state) {
1515
if(typeof state === 'object') {
@@ -93,4 +93,8 @@ export default class Snippet {
9393
setVersion(newversion) {
9494
this.version = newversion;
9595
}
96+
97+
setUID(newuid) {
98+
this.uid = newuid;
99+
}
96100
}

lib/storage.js

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import { dirname } from 'path';
44
import Snippet from './snippet.js';
5+
import Util from './util.js';
56
const fs = require('fs');
67
const os = require('os');
78

@@ -112,26 +113,34 @@ export default class Storage {
112113
throw new TypeError('Storage directory has not been initialized.');
113114
} else {
114115
var files = this.retrieveFiles();
115-
var changed = 0;
116-
var migrated = 'The following snippets have been migrated:\n';
117116
if(files.length > 0) {
118-
files.forEach(function(current,index) {
117+
var changed = 0;
118+
var migrated = 'The following snippets have been migrated:\n';
119+
var store = this.storageDir+this.dir;
120+
var _this = this;
121+
files.forEach(function(current) {
119122
if(current.endsWith('.snippet.json')) {
120-
fs.renameSync(this.storageDir+this.dir+current,this.storageDir+this.dir+current.replace('.snippet.json','.json'));
121-
current = current.replace('.snippet.json','.json');
123+
fs.renameSync(store+current,store+current.replace('.snippet.json','.json'));
124+
current = current.replace('.snippet.json','');
122125
} else {
123126
current = current.replace('.json','');
124127
}
125128

126-
var snippet = new Snippet(JSON.parse(this.retrieveFile(current)));
129+
var snippet = new Snippet(JSON.parse(_this.retrieveFile(current)));
127130
var res = Util.compareVersions(Util.getPackageVersion(),snippet.getVersion());
128-
if(res !== false && res === Util.getPackageVersion()) {
129-
this.store(snippet);
130-
this.deleteFile(current);
131-
migrated += snippet.getTitle();
132-
if(index < files.length-1) {
133-
migrated += ', ';
134-
}
131+
if(res === Util.getPackageVersion() || res === undefined) {
132+
snippet.setVersion(Util.getPackageVersion());
133+
snippet.setUID(Util.generateUID({
134+
unique: true,
135+
tester: storage.testFile,
136+
timeout: 25,
137+
length: 20,
138+
prefix: 'sn',
139+
insertstring: 'SNIPPET'
140+
}));
141+
_this.store(snippet);
142+
_this.deleteFile(current);
143+
migrated += '\''+snippet.getTitle()+'\'\n';
135144
changed++;
136145
}
137146
});

lib/util.js

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -329,35 +329,41 @@ export default class Util {
329329
}
330330

331331
static compareVersions(vers1, vers2) {
332-
versionA = {
333-
major: vers1.split('.')[0],
334-
minor: vers1.split('.')[1],
335-
patch: vers1.split('.')[2]
336-
};
337-
versionB = {
338-
major: vers2.split('.')[0],
339-
minor: vers2.split('.')[1],
340-
patch: vers2.split('.')[2]
341-
};
342-
343-
if(versionA.major > versionB.major) {
344-
return vers1;
345-
} else if(versionB.major > versionA.major) {
346-
return vers2;
347-
} else {
348-
if(versionA.minor > versionB.minor) {
332+
if(this.isset(vers1,'string') && this.isset(vers2,'string')) {
333+
var versionA = {
334+
major: parseInt(vers1.split('.')[0]),
335+
minor: parseInt(vers1.split('.')[1]),
336+
patch: parseInt(vers1.split('.')[2])
337+
};
338+
console.log(versionA);
339+
var versionB = {
340+
major: parseInt(vers2.split('.')[0]),
341+
minor: parseInt(vers2.split('.')[1]),
342+
patch: parseInt(vers2.split('.')[2])
343+
};
344+
console.log(versionB);
345+
346+
if(versionA.major > versionB.major) {
349347
return vers1;
350-
} else if(versionB.minor > versionA.minor) {
348+
} else if(versionB.major > versionA.major) {
351349
return vers2;
352350
} else {
353-
if(versionA.patch > versionB.patch) {
351+
if(versionA.minor > versionB.minor) {
354352
return vers1;
355-
} else if(versionB.patch > versionA.patch) {
353+
} else if(versionB.minor > versionA.minor) {
356354
return vers2;
357355
} else {
358-
return false;
356+
if(versionA.patch > versionB.patch) {
357+
return vers1;
358+
} else if(versionB.patch > versionA.patch) {
359+
return vers2;
360+
} else {
361+
return false;
362+
}
359363
}
360364
}
365+
} else {
366+
return undefined;
361367
}
362368
}
363369

0 commit comments

Comments
 (0)