{"id":15171826,"url":"https://github.com/nya1/bananareporter","last_synced_at":"2025-10-26T00:30:52.474Z","repository":{"id":107306252,"uuid":"609496920","full_name":"nya1/bananareporter","owner":"nya1","description":"An easy to use CLI to generate custom reports in JSON, JSONL, CSV from multiple sources","archived":false,"fork":false,"pushed_at":"2023-06-17T13:59:23.000Z","size":494,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-26T22:17:00.859Z","etag":null,"topics":["cli","command-line-tool","github","gitlab","jsonl","report","report-generator","reporting","reporting-tool"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nya1.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-03-04T11:03:26.000Z","updated_at":"2023-03-16T07:54:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"c68c9494-e4f6-4441-bbb3-3de8402300a7","html_url":"https://github.com/nya1/bananareporter","commit_stats":{"total_commits":64,"total_committers":6,"mean_commits":"10.666666666666666","dds":0.5,"last_synced_commit":"32c04a4180fd1bd468b242c0a8b92911c39e78f1"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nya1%2Fbananareporter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nya1%2Fbananareporter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nya1%2Fbananareporter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nya1%2Fbananareporter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nya1","download_url":"https://codeload.github.com/nya1/bananareporter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":236518695,"owners_count":19162118,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","command-line-tool","github","gitlab","jsonl","report","report-generator","reporting","reporting-tool"],"created_at":"2024-09-27T09:04:10.613Z","updated_at":"2025-10-26T00:30:52.036Z","avatar_url":"https://github.com/nya1.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"docs/assets/banana-reporter-logo.png\" alt=\"Banana Reporter Logo\" height=\"70px\"/\u003e\n\u003c/p\u003e\n\u003ch1 align=\"center\"\u003eBanana Reporter\u003c/h1\u003e\n\u003cp align=\"center\"\u003eCreate a report in CSV, JSON and JSONL from multiple sources (GitLab, GitHub, Git local repository and todo.txt)\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://oclif.io\"\u003e\u003cimg src=\"https://img.shields.io/badge/cli-oclif-brightgreen.svg\" alt=\"oclif\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://npmjs.org/package/bananareporter\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/bananareporter.svg\" alt=\"Version\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/nya1/bananareporter/actions/workflows/test.yml\"\u003e\u003cimg src=\"https://github.com/nya1/bananareporter/actions/workflows/test.yml/badge.svg\" alt=\"Github\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://npmjs.org/package/bananareporter\"\u003e\u003cimg src=\"https://img.shields.io/npm/dt/bananareporter.svg\" alt=\"Total Downloads\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/nya1/bananareporter/blob/main/package.json\"\u003e\u003cimg src=\"https://img.shields.io/npm/l/bananareporter.svg\" alt=\"License\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003c!-- toc --\u003e\n* [Features](#features)\n* [Quickstart](#quickstart)\n* [Usage](#usage)\n* [Commands](#commands)\n\u003c!-- tocstop --\u003e\n\n# Features\n\n- **Easy to use**: provide a `--from` and `--to` date range and a config file, all data will be fetched automatically\n- **Multiple output formats**: output file can be a JSON, JSONL or CSV (via `--format`) _more coming soon_\n- **Configurable**: data to be imported can be filtered using the configuration file and each option can be overridden per source\n- **Sources Supported**\n  - [GitLab](./docs/sources/gitlab.md): commits\n  - [GitHub](./docs/sources/github.md): commits\n  - [Git CLI (local repository)](./docs/sources/git-cli.md): commits\n  - todo.txt: tasks\n  - **[Request a new source](https://github.com/nya1/bananareporter/issues/new?assignees=\u0026labels=enhancement\u0026template=new-source-request.md\u0026title=)**\n\n## Use cases\n\n- create a PDF work report based on commits and tasks\n- get insights on your activity \n\n# Quickstart\n\n0. Install banana reporter CLI `npm i -g bananareporter`\n\n1. Create a config file `bananareporter.yaml` with the sources that you want to fetch\n\n```yaml\nsources:\n  - type: 'gitlab'\n    committerUsername: usernameOnGitlab\n    token: glpat-personalaccesstoken\n    # filters:\n    #   - on: '$project.path_with_namespace'\n    #     regex: '(namespace|anotherone)'\n  - type: 'github'\n    committerUsername: usernameOnGithub\n    # optional, needed for commits on private repositories\n    token: personalaccesstoken\n    # filters:\n    #   - on: 'repository.full_name'\n    #     regex: '(namespace|anotherone)'\n  # - type: 'todo.txt'\n  #   file: './todo.txt'\n```\n\n2. Run the reporter with a date range (ISO8601 date)\n\n```sh\nbananareporter --from 2023-01-01 --to 2023-03-01 -c bananareporter.yaml\n```\n\nIn the current directory you will find the output as `bananareporter_$FROM__$TO.json` (can be changed with `--out`)\n\nExample of output (json) with gitlab and github sources:\n\n```json\n[\n  {\n    \"id\": \"c12ba180bfecf45fcdcc40d6104d1f1b7ad409dc\",\n    \"date\": \"2023-01-13T07:51:21.730Z\",\n    \"username\": \"johndoe\",\n    \"description\": \"chore: update changelog and swagger branch:work git:aa33b04\",\n    \"projectId\": \"3318214\",\n    \"projectName\": \"awesome-frontend\",\n    \"type\": \"gitlab\"\n  },\n  {\n    \"id\": \"6e1b66a1dea89e957d8c44943f942be4874c0641\",\n    \"date\": \"2023-01-14T10:50:10.230Z\",\n    \"username\": \"johndoe\",\n    \"description\": \"refactor: compare date function branch:work git:ia1f241\",\n    \"projectId\": \"928544\",\n    \"projectName\": \"awesome-backend\",\n    \"type\": \"github\"\n  }\n]\n```\n\n\n# Usage\n\u003c!-- usage --\u003e\n```sh-session\n$ npm install -g bananareporter\n$ bananareporter COMMAND\nrunning command...\n$ bananareporter (--version)\nbananareporter/0.3.0 linux-x64 node-v16.19.0\n$ bananareporter --help [COMMAND]\nUSAGE\n  $ bananareporter COMMAND\n...\n```\n\u003c!-- usagestop --\u003e\n# Commands\n\u003c!-- commands --\u003e\n* [`bananareporter help [COMMANDS]`](#bananareporter-help-commands)\n* [`bananareporter run`](#bananareporter-run)\n\n## `bananareporter help [COMMANDS]`\n\nDisplay help for bananareporter.\n\n```\nUSAGE\n  $ bananareporter help [COMMANDS] [-n]\n\nARGUMENTS\n  COMMANDS  Command to show help for.\n\nFLAGS\n  -n, --nested-commands  Include all nested commands in the output.\n\nDESCRIPTION\n  Display help for bananareporter.\n```\n\n_See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v5.2.8/src/commands/help.ts)_\n\n## `bananareporter run`\n\nRun report\n\n```\nUSAGE\n  $ bananareporter run -o \u003cvalue\u003e --format json|jsonl|csv [-c \u003cvalue\u003e] [--to \u003cvalue\u003e --from \u003cvalue\u003e]\n    [--delay \u003cvalue\u003e] [--include-raw-object]\n\nFLAGS\n  -c, --config=\u003cvalue\u003e  config file location, by default ~/.config/bananareporter/config.yaml\n  -o, --out=\u003cvalue\u003e     (required) [default: ./bananareporter.json] file path to save the output\n  --delay=\u003cvalue\u003e       [default: 300] global delay in millisecons between http requests\n  --format=\u003coption\u003e     (required) [default: json] output file format\n                        \u003coptions: json|jsonl|csv\u003e\n  --from=2023-03-01     from date (ISO8601)\n  --include-raw-object  include raw object in json/jsonl reporter output\n  --to=2023-03-31       to date (ISO8601)\n\nDESCRIPTION\n  Run report\n\nEXAMPLES\n  $ banana-reporter run --from 2023-01-01 --to 2023-01-31\n  report with 138 entries saved to ./bananareporter.json\n```\n\n_See code: [dist/commands/run/index.ts](https://github.com/nya1/bananareporter/blob/v0.3.0/dist/commands/run/index.ts)_\n\u003c!-- commandsstop --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnya1%2Fbananareporter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnya1%2Fbananareporter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnya1%2Fbananareporter/lists"}