bananareporter 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -26,8 +26,8 @@
26
26
  - **Multiple output formats**: output file can be a JSON, JSONL or CSV (via `--format`) _more coming soon_
27
27
  - **Configurable**: data to be imported can be filtered using the configuration file and each option can be overridden per source
28
28
  - **Sources Supported**
29
- - GitLab: commits
30
- - GitHub: commits
29
+ - [GitLab](./docs/sources/gitlab.md): commits
30
+ - [GitHub](./docs/sources/github.md): commits
31
31
  - todo.txt: tasks
32
32
  - **[Request a new source](https://github.com/nya1/bananareporter/issues/new?assignees=&labels=enhancement&template=new-source-request.md&title=)**
33
33
 
@@ -67,14 +67,14 @@ sources:
67
67
  bananareporter --from 2023-01-01 --to 2023-03-01 -c bananareporter.yaml
68
68
  ```
69
69
 
70
- In the current directory you will find the output as `bananareporter_$FROM__$TO.json`, can be changed with `--out`
70
+ In the current directory you will find the output as `bananareporter_$FROM__$TO.json` (can be changed with `--out`)
71
71
 
72
72
  Example of output (json) with gitlab and github sources:
73
73
 
74
74
  ```json
75
75
  [
76
76
  {
77
- "date": "2022-07-13T07:51:21.730Z",
77
+ "date": "2023-01-13T07:51:21.730Z",
78
78
  "username": "johndoe",
79
79
  "description": "chore: update changelog and swagger branch:work git:aa33b04",
80
80
  "projectId": "3318214",
@@ -82,7 +82,7 @@ Example of output (json) with gitlab and github sources:
82
82
  "type": "gitlab"
83
83
  },
84
84
  {
85
- "date": "2022-07-14T10:50:10.230Z",
85
+ "date": "2023-01-14T10:50:10.230Z",
86
86
  "username": "johndoe2",
87
87
  "description": "refactor: compare date function branch:work git:ia1f241",
88
88
  "projectId": "928544",
@@ -100,7 +100,7 @@ $ npm install -g bananareporter
100
100
  $ bananareporter COMMAND
101
101
  running command...
102
102
  $ bananareporter (--version)
103
- bananareporter/0.2.0 linux-x64 node-v18.14.2
103
+ bananareporter/0.2.1 linux-x64 node-v18.14.2
104
104
  $ bananareporter --help [COMMAND]
105
105
  USAGE
106
106
  $ bananareporter COMMAND
@@ -130,7 +130,7 @@ DESCRIPTION
130
130
  Display help for bananareporter.
131
131
  ```
132
132
 
133
- _See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v5.2.7/src/commands/help.ts)_
133
+ _See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v5.2.8/src/commands/help.ts)_
134
134
 
135
135
  ## `bananareporter run`
136
136
 
@@ -159,5 +159,5 @@ EXAMPLES
159
159
  report with 138 entries saved to ./bananareporter.json
160
160
  ```
161
161
 
162
- _See code: [dist/commands/run/index.ts](https://github.com/nya1/bananareporter/blob/v0.2.0/dist/commands/run/index.ts)_
162
+ _See code: [dist/commands/run/index.ts](https://github.com/nya1/bananareporter/blob/v0.2.1/dist/commands/run/index.ts)_
163
163
  <!-- commandsstop -->
@@ -14,4 +14,5 @@ export default class Run extends Command {
14
14
  'disable-welcome-emoji': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
15
15
  };
16
16
  run(): Promise<void>;
17
+ catch(error: Error): Promise<void>;
17
18
  }
@@ -13,6 +13,7 @@ const lodash_1 = require("lodash");
13
13
  const logger_1 = require("../../util/logger");
14
14
  const github_1 = require("../../integrations/github");
15
15
  const todotxt_1 = require("../../integrations/todotxt");
16
+ const zod_1 = require("zod");
16
17
  class Run extends core_1.Command {
17
18
  static dateStringValidation(input) {
18
19
  if (!dayjs(input).isValid()) {
@@ -114,6 +115,13 @@ class Run extends core_1.Command {
114
115
  this.log(`report with ${reportList.length} entries saved to ${outFile}`);
115
116
  // this.log(`run! ${flags.config} ${JSON.stringify(configContent)}`)
116
117
  }
118
+ async catch(error) {
119
+ if (error instanceof zod_1.z.ZodError) {
120
+ const errMsg = error.issues.map(i => `${i.message}: ${i.path.join(', ')}`).join('\n');
121
+ throw new TypeError(`validation failed, ${errMsg}`);
122
+ }
123
+ throw error;
124
+ }
117
125
  }
118
126
  exports.default = Run;
119
127
  Run.description = 'Run report';
@@ -24,15 +24,11 @@ export declare const BananaConfig: z.ZodEffects<z.ZodEffects<z.ZodObject<{
24
24
  */
25
25
  sources: z.ZodArray<z.ZodObject<{
26
26
  type: z.ZodEnum<["gitlab", "github", "todo.txt"]>;
27
- }, "passthrough", z.ZodTypeAny, {
28
- type: "gitlab" | "github" | "todo.txt";
29
- } & {
30
- [k: string]: unknown;
31
- }, {
32
- type: "gitlab" | "github" | "todo.txt";
33
- } & {
34
- [k: string]: unknown;
35
- }>, "atleastone">;
27
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
28
+ type: z.ZodEnum<["gitlab", "github", "todo.txt"]>;
29
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
30
+ type: z.ZodEnum<["gitlab", "github", "todo.txt"]>;
31
+ }, z.ZodTypeAny, "passthrough">>, "atleastone">;
36
32
  }, "strip", z.ZodTypeAny, {
37
33
  format: "json" | "csv" | "jsonl";
38
34
  from: string;
@@ -41,32 +37,24 @@ export declare const BananaConfig: z.ZodEffects<z.ZodEffects<z.ZodObject<{
41
37
  to: string;
42
38
  configFileLocation: string;
43
39
  delay: number;
44
- sources: [{
45
- type: "gitlab" | "github" | "todo.txt";
46
- } & {
47
- [k: string]: unknown;
48
- }, ...({
49
- type: "gitlab" | "github" | "todo.txt";
50
- } & {
51
- [k: string]: unknown;
52
- })[]];
40
+ sources: [z.objectOutputType<{
41
+ type: z.ZodEnum<["gitlab", "github", "todo.txt"]>;
42
+ }, z.ZodTypeAny, "passthrough">, ...z.objectOutputType<{
43
+ type: z.ZodEnum<["gitlab", "github", "todo.txt"]>;
44
+ }, z.ZodTypeAny, "passthrough">[]];
53
45
  }, {
54
- includeRawObject?: boolean | undefined;
55
- delay?: number | undefined;
56
46
  format: "json" | "csv" | "jsonl";
57
47
  from: string;
58
48
  out: string;
59
49
  to: string;
60
50
  configFileLocation: string;
61
- sources: [{
62
- type: "gitlab" | "github" | "todo.txt";
63
- } & {
64
- [k: string]: unknown;
65
- }, ...({
66
- type: "gitlab" | "github" | "todo.txt";
67
- } & {
68
- [k: string]: unknown;
69
- })[]];
51
+ sources: [z.objectInputType<{
52
+ type: z.ZodEnum<["gitlab", "github", "todo.txt"]>;
53
+ }, z.ZodTypeAny, "passthrough">, ...z.objectInputType<{
54
+ type: z.ZodEnum<["gitlab", "github", "todo.txt"]>;
55
+ }, z.ZodTypeAny, "passthrough">[]];
56
+ includeRawObject?: boolean | undefined;
57
+ delay?: number | undefined;
70
58
  }>, {
71
59
  format: "json" | "csv" | "jsonl";
72
60
  from: string;
@@ -75,32 +63,24 @@ export declare const BananaConfig: z.ZodEffects<z.ZodEffects<z.ZodObject<{
75
63
  to: string;
76
64
  configFileLocation: string;
77
65
  delay: number;
78
- sources: [{
79
- type: "gitlab" | "github" | "todo.txt";
80
- } & {
81
- [k: string]: unknown;
82
- }, ...({
83
- type: "gitlab" | "github" | "todo.txt";
84
- } & {
85
- [k: string]: unknown;
86
- })[]];
66
+ sources: [z.objectOutputType<{
67
+ type: z.ZodEnum<["gitlab", "github", "todo.txt"]>;
68
+ }, z.ZodTypeAny, "passthrough">, ...z.objectOutputType<{
69
+ type: z.ZodEnum<["gitlab", "github", "todo.txt"]>;
70
+ }, z.ZodTypeAny, "passthrough">[]];
87
71
  }, {
88
- includeRawObject?: boolean | undefined;
89
- delay?: number | undefined;
90
72
  format: "json" | "csv" | "jsonl";
91
73
  from: string;
92
74
  out: string;
93
75
  to: string;
94
76
  configFileLocation: string;
95
- sources: [{
96
- type: "gitlab" | "github" | "todo.txt";
97
- } & {
98
- [k: string]: unknown;
99
- }, ...({
100
- type: "gitlab" | "github" | "todo.txt";
101
- } & {
102
- [k: string]: unknown;
103
- })[]];
77
+ sources: [z.objectInputType<{
78
+ type: z.ZodEnum<["gitlab", "github", "todo.txt"]>;
79
+ }, z.ZodTypeAny, "passthrough">, ...z.objectInputType<{
80
+ type: z.ZodEnum<["gitlab", "github", "todo.txt"]>;
81
+ }, z.ZodTypeAny, "passthrough">[]];
82
+ includeRawObject?: boolean | undefined;
83
+ delay?: number | undefined;
104
84
  }>, {
105
85
  format: "json" | "csv" | "jsonl";
106
86
  from: string;
@@ -109,32 +89,24 @@ export declare const BananaConfig: z.ZodEffects<z.ZodEffects<z.ZodObject<{
109
89
  to: string;
110
90
  configFileLocation: string;
111
91
  delay: number;
112
- sources: [{
113
- type: "gitlab" | "github" | "todo.txt";
114
- } & {
115
- [k: string]: unknown;
116
- }, ...({
117
- type: "gitlab" | "github" | "todo.txt";
118
- } & {
119
- [k: string]: unknown;
120
- })[]];
92
+ sources: [z.objectOutputType<{
93
+ type: z.ZodEnum<["gitlab", "github", "todo.txt"]>;
94
+ }, z.ZodTypeAny, "passthrough">, ...z.objectOutputType<{
95
+ type: z.ZodEnum<["gitlab", "github", "todo.txt"]>;
96
+ }, z.ZodTypeAny, "passthrough">[]];
121
97
  }, {
122
- includeRawObject?: boolean | undefined;
123
- delay?: number | undefined;
124
98
  format: "json" | "csv" | "jsonl";
125
99
  from: string;
126
100
  out: string;
127
101
  to: string;
128
102
  configFileLocation: string;
129
- sources: [{
130
- type: "gitlab" | "github" | "todo.txt";
131
- } & {
132
- [k: string]: unknown;
133
- }, ...({
134
- type: "gitlab" | "github" | "todo.txt";
135
- } & {
136
- [k: string]: unknown;
137
- })[]];
103
+ sources: [z.objectInputType<{
104
+ type: z.ZodEnum<["gitlab", "github", "todo.txt"]>;
105
+ }, z.ZodTypeAny, "passthrough">, ...z.objectInputType<{
106
+ type: z.ZodEnum<["gitlab", "github", "todo.txt"]>;
107
+ }, z.ZodTypeAny, "passthrough">[]];
108
+ includeRawObject?: boolean | undefined;
109
+ delay?: number | undefined;
138
110
  }>;
139
111
  export type BananaConfig = z.infer<typeof BananaConfig>;
140
112
  export declare function loadAndValidateConfig(input: unknown): BananaConfig;
@@ -167,9 +167,10 @@ export declare const GithubConfig: z.ZodObject<{
167
167
  to: z.ZodOptional<z.ZodString>;
168
168
  delay: z.ZodOptional<z.ZodNumber>;
169
169
  }, "strip", z.ZodTypeAny, {
170
- from?: string | undefined;
171
- to?: string | undefined;
172
- delay?: number | undefined;
170
+ protocol: "http" | "https";
171
+ committerUsername: string;
172
+ domain: string;
173
+ apiVersion: string;
173
174
  token?: string | undefined;
174
175
  filters?: [{
175
176
  on: string;
@@ -178,15 +179,11 @@ export declare const GithubConfig: z.ZodObject<{
178
179
  on: string;
179
180
  regex: string;
180
181
  }[]] | undefined;
181
- protocol: "http" | "https";
182
- committerUsername: string;
183
- domain: string;
184
- apiVersion: string;
185
- }, {
186
182
  from?: string | undefined;
187
- protocol?: "http" | "https" | undefined;
188
183
  to?: string | undefined;
189
184
  delay?: number | undefined;
185
+ }, {
186
+ committerUsername: string;
190
187
  token?: string | undefined;
191
188
  filters?: [{
192
189
  on: string;
@@ -197,7 +194,10 @@ export declare const GithubConfig: z.ZodObject<{
197
194
  }[]] | undefined;
198
195
  domain?: string | undefined;
199
196
  apiVersion?: string | undefined;
200
- committerUsername: string;
197
+ protocol?: "http" | "https" | undefined;
198
+ from?: string | undefined;
199
+ to?: string | undefined;
200
+ delay?: number | undefined;
201
201
  }>;
202
202
  export declare class GithubIntegration extends IntegrationBase {
203
203
  static type: "github";
@@ -54,9 +54,12 @@ export declare const GitlabConfig: z.ZodObject<{
54
54
  to: z.ZodOptional<z.ZodString>;
55
55
  delay: z.ZodOptional<z.ZodNumber>;
56
56
  }, "strip", z.ZodTypeAny, {
57
- from?: string | undefined;
58
- to?: string | undefined;
59
- delay?: number | undefined;
57
+ protocol: "http" | "https";
58
+ committerUsername: string;
59
+ token: string;
60
+ domain: string;
61
+ apiVersion: string;
62
+ apiBasePath: string;
60
63
  userId?: number | undefined;
61
64
  filters?: [{
62
65
  on: string;
@@ -65,17 +68,12 @@ export declare const GitlabConfig: z.ZodObject<{
65
68
  on: string;
66
69
  regex: string;
67
70
  }[]] | undefined;
68
- protocol: "http" | "https";
69
- committerUsername: string;
70
- token: string;
71
- domain: string;
72
- apiVersion: string;
73
- apiBasePath: string;
74
- }, {
75
71
  from?: string | undefined;
76
- protocol?: "http" | "https" | undefined;
77
72
  to?: string | undefined;
78
73
  delay?: number | undefined;
74
+ }, {
75
+ committerUsername: string;
76
+ token: string;
79
77
  userId?: number | undefined;
80
78
  filters?: [{
81
79
  on: string;
@@ -86,9 +84,11 @@ export declare const GitlabConfig: z.ZodObject<{
86
84
  }[]] | undefined;
87
85
  domain?: string | undefined;
88
86
  apiVersion?: string | undefined;
87
+ protocol?: "http" | "https" | undefined;
89
88
  apiBasePath?: string | undefined;
90
- committerUsername: string;
91
- token: string;
89
+ from?: string | undefined;
90
+ to?: string | undefined;
91
+ delay?: number | undefined;
92
92
  }>;
93
93
  export declare class GitlabIntegration extends IntegrationBase {
94
94
  static type: "gitlab";
@@ -18,8 +18,7 @@ export declare const TodoTxtConfig: z.ZodObject<{
18
18
  from: z.ZodOptional<z.ZodString>;
19
19
  to: z.ZodOptional<z.ZodString>;
20
20
  }, "strip", z.ZodTypeAny, {
21
- from?: string | undefined;
22
- to?: string | undefined;
21
+ file: string;
23
22
  filters?: [{
24
23
  on: string;
25
24
  regex: string;
@@ -27,11 +26,10 @@ export declare const TodoTxtConfig: z.ZodObject<{
27
26
  on: string;
28
27
  regex: string;
29
28
  }[]] | undefined;
30
- file: string;
31
- }, {
32
- file?: string | undefined;
33
29
  from?: string | undefined;
34
30
  to?: string | undefined;
31
+ }, {
32
+ file?: string | undefined;
35
33
  filters?: [{
36
34
  on: string;
37
35
  regex: string;
@@ -39,6 +37,8 @@ export declare const TodoTxtConfig: z.ZodObject<{
39
37
  on: string;
40
38
  regex: string;
41
39
  }[]] | undefined;
40
+ from?: string | undefined;
41
+ to?: string | undefined;
42
42
  }>;
43
43
  export declare class TodoTxtIntegration extends IntegrationBase {
44
44
  static type: "todo.txt";
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.2.0",
2
+ "version": "0.2.1",
3
3
  "commands": {
4
4
  "run": {
5
5
  "id": "run",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bananareporter",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "Easily generate a report from multiple sources",
5
5
  "author": "nya1",
6
6
  "bin": {
@@ -27,14 +27,14 @@
27
27
  "object-path": "^0.11.8",
28
28
  "papaparse": "^5.4.0",
29
29
  "winston": "^3.8.2",
30
- "zod": "^3.21.0"
30
+ "zod": "^3.21.4"
31
31
  },
32
32
  "devDependencies": {
33
- "@oclif/test": "^2.3.8",
33
+ "@oclif/test": "^2.3.10",
34
34
  "@types/chai": "^4",
35
35
  "@types/js-yaml": "^4.0.5",
36
36
  "@types/mocha": "^9.1.1",
37
- "@types/node": "^18.14.6",
37
+ "@types/node": "^18.15.0",
38
38
  "@types/node-fetch": "^2.6.2",
39
39
  "@types/object-path": "^0.11.1",
40
40
  "@types/papaparse": "^5.3.7",