1 | #!/usr/bin/env node
|
2 |
|
3 | const Idea = require("../lib")
|
4 | , logger = require("bug-killer")
|
5 | , Table = require("le-table")
|
6 | , couleurs = require("couleurs")
|
7 | , ansiParser = require("ansi-parser")
|
8 | , Daty = require("daty")
|
9 | ;
|
10 |
|
11 | // Defaults
|
12 | Table.defaults.marks = {
|
13 | nw: "┌"
|
14 | , n: "─"
|
15 | , ne: "┐"
|
16 | , e: "│"
|
17 | , se: "┘"
|
18 | , s: "─"
|
19 | , sw: "└"
|
20 | , w: "│"
|
21 | , b: " "
|
22 | , mt: "┬"
|
23 | , ml: "├"
|
24 | , mr: "┤"
|
25 | , mb: "┴"
|
26 | , mm: "┼"
|
27 | };
|
28 |
|
29 | function display(arr) {
|
30 | if (!arr.length) {
|
31 | return logger.log("No ideas fetched.", "info");
|
32 | }
|
33 | var tbl = new Table()
|
34 | , i = 0
|
35 | , c = 0
|
36 | ;
|
37 |
|
38 | tbl.addRow([
|
39 | couleurs("Id").bold()
|
40 | , couleurs("Date").bold()
|
41 | , couleurs("State").bold()
|
42 | , couleurs("Idea").bold()
|
43 | ]);
|
44 |
|
45 | for (; i < arr.length; ++i) {
|
46 | c = arr[i];
|
47 | c.date = new Daty(c.date).format("dddd, MM/DD/YYYY");
|
48 | tbl.addRow([c.id + 1, c.date, c.state, c.idea]);
|
49 | }
|
50 |
|
51 | console.log(ansiParser.removeAnsi(tbl.toString()));
|
52 | }
|
53 |
|
54 | var idea = new Idea(err => {
|
55 | if (err) { return logger.log(err, "error"); }
|
56 | var commands = {
|
57 | create: callback => {
|
58 | idea.create(process.argv[3], err => {
|
59 | if (err) { return callback(err); }
|
60 | callback("Idea was added.");
|
61 | });
|
62 | idea.save();
|
63 | }
|
64 | , list: callback => {
|
65 | idea.filter({}, callback);
|
66 | }
|
67 | , filter: callback => {
|
68 | try {
|
69 | var filter = JSON.parse(process.argv[3] || "{ \"state\": \"OPEN\" }");
|
70 | } catch (e) {
|
71 | return callback("Cannot parse the filter.", "error");
|
72 | }
|
73 | idea.filter(filter, callback);
|
74 | }
|
75 | , solve: callback => {
|
76 | idea.solve(process.argv[3], () => {
|
77 | if (err) { return callback(err); }
|
78 | callback("Idea was solved.");
|
79 | });
|
80 | idea.save();
|
81 | }
|
82 | , help: () => {
|
83 | console.log(require("./docs/help"));
|
84 | }
|
85 | };
|
86 |
|
87 | if (~process.argv.indexOf("-h") || ~process.argv.indexOf("--help")) {
|
88 | return commands.help();
|
89 | }
|
90 |
|
91 | if (!commands[process.argv[2]]) {
|
92 | process.argv[2] = "filter";
|
93 | }
|
94 |
|
95 | commands[process.argv[2]]((err, res) => {
|
96 | if (err) {
|
97 | return logger.log(err, "error");
|
98 | }
|
99 |
|
100 | if (typeof res === "string") {
|
101 | return logger.log(res, "info");
|
102 | }
|
103 |
|
104 | display(res);
|
105 | });
|
106 | });
|