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

Commit 6dc649b

Browse files
committed
Adding parameter for options
License: MIT Signed-off-by: Adam Uhlir <uhlir.a@gmail.com>
1 parent 11111b7 commit 6dc649b

File tree

3 files changed

+31
-29
lines changed

3 files changed

+31
-29
lines changed

src/commands.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,12 @@ function reportingClosure (action) {
3030

3131
async function migrate ({ repoPath, ver, dry }) {
3232
repoPath = repoPath || process.env.IPFS_PATH || path.join(os.homedir(), '.jsipfs')
33-
await migrator.migrate(repoPath, ver, false, reportingClosure(dry ? 'loaded migration' : 'migrated to version'), dry)
33+
await migrator.migrate(repoPath, ver, false, undefined, reportingClosure(dry ? 'loaded migration' : 'migrated to version'), dry)
3434
}
3535

3636
async function revert ({ repoPath, ver, dry }) {
3737
repoPath = repoPath || process.env.IPFS_PATH || path.join(os.homedir(), '.jsipfs')
38-
await migrator.revert(repoPath, ver, false, reportingClosure(dry ? 'loaded migration' : 'reverted version'), dry)
38+
await migrator.revert(repoPath, ver, false, undefined, reportingClosure(dry ? 'loaded migration' : 'reverted version'), dry)
3939
}
4040

4141
async function status ({ repoPath }) {

src/index.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,13 @@ exports.getLatestMigrationVersion = getLatestMigrationVersion
3939
* @param {string} path - Path to initialized (!) JS-IPFS repo
4040
* @param {int?} toVersion - Version to which the repo should be migrated, if undefined repo will be migrated to the latest version.
4141
* @param {boolean?} ignoreLock - Won't lock the repo for applying the migrations. Use with caution.
42+
* @param {object?} options - Options that are passed to migrations, that can use them to correctly construct datastore. Options are same like for IPFSRepo.
4243
* @param {function?} progressCb - Callback which will be called after each executed migration to report progress
4344
* @param {boolean?} isDryRun - Allows to simulate the execution of the migrations without any effect.
4445
* @param {array?} migrations - Array of migrations to migrate. If undefined, the bundled migrations are used. Mainly for testing purpose.
4546
* @returns {Promise<void>}
4647
*/
47-
async function migrate (path, toVersion, ignoreLock, progressCb, isDryRun, migrations) {
48+
async function migrate (path, toVersion, ignoreLock, options, progressCb, isDryRun, migrations) {
4849
migrations = migrations || defaultMigrations
4950

5051
if (!path) {
@@ -89,7 +90,7 @@ async function migrate (path, toVersion, ignoreLock, progressCb, isDryRun, migra
8990
counter++
9091
log(`Migrating version ${migration.version}`)
9192
try {
92-
if (!isDryRun) await migration.migrate(path, isBrowser)
93+
if (!isDryRun) await migration.migrate(path, options, isBrowser)
9394
} catch (e) {
9495
e.message = `During migration to version ${migration.version} exception was raised: ${e.message}`
9596
throw e
@@ -116,12 +117,13 @@ exports.migrate = migrate
116117
* @param {string} path - Path to initialized (!) JS-IPFS repo
117118
* @param {int} toVersion - Version to which the repo will be reverted.
118119
* @param {function?} progressCb - Callback which will be called after each reverted migration to report progress
120+
* @param {object?} options - Options that are passed to migrations, that can use them to correctly construct datastore. Options are same like for IPFSRepo.
119121
* @param {boolean?} isDryRun - Allows to simulate the execution of the reversion without any effects. Make sense to utilize progressCb with this argument.
120122
* @param {boolean?} ignoreLock - Won't lock the repo for reverting the migrations. Use with caution.
121123
* @param {array?} migrations - Array of migrations to migrate. If undefined, the bundled migrations are used. Mainly for testing purpose.
122124
* @returns {Promise<void>}
123125
*/
124-
async function revert (path, toVersion, ignoreLock, progressCb, isDryRun, migrations) {
126+
async function revert (path, toVersion, ignoreLock, options, progressCb, isDryRun, migrations) {
125127
migrations = migrations || defaultMigrations
126128

127129
if (!path) {
@@ -176,7 +178,7 @@ async function revert (path, toVersion, ignoreLock, progressCb, isDryRun, migrat
176178
counter++
177179
log(`Reverting migration version ${migration.version}`)
178180
try {
179-
if (!isDryRun) await migration.revert(path, isBrowser)
181+
if (!isDryRun) await migration.revert(path, options, isBrowser)
180182
} catch (e) {
181183
e.message = `During reversion to version ${migration.version} exception was raised: ${e.message}`
182184
throw e

test/index.spec.js

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -87,14 +87,14 @@ describe('index.js', () => {
8787
it('should error with out path argument', () => {
8888
const migrationsMock = createMigrations()
8989

90-
return expect(migrator.revert(undefined, undefined, undefined, undefined, undefined, migrationsMock))
90+
return expect(migrator.revert(undefined, undefined, undefined, undefined, undefined, undefined, migrationsMock))
9191
.to.eventually.be.rejectedWith('Path argument is required!')
9292
})
9393

9494
it('should error with out toVersion argument', () => {
9595
const migrationsMock = createMigrations()
9696

97-
return expect(migrator.revert('/some/path', undefined, undefined, undefined, undefined, migrationsMock))
97+
return expect(migrator.revert('/some/path', undefined, undefined, undefined, undefined, undefined, migrationsMock))
9898
.to.eventually.be.rejectedWith('When reverting migrations, you have to specify to which version to revert!')
9999
})
100100

@@ -103,7 +103,7 @@ describe('index.js', () => {
103103
const migrationsMock = createMigrations()
104104

105105
return Promise.all(
106-
invalidValues.map((value) => expect(migrator.revert('/some/path', value, undefined, undefined, undefined, migrationsMock))
106+
invalidValues.map((value) => expect(migrator.revert('/some/path', value, undefined, undefined, undefined, undefined, migrationsMock))
107107
.to.eventually.be.rejectedWith('Version has to be positive integer!'))
108108
)
109109
})
@@ -112,7 +112,7 @@ describe('index.js', () => {
112112
getVersionStub.returns(2)
113113
const migrationsMock = createMigrations()
114114

115-
await expect(migrator.revert('/some/path', 2, undefined, undefined, undefined, migrationsMock))
115+
await expect(migrator.revert('/some/path', 2, undefined, undefined, undefined, undefined, migrationsMock))
116116
.to.eventually.be.fulfilled()
117117

118118
expect(lockStub.called).to.be.false()
@@ -122,7 +122,7 @@ describe('index.js', () => {
122122
getVersionStub.returns(2)
123123
const migrationsMock = createMigrations()
124124

125-
await expect(migrator.revert('/some/path', 3, undefined, undefined, undefined, migrationsMock))
125+
await expect(migrator.revert('/some/path', 3, undefined, undefined, undefined, undefined, migrationsMock))
126126
.to.eventually.be.fulfilled()
127127

128128
expect(lockStub.called).to.be.false()
@@ -134,15 +134,15 @@ describe('index.js', () => {
134134

135135
getVersionStub.returns(4)
136136
return expect(
137-
migrator.revert('/some/path', 1, undefined, undefined, undefined, nonReversibleMigrationsMock)
137+
migrator.revert('/some/path', 1, undefined, undefined, undefined, undefined, nonReversibleMigrationsMock)
138138
).to.eventually.be.rejectedWith('Migration version 3 is not possible to revert! Cancelling reversion.')
139139
})
140140

141141
it('should revert expected migrations', async () => {
142142
const migrationsMock = createMigrations()
143143
getVersionStub.returns(3)
144144

145-
await expect(migrator.revert('/some/path', 1, undefined, undefined, undefined, migrationsMock))
145+
await expect(migrator.revert('/some/path', 1, undefined, undefined, undefined, undefined, migrationsMock))
146146
.to.eventually.be.fulfilled()
147147

148148
expect(lockCloseStub.calledOnce).to.be.true()
@@ -160,7 +160,7 @@ describe('index.js', () => {
160160
const migrationsMock = createMigrations()
161161
getVersionStub.returns(2)
162162

163-
await expect(migrator.revert('/some/path', 1, undefined, undefined, undefined, migrationsMock))
163+
await expect(migrator.revert('/some/path', 1, undefined, undefined, undefined, undefined, migrationsMock))
164164
.to.eventually.be.fulfilled()
165165

166166
expect(lockCloseStub.calledOnce).to.be.true()
@@ -185,7 +185,7 @@ describe('index.js', () => {
185185
]
186186
getVersionStub.returns(2)
187187

188-
await expect(migrator.revert('/some/path', 1, undefined, undefined, undefined, migrationsMock))
188+
await expect(migrator.revert('/some/path', 1, undefined, undefined, undefined, undefined, migrationsMock))
189189
.to.eventually.be.fulfilled()
190190

191191
expect(lockCloseStub.calledOnce).to.be.true()
@@ -200,7 +200,7 @@ describe('index.js', () => {
200200
const migrationsMock = createMigrations()
201201
getVersionStub.returns(4)
202202

203-
await expect(migrator.revert('/some/path', 2, undefined, undefined, true, migrationsMock))
203+
await expect(migrator.revert('/some/path', 2, undefined, undefined, undefined, true, migrationsMock))
204204
.to.eventually.be.fulfilled()
205205

206206
expect(lockCloseStub.called).to.be.false()
@@ -214,7 +214,7 @@ describe('index.js', () => {
214214
const migrationsMock = createMigrations()
215215
getVersionStub.returns(4)
216216

217-
await expect(migrator.revert('/some/path', 2, true, undefined, undefined, migrationsMock))
217+
await expect(migrator.revert('/some/path', 2, true, undefined, undefined, undefined, migrationsMock))
218218
.to.eventually.be.fulfilled()
219219

220220
expect(lockCloseStub.called).to.be.false()
@@ -233,7 +233,7 @@ describe('index.js', () => {
233233
getVersionStub.returns(4)
234234
const progressCb = sinon.stub()
235235

236-
await expect(migrator.revert('/some/path', 2, undefined, progressCb, undefined, migrationsMock))
236+
await expect(migrator.revert('/some/path', 2, undefined, undefined, progressCb, undefined, migrationsMock))
237237
.to.eventually.be.fulfilled()
238238

239239
expect(progressCb.getCall(0).calledWith(sinon.match.any, 1, 2)).to.be.true()
@@ -245,7 +245,7 @@ describe('index.js', () => {
245245
const migrationsMock = createMigrations()
246246
migrationsMock[3].revert = sinon.stub().rejects()
247247

248-
await expect(migrator.revert('/some/path', 2, undefined, undefined, undefined, migrationsMock))
248+
await expect(migrator.revert('/some/path', 2, undefined, undefined, undefined, undefined, migrationsMock))
249249
.to.eventually.be.rejected()
250250

251251
expect(lockCloseStub.calledOnce).to.be.true()
@@ -258,7 +258,7 @@ describe('index.js', () => {
258258
it('should error with out path argument', () => {
259259
const migrationsMock = createMigrations()
260260

261-
return expect(migrator.migrate(undefined, undefined, undefined, undefined, undefined, migrationsMock))
261+
return expect(migrator.migrate(undefined, undefined, undefined, undefined, undefined, undefined, migrationsMock))
262262
.to.eventually.be.rejectedWith('Path argument is required!')
263263
})
264264

@@ -267,7 +267,7 @@ describe('index.js', () => {
267267
const migrationsMock = createMigrations()
268268

269269
return Promise.all(
270-
invalidValues.map((value) => expect(migrator.migrate('/some/path', value, undefined, undefined, undefined, migrationsMock))
270+
invalidValues.map((value) => expect(migrator.migrate('/some/path', value, undefined, undefined, undefined, undefined, migrationsMock))
271271
.to.eventually.be.rejectedWith('Version has to be positive integer!'))
272272
)
273273
})
@@ -276,7 +276,7 @@ describe('index.js', () => {
276276
const migrationsMock = createMigrations()
277277
getVersionStub.returns(2)
278278

279-
await expect(migrator.migrate('/some/path', undefined, undefined, undefined, undefined, migrationsMock))
279+
await expect(migrator.migrate('/some/path', undefined, undefined, undefined, undefined, undefined, migrationsMock))
280280
.to.eventually.be.fulfilled()
281281

282282
setVersionStub.calledOnceWithExactly('/some/path', 4) // 4 is the latest migration's version
@@ -286,7 +286,7 @@ describe('index.js', () => {
286286
getVersionStub.returns(2)
287287
const migrationsMock = createMigrations()
288288

289-
await expect(migrator.migrate('/some/path', 2, undefined, undefined, undefined, migrationsMock))
289+
await expect(migrator.migrate('/some/path', 2, undefined, undefined, undefined, undefined, migrationsMock))
290290
.to.eventually.be.fulfilled()
291291

292292
expect(lockStub.called).to.be.false()
@@ -296,7 +296,7 @@ describe('index.js', () => {
296296
getVersionStub.returns(3)
297297
const migrationsMock = createMigrations()
298298

299-
await expect(migrator.migrate('/some/path', 2, undefined, undefined, undefined, migrationsMock))
299+
await expect(migrator.migrate('/some/path', 2, undefined, undefined, undefined, undefined, migrationsMock))
300300
.to.eventually.be.fulfilled()
301301

302302
expect(lockStub.called).to.be.false()
@@ -306,7 +306,7 @@ describe('index.js', () => {
306306
const migrationsMock = createMigrations()
307307
getVersionStub.returns(1)
308308

309-
await expect(migrator.migrate('/some/path', 3, undefined, undefined, undefined, migrationsMock))
309+
await expect(migrator.migrate('/some/path', 3, undefined, undefined, undefined, undefined, migrationsMock))
310310
.to.eventually.be.fulfilled()
311311

312312
expect(lockCloseStub.calledOnce).to.be.true()
@@ -324,7 +324,7 @@ describe('index.js', () => {
324324
const migrationsMock = createMigrations()
325325
getVersionStub.returns(2)
326326

327-
await expect(migrator.migrate('/some/path', 4, undefined, undefined, true, migrationsMock))
327+
await expect(migrator.migrate('/some/path', 4, undefined, undefined, undefined, true, migrationsMock))
328328
.to.eventually.be.fulfilled()
329329

330330
expect(lockCloseStub.called).to.be.false()
@@ -338,7 +338,7 @@ describe('index.js', () => {
338338
const migrationsMock = createMigrations()
339339
getVersionStub.returns(2)
340340

341-
await expect(migrator.migrate('/some/path', 4, true, undefined, undefined, migrationsMock))
341+
await expect(migrator.migrate('/some/path', 4, true, undefined, undefined, undefined, migrationsMock))
342342
.to.eventually.be.fulfilled()
343343

344344
expect(lockCloseStub.called).to.be.false()
@@ -357,7 +357,7 @@ describe('index.js', () => {
357357
getVersionStub.returns(2)
358358
const progressCb = sinon.stub()
359359

360-
await expect(migrator.migrate('/some/path', 4, undefined, progressCb, undefined, migrationsMock))
360+
await expect(migrator.migrate('/some/path', 4, undefined, undefined, progressCb, undefined, migrationsMock))
361361
.to.eventually.be.fulfilled()
362362

363363
expect(progressCb.getCall(0).calledWith(sinon.match.any, 1, 2)).to.be.true()
@@ -369,7 +369,7 @@ describe('index.js', () => {
369369
const migrationsMock = createMigrations()
370370
migrationsMock[3].migrate = sinon.stub().rejects()
371371

372-
await expect(migrator.migrate('/some/path', 4, undefined, undefined, undefined, migrationsMock))
372+
await expect(migrator.migrate('/some/path', 4, undefined, undefined, undefined, undefined, migrationsMock))
373373
.to.eventually.be.rejected()
374374

375375
expect(lockCloseStub.calledOnce).to.be.true()

0 commit comments

Comments
 (0)