{"id":20883922,"url":"https://github.com/apoclyps/merged","last_synced_at":"2025-10-03T18:27:22.427Z","repository":{"id":153130937,"uuid":"618509057","full_name":"apoclyps/merged","owner":"apoclyps","description":"A TUI  to monitor the duration of time a pull request is opened between ready to review and merged/closed for a Github Repository.","archived":false,"fork":false,"pushed_at":"2025-10-02T08:21:34.000Z","size":217,"stargazers_count":2,"open_issues_count":9,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-02T10:18:45.302Z","etag":null,"topics":["codereview","github","metrics","tui"],"latest_commit_sha":null,"homepage":"","language":"Python","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/apoclyps.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-03-24T16:11:01.000Z","updated_at":"2025-10-02T08:21:37.000Z","dependencies_parsed_at":"2023-10-24T12:28:42.127Z","dependency_job_id":"380c5fa1-30ef-4974-b451-5b9f5bdfbbeb","html_url":"https://github.com/apoclyps/merged","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/apoclyps/merged","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apoclyps%2Fmerged","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apoclyps%2Fmerged/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apoclyps%2Fmerged/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apoclyps%2Fmerged/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apoclyps","download_url":"https://codeload.github.com/apoclyps/merged/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apoclyps%2Fmerged/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277994628,"owners_count":25911925,"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","status":"online","status_checked_at":"2025-10-02T02:00:08.890Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["codereview","github","metrics","tui"],"created_at":"2024-11-18T08:08:23.343Z","updated_at":"2025-10-03T18:27:22.395Z","avatar_url":"https://github.com/apoclyps.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Merged\n\n[![Tests](https://github.com/apoclyps/merged/actions/workflows/test.yml/badge.svg)](https://github.com/apoclyps/merged/actions/workflows/test.yml)\n![pypi](https://img.shields.io/pypi/v/merged.svg)\n![versions](https://img.shields.io/pypi/pyversions/merged.svg)\n\n![](https://banners.beyondco.de/merged.png?theme=light\u0026packageManager=pip+install\u0026packageName=merged\u0026pattern=architect\u0026style=style_1\u0026description=Improve+visibility+of+your+merged+pull+requests\u0026md=1\u0026showWatermark=1\u0026fontSize=100px\u0026images=https%3A%2F%2Flaravel.com%2Fimg%2Flogomark.min.svg)\n\nSimplify managing dependencies within an all-in-one TUI dashboard.\n\n## How to use merged\n\nYou will need to create a GITHUB_TOKEN with permissions via [Github \u003e Settings \u003e Developer Settings](https://github.com/settings/tokens/new) with the `repo` permissions to read public/private repositories and and `admin:org` for `read:org` if you wish to access an organisation that is not public.\n\n```bash\npip install merged\n\n# your github username\nexport GITHUB_USER=\"user\"\n# an individual or an organisation in which the repository exists\nexport GITHUB_ORG=\"org\"\n# a comma separated list of repositories\nexport GITHUB_REPOSITORY=\"repo_1,repo_2\"\n# your personal github token\nexport GITHUB_TOKEN=\"secret\"\n\nmerged check\n```\n\n### Configuration\n\nMerged supports both .ini and .env files. Merged always searches for configuration in this order:\n\n- Environment variables;\n- Repository: ini or .env file;\n- Configuration Path\n- Review Defaults\n\nThe following steps are used to provide the configuration using a `.env` or `.ini` file. The configuration can be read from within the module/repository (default location set by decouple) using the `.env` file or via a location specified by an environmental variable that points to a `.ini` file located in the root of the project or in a location specified by `PATH_TO_CONFIG`.\n\n#### Using an `.env` file within the repository\n\n```bash\ncd /home/\u003cyour-user\u003e/workspace/apoclyps/merged\ntouch .env\n\necho \"GITHUB_ORG=apoclyps\" \u003e\u003e .env\necho \"GITHUB_REPOSITORY=micropython-by-example\" \u003e\u003e .env\necho \"GIT_BRANCH=main\" \u003e\u003e .env\npython -m merged config\n```\n\n#### Using an `.ini` file within the repository\n\n```bash\ncd /home/\u003cyour-user\u003e/workspace/apoclyps/merged\ntouch settings.ini\necho \"[settings]\\nGITHUB_ORG=apoclyps\\nGITHUB_REPOSITORY=micropython-by-example\\nGIT_BRANCH=main\" \u003e\u003e settings.ini\n\npython -m merged config\n```\n\n#### Providing a configuration path\n\nIf you wish to set the configuration path to use an `ini` or `.env` file when running the application, you can use the configuration of a specific file by supplying the path to the configuration like so:\n\n```bash\ncd /home/apoclyps/\ntouch settings.ini\necho \"[settings]\\nGITHUB_ORG=apoclyps\\nGITHUB_REPOSITORY=micropython-by-example\\nGIT_BRANCH=main\" \u003e\u003e settings.ini\n\ncd /home/\u003cyour-user\u003e/workspace/apoclyps/merged\nexport MERGED_PATH_TO_CONFIG=/home/\u003cyour-user\u003e/\n\npython -m merged config\n```\n\nIf at any time, you want to confirm your configuration reflects the file you have provided, you can use `merged config` to view what current configuration of Merged.\n\n#### Configuring Layout\n\n## Getting started with local development\n\nTo build and run the CLI on your host, you will need Python 3.9 or greater, pip, and virtualenv to build and run `merged`.\nIf you wish to publish a PR with your changes, first create a fork on Github and clone that code.\n\n```bash\n$ gh repo clone apoclyps/merged\n$ cd merged\n$ python3 -m venv env\n$ source env/bin/activate\n(env)$ pip install -r requirements_dev.txt\n(env)$ pip install -r requirements.txt\n(env)$ python -m merged check\n```\n\nIf you wish to keep a copy of Merged on your host system, you can install and run it using:\n\n```bash\npython -m venv env\nsource env/bin/activate\npython -m pip install -e .\nmerged -h\n```\n\nYou can run the Merged within Docker:\n\n```bash\ndocker-compose build cli \u0026\u0026 docker-compose run --rm cli python -m merged check\n```\n\nTo build an image and run that image with all of the necessary dependencies using the following commands:\n\n```bash\ndocker-compose build cli\ndocker-compose run --rm cli python -m merged check\n```\n\n## Testing\n\nA test suite has been included to ensure Merged functions correctly.\n\nTo run the entire test suite with verbose output, run the following:\n\n```bash\nmake test\n```\n\n## Linting\n\nTo run individual linting steps:\n\n```bash\nmake lint\n```\n\nYou can also set up `pre-commit` to run the linting steps automatically during the commit phase,\nthe pre-commit pipeline can be set up by running the following command on the project root:\n\n```bash\npre-commit install\n```\n\nTo run all checks manually:\n\n```bash\npre-commit run --all\n```\n\n## Contributions\n\nPlease read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapoclyps%2Fmerged","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapoclyps%2Fmerged","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapoclyps%2Fmerged/lists"}