1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 | const color = require('chalk');
|
15 |
|
16 | const explanations = {
|
17 | 'relation "(\\w+)" does not exist': matches =>
|
18 | color`I cannot find the table named {underline ${
|
19 | matches[1]
|
20 | }} in your database. Have you run {underline huncwot database setup} before starting the application?`,
|
21 | 'connect ECONNREFUSED 127.0.0.1:5432': matches =>
|
22 | "It looks like you haven't started your database server."
|
23 | };
|
24 |
|
25 | const wrap = (text, prepand = '', width = 80) =>
|
26 | text.replace(
|
27 | new RegExp(`(?![^\\n]{1,${width}}$)([^\\n]{1,${width}})\\s`, 'g'),
|
28 | `$1\n${prepand}`
|
29 | );
|
30 |
|
31 | module.exports = {
|
32 | for: error => {
|
33 | for (let [pattern, explanation] of Object.entries(explanations)) {
|
34 | let matches = error.message.match(pattern);
|
35 | if (matches) return wrap(explanation(matches), ' ');
|
36 | }
|
37 | return wrap('(missing)', ' ');
|
38 | }
|
39 | };
|