|
1 |
| -var fs = require('fs'); |
2 |
| -var path = require('path'); |
3 |
| -var package = require('../package'); |
4 |
| -var previous = require('../build/version'); |
| 1 | +const fs = require('fs'); |
| 2 | +const path = require('path'); |
| 3 | +const {version} = require('../package'); |
| 4 | +const {format} = require('date-fns'); |
| 5 | +const crypto = require('crypto'); |
5 | 6 |
|
6 |
| -var version = package.version; |
| 7 | +const cwd = process.cwd(); |
7 | 8 |
|
8 |
| -var cwd = process.cwd(); |
9 |
| - |
10 |
| -function replaceVersion(filepath) { |
| 9 | +function replaceTextInFile(filepath, match, replacement) { |
11 | 10 | var filename = path.join(cwd, filepath);
|
12 |
| - fs.writeFileSync(filename, fs.readFileSync(filename, 'utf-8').split(previous).join(version)); |
13 |
| - console.log('Updated ', filepath); |
| 11 | + |
| 12 | + const updatedText = fs |
| 13 | + .readFileSync(filename, 'utf-8') |
| 14 | + .replace(match, replacement); |
| 15 | + |
| 16 | + if (updatedText.indexOf(replacement) === -1) { |
| 17 | + throw new Error(`Failed to update text in ${filepath}`); |
| 18 | + } |
| 19 | + |
| 20 | + fs.writeFileSync(filename, updatedText); |
| 21 | + |
| 22 | + console.log(`Updated ${filepath}: ${replacement}`); |
14 | 23 | }
|
15 | 24 |
|
16 |
| -console.log('Updating to version ' + version); |
| 25 | +// Update version in snippet |
| 26 | +replaceTextInFile( |
| 27 | + path.join('src', 'amplitude-snippet.js'), |
| 28 | + /cdn\.amplitude\.com\/libs\/amplitude-[0-9]+\.[0-9]+\.[0-9]+-min\.gz\.js/, |
| 29 | + `cdn.amplitude.com/libs/amplitude-${version}-min.gz.js`, |
| 30 | +); |
17 | 31 |
|
18 |
| -var files = [ |
19 |
| - 'README.md', |
| 32 | +// Update integrity hash in snippet |
| 33 | +const sdkText = fs.readFileSync(path.join('dist', `amplitude-${version}-min.js`), 'utf-8'); |
| 34 | +const hash = crypto.createHash('sha384').update(sdkText).digest('base64'); |
| 35 | +replaceTextInFile( |
20 | 36 | path.join('src', 'amplitude-snippet.js'),
|
21 |
| - path.join('src', 'version.js'), |
22 |
| -]; |
23 |
| -files.map(replaceVersion); |
| 37 | + /as.integrity = 'sha384-[a-zA-Z0-9+\/]+';/, |
| 38 | + `as.integrity = 'sha384-${hash}';`, |
| 39 | +); |
| 40 | + |
| 41 | +// Update version and relase date in readme |
| 42 | +replaceTextInFile( |
| 43 | + 'README.md', |
| 44 | + /\[[0-9]+\.[0-9]+\.[0-9]+ - Released on [A-Z][a-z]+ [0-9]+, [0-9]{4}]/, |
| 45 | + `[${version} - Released on ${format(new Date(), 'MMMM D, YYYY')}]`, |
| 46 | +); |
24 | 47 |
|
25 |
| -console.log('Updated version from', previous, 'to', version); |
| 48 | +console.log(`Updated version to ${version}`); |
0 commit comments