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.
Files changed (2) hide show
  1. package/index.js +69 -14
  2. 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(co.discoveryKey, {
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('total changes', n)
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(drive.blobs.core.length)
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('exiting due to dry run...')
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('version does not look like a release version to for dry-running...')
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
- console.log('DONE!')
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...')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pear-prerelease",
3
- "version": "1.0.1",
3
+ "version": "2.0.0",
4
4
  "description": "Proper prerelease flows with pear",
5
5
  "main": "index.js",
6
6
  "bin": {