pear-prerelease 1.0.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +69 -14
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -20,49 +20,80 @@ const drive = new Hyperdrive(store.namespace('release'), { compat: false })
|
|
|
20
20
|
await drive.ready()
|
|
21
21
|
|
|
22
22
|
const prod = new Hyperdrive(store.namespace('prod'), PROD_KEY)
|
|
23
|
-
|
|
24
|
-
console.log(drive.blobs.core.length, drive.blobs.core.byteLength, id.encode(await drive.blobs.core.treeHash()))
|
|
25
|
-
console.log(drive.core.length, id.encode(await drive.core.treeHash()))
|
|
23
|
+
await prod.ready()
|
|
26
24
|
|
|
27
25
|
const stage = new Hyperdrive(store.session(), STAGE_KEY)
|
|
28
26
|
await stage.ready()
|
|
29
27
|
|
|
30
|
-
const co = stage.checkout(STAGE_CHECKOUT)
|
|
31
|
-
await co.ready()
|
|
32
|
-
|
|
33
28
|
swarm.on('connection', c => store.replicate(c))
|
|
34
29
|
swarm.join(drive.discoveryKey, {
|
|
35
30
|
client: true,
|
|
36
31
|
server: true
|
|
37
32
|
})
|
|
38
|
-
swarm.join(
|
|
33
|
+
swarm.join(stage.discoveryKey, {
|
|
39
34
|
client: true,
|
|
40
35
|
server: false
|
|
41
36
|
})
|
|
42
37
|
|
|
38
|
+
// hydrate prod target
|
|
39
|
+
if (prod.core.length === 0) await new Promise(resolve => prod.core.once('append', () => resolve()))
|
|
40
|
+
|
|
41
|
+
prod.core.download()
|
|
42
|
+
|
|
43
|
+
console.log('Copying in existing metadata data, might take a bit...')
|
|
44
|
+
while (drive.core.length < prod.core.length) {
|
|
45
|
+
await drive.core.append(await prod.core.get(drive.core.length))
|
|
46
|
+
console.log('Copied blocks', drive.core.length, '/', prod.core.length)
|
|
47
|
+
}
|
|
48
|
+
console.log('Done!')
|
|
49
|
+
console.log()
|
|
50
|
+
|
|
51
|
+
await drive.getBlobs()
|
|
52
|
+
await prod.getBlobs()
|
|
53
|
+
|
|
54
|
+
prod.blobs.core.download()
|
|
55
|
+
|
|
56
|
+
console.log('Copying in existing blob data, might take a bit...')
|
|
57
|
+
while (drive.blobs.core.length < prod.blobs.core.length) {
|
|
58
|
+
await drive.blobs.core.append(await prod.blobs.core.get(drive.blobs.core.length))
|
|
59
|
+
console.log('Copied blob blocks', drive.blobs.core.length, '/', prod.blobs.core.length)
|
|
60
|
+
}
|
|
61
|
+
console.log('Done!')
|
|
62
|
+
console.log()
|
|
63
|
+
|
|
64
|
+
const co = stage.checkout(STAGE_CHECKOUT)
|
|
65
|
+
await co.ready()
|
|
66
|
+
|
|
43
67
|
let n = 0
|
|
44
68
|
|
|
69
|
+
console.log('Checking diff')
|
|
45
70
|
for await (const data of co.mirror(drive, { dryRun: true, batch: true })) print(data)
|
|
71
|
+
if (!n) console.log('(Empty)')
|
|
72
|
+
console.log('Done!')
|
|
73
|
+
console.log()
|
|
46
74
|
|
|
47
75
|
const pkg = JSON.parse(await co.get('/package.json'))
|
|
48
|
-
console.log()
|
|
49
|
-
console.log('
|
|
50
|
-
console.log('version:', pkg.version)
|
|
76
|
+
console.log('Total changes', n)
|
|
77
|
+
console.log('Package version:', pkg.version)
|
|
51
78
|
console.log()
|
|
52
79
|
|
|
80
|
+
console.log('Core:')
|
|
53
81
|
console.log(drive.core.id, drive.core.length)
|
|
54
82
|
console.log(id.encode(await drive.core.treeHash()))
|
|
55
|
-
console.log(
|
|
83
|
+
console.log()
|
|
84
|
+
console.log('Blobs:')
|
|
85
|
+
console.log(drive.blobs.core.id, drive.blobs.core.length)
|
|
56
86
|
console.log(id.encode(await drive.blobs.core.treeHash()))
|
|
87
|
+
console.log()
|
|
57
88
|
|
|
58
89
|
if (DRY_RUN) {
|
|
59
|
-
console.log('
|
|
90
|
+
console.log('Exiting due to dry run...')
|
|
60
91
|
await swarm.destroy()
|
|
61
92
|
process.exit(0)
|
|
62
93
|
}
|
|
63
94
|
|
|
64
95
|
if (!/^\d+\.\d+\.\d+$/.test(pkg.version)) {
|
|
65
|
-
console.log('
|
|
96
|
+
console.log('Version does not look like a release version to for dry-running...')
|
|
66
97
|
await swarm.destroy()
|
|
67
98
|
process.exit(0)
|
|
68
99
|
}
|
|
@@ -73,9 +104,33 @@ console.log('OK THEN! Staging...')
|
|
|
73
104
|
|
|
74
105
|
console.log()
|
|
75
106
|
for await (const data of co.mirror(drive, { batch: true })) print(data)
|
|
107
|
+
if (!n) console.log('(Empty)')
|
|
76
108
|
console.log()
|
|
77
109
|
|
|
78
|
-
|
|
110
|
+
// skipping release as thats non sensical
|
|
111
|
+
const keys = ['metadata', 'channel', 'platformVersion', 'warmup']
|
|
112
|
+
|
|
113
|
+
for (const k of keys) {
|
|
114
|
+
const from = await co.db.get(k)
|
|
115
|
+
const to = await stage.db.get(k)
|
|
116
|
+
|
|
117
|
+
if (!from && !to) {
|
|
118
|
+
continue
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (!from && to) {
|
|
122
|
+
console.log('Dropping pear setting', key)
|
|
123
|
+
await stage.db.del(k)
|
|
124
|
+
continue
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
if ((from && !to) || (JSON.stringify(from.value) !== JSON.stringify(to.value))) {
|
|
128
|
+
console.log('Updating pear setting', key)
|
|
129
|
+
await stage.db.put(key, from.value)
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
console.log('Done!')
|
|
79
134
|
console.log(drive.core)
|
|
80
135
|
console.log()
|
|
81
136
|
console.log('Swarming until you exit...')
|