1 | require('babel-register');
|
2 | const path = require('path');
|
3 | const fs = require('fs');
|
4 | const commands = require('redis-commands');
|
5 | const redis = require('ioredis');
|
6 | const RedisMock = require('../src').default;
|
7 |
|
8 | const mockedRedis = new RedisMock();
|
9 |
|
10 | const blacklist = [
|
11 | 'asking',
|
12 | 'debug',
|
13 | 'latency',
|
14 | 'pfdebug',
|
15 | 'pfselftest',
|
16 | 'psync',
|
17 | 'replconf',
|
18 | 'restore-asking',
|
19 | 'substr',
|
20 | 'unlink',
|
21 | ];
|
22 | const filteredCommands = commands.list.filter(command => blacklist.indexOf(command) === -1);
|
23 |
|
24 | let supportedCommands = 0;
|
25 | let tableRows = `
|
26 | | redis | ioredis | ioredis-mock |
|
27 | |-------|:-------:|:------------:|`;
|
28 | filteredCommands.forEach((command) => {
|
29 | const redisCol = `[${command}](http://redis.io/commands/${command.toUpperCase()})`;
|
30 | const ioredisCol = command in redis.prototype ? ':white_check_mark:' : ':x:';
|
31 | const supportedCommand = command in mockedRedis;
|
32 | const ioredisMockCol = supportedCommand ? ':white_check_mark:' : ':x:';
|
33 | if (supportedCommand) {
|
34 | supportedCommands += 1;
|
35 | }
|
36 | tableRows += `
|
37 | |${redisCol}|${ioredisCol}|${ioredisMockCol}|`;
|
38 | });
|
39 |
|
40 | const percentage = Math.floor((supportedCommands / filteredCommands.length) * 100);
|
41 |
|
42 | let color = 'red';
|
43 | if (percentage >= 28) {
|
44 | color = 'orange';
|
45 | }
|
46 | if (percentage >= 46) {
|
47 | color = 'yellow';
|
48 | }
|
49 | if (percentage >= 64) {
|
50 | color = 'yellowgreen';
|
51 | }
|
52 | if (percentage >= 82) {
|
53 | color = 'green';
|
54 | }
|
55 | if (percentage === 100) {
|
56 | color = 'brightgreen';
|
57 | }
|
58 |
|
59 | const tableMd = `## Supported commands ![Commands Coverage: ${percentage}%](https://img.shields.io/badge/coverage-${percentage}%25-${color}.svg)
|
60 | ${tableRows}`;
|
61 |
|
62 | fs.writeFile(path.resolve(__dirname, '..', 'compat.md'), tableMd, 'utf8', (err) => {
|
63 | if (err) throw err;
|
64 | });
|
65 |
|
66 | const readme = path.resolve(__dirname, '..', 'README.md');
|
67 | fs.readFile(readme, 'utf8', (err, readmeMd) => {
|
68 | if (err) throw err;
|
69 |
|
70 | fs.writeFile(readme, readmeMd.toString().replace(
|
71 | /\[!\[.+\(compat\.md\)/g,
|
72 | `[![Redis Compatibility: ${percentage}%](https://img.shields.io/badge/redis-${percentage}%25-${color}.svg)](compat.md)`
|
73 | ), 'utf8', (err2) => {
|
74 | if (err2) throw err2;
|
75 | });
|
76 | });
|