UNPKG

2.09 kBJavaScriptView Raw
1require('babel-register');
2const path = require('path');
3const fs = require('fs');
4const commands = require('redis-commands');
5const redis = require('ioredis');
6const RedisMock = require('../src').default;
7
8const mockedRedis = new RedisMock();
9
10const blacklist = [
11 'asking',
12 'debug',
13 'latency',
14 'pfdebug',
15 'pfselftest',
16 'psync',
17 'replconf',
18 'restore-asking',
19 'substr',
20 'unlink',
21];
22const filteredCommands = commands.list.filter(command => blacklist.indexOf(command) === -1);
23
24let supportedCommands = 0;
25let tableRows = `
26| redis | ioredis | ioredis-mock |
27|-------|:-------:|:------------:|`;
28filteredCommands.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
40const percentage = Math.floor((supportedCommands / filteredCommands.length) * 100);
41
42let color = 'red';
43if (percentage >= 28) {
44 color = 'orange';
45}
46if (percentage >= 46) {
47 color = 'yellow';
48}
49if (percentage >= 64) {
50 color = 'yellowgreen';
51}
52if (percentage >= 82) {
53 color = 'green';
54}
55if (percentage === 100) {
56 color = 'brightgreen';
57}
58
59const tableMd = `## Supported commands ![Commands Coverage: ${percentage}%](https://img.shields.io/badge/coverage-${percentage}%25-${color}.svg)
60${tableRows}`;
61
62fs.writeFile(path.resolve(__dirname, '..', 'compat.md'), tableMd, 'utf8', (err) => {
63 if (err) throw err;
64});
65
66const readme = path.resolve(__dirname, '..', 'README.md');
67fs.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});