{"id":22610266,"url":"https://github.com/semior001/glmrl","last_synced_at":"2025-10-10T06:17:24.878Z","repository":{"id":207941675,"uuid":"719526898","full_name":"Semior001/glmrl","owner":"Semior001","description":"tui for listing gitlab merge requests with advanced filters","archived":false,"fork":false,"pushed_at":"2023-12-01T08:05:29.000Z","size":59,"stargazers_count":2,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-27T22:49:08.315Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","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/Semior001.png","metadata":{"files":{"readme":"README.md","changelog":null,"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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-16T11:05:38.000Z","updated_at":"2025-05-25T20:39:15.000Z","dependencies_parsed_at":"2023-11-28T08:31:55.077Z","dependency_job_id":"9a32af4a-9c2e-460f-a1b3-0bf300b759d3","html_url":"https://github.com/Semior001/glmrl","commit_stats":null,"previous_names":["semior001/glmrl"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/Semior001/glmrl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Semior001%2Fglmrl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Semior001%2Fglmrl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Semior001%2Fglmrl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Semior001%2Fglmrl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Semior001","download_url":"https://codeload.github.com/Semior001/glmrl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Semior001%2Fglmrl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002964,"owners_count":26083488,"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-10T02:00:06.843Z","response_time":62,"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":[],"created_at":"2024-12-08T16:06:29.673Z","updated_at":"2025-10-10T06:17:24.860Z","avatar_url":"https://github.com/Semior001.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# glmrl\ntui for listing gitlab merge requests with advanced filters\n\n## install\n`go install github.com/Semior001/glmrl/glmrl@latest`\n\n## usage\n```\nUsage:\n  glmrl [OPTIONS] list [list-OPTIONS]\n\nApplication Options:\n  -c, --config=                               path to config file (default: ~/.glmrl/config.yaml)\n      --dbg                                   turn on debug mode [$DEBUG]\n\ngitlab:\n      --gitlab.base-url=                      gitlab host [$GITLAB_BASE_URL]\n      --gitlab.token=                         gitlab token with read_api scope [$GITLAB_TOKEN]\n\ntrace:\n      --trace.enabled                         enable tracing [$TRACE_ENABLED]\n      --trace.host=                           jaeger agent host [$TRACE_HOST]\n      --trace.port=                           jaeger agent port [$TRACE_PORT]\n\nHelp Options:\n  -h, --help                                  Show this help message\n\n[list command options]\n          --state=                            list only merge requests with the given state\n          --approved-by-me=[true|false]       list only merge requests approved by me\n          --without-my-unresolved-threads     list only merge requests without MY unresolved threads, but lists threads where my action is\n                                              required\n          --not-enough-approvals=[true|false] list only merge requests with not enough approvals, but show the ones where I've been\n                                              requested as a reviewer and didn't approve it\n          --action=[open|copy]                action to perform on pressing enter (default: open)\n          --poll-interval=                    interval to poll for new merge requests, 0 means no polling, only manual refresh (default: 5m)\n\n    labels:\n          --labels.include=                   list only entries that include the given value\n          --labels.exclude=                   list only entries that exclude the given value\n\n    authors:\n          --authors.include=                  list only entries that include the given value\n          --authors.exclude=                  list only entries that exclude the given value\n\n    project-paths:\n          --project-paths.include=            list only entries that include the given value\n          --project-paths.exclude=            list only entries that exclude the given value\n\n    sort:\n          --sort.by=[created|updated|title]   sort by the given field (default: created)\n          --sort.order=[asc|desc]             sort in the given order (default: desc)\n\n    pagination:\n          --pagination.page=                  page number\n          --pagination.per-page=              number of items per page\n```\n\nIf pagination is not specified, it will show all pull requests that match the filters.\n\n### config\nYou can save the config file with git engine credentials and use it instead of passing them as command line arguments.\nThe location of the config file is `~/.glmrl/config.yaml` by default, or you can specify it with `--config` flag.\n\nexample:\n```yaml\ngitlab:\n  token: \u003cgitlab-token\u003e\n  base_url: https://gitlab.com\n```\n\n## example\n```\nI can review only the MRs that:\n- are open,\n- have a label \"to-review\",\n- are not approved by me,\n- doesn't have enough approvals,\n  - but I still want to see MRs with enough approvals where I've been requested as a reviewer and didn't approve it,\n- doesn't have my unresolved threads\n  - but I still want to see MRs with my unresolved threads where my action is not the last (i.e. somebody replied in my thread and didn't resolve it).\n\nWhen I press enter, I want to open the MR in my default browser.\n```\n\ncommand example:\n```bash\nglmrl list --action=open --state=open --labels.include='to-review' --approved-by-me=false --not-enough-approvals=true --without-my-unresolved-threads\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsemior001%2Fglmrl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsemior001%2Fglmrl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsemior001%2Fglmrl/lists"}