{"id":36688247,"url":"https://github.com/mdevilliers/org-scrounger","last_synced_at":"2026-01-12T11:16:49.375Z","repository":{"id":36984878,"uuid":"467943152","full_name":"mdevilliers/org-scrounger","owner":"mdevilliers","description":null,"archived":false,"fork":false,"pushed_at":"2024-09-09T01:36:30.000Z","size":355,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-09-09T02:47:35.576Z","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/mdevilliers.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":"2022-03-09T13:41:38.000Z","updated_at":"2024-09-09T01:36:32.000Z","dependencies_parsed_at":"2024-01-09T03:21:13.976Z","dependency_job_id":"4d344515-ad93-4bc8-b5f0-85ef0f3af571","html_url":"https://github.com/mdevilliers/org-scrounger","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/mdevilliers/org-scrounger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdevilliers%2Forg-scrounger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdevilliers%2Forg-scrounger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdevilliers%2Forg-scrounger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdevilliers%2Forg-scrounger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdevilliers","download_url":"https://codeload.github.com/mdevilliers/org-scrounger/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdevilliers%2Forg-scrounger/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28338970,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T10:58:46.209Z","status":"ssl_error","status_checked_at":"2026-01-12T10:58:42.742Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"2026-01-12T11:16:48.670Z","updated_at":"2026-01-12T11:16:49.368Z","avatar_url":"https://github.com/mdevilliers.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n### org-scrounger\n\nA highly opinionated CLI to aid me in my day-to-day tasks engineer managing a large github, k8s estate.\n\n[![ci](https://github.com/mdevilliers/org-scrounger/actions/workflows/ci.yaml/badge.svg)](https://github.com/mdevilliers/org-scrounger/actions/workflows/ci.yaml)\n[![ReportCard](https://goreportcard.com/badge/github.com/mdevilliers/org-scrounger)](https://goreportcard.com/report/github.com/mdevilliers/org-scrounger)\n\n## Examples\n\n### Run reports outputting either to JSON or format using a template file.\n\n```\nexport GITHUB_TOKEN=xxxxxxxxxxx\n\n./scrng report --topic foo --owner some-owner  # outputs json\n\n./scrng report --output template --topic foo --owner some-owner \u003e team-foo.html # outputs html for all repos with tag\n\n./scrng report --output template --repo some-repo --owner some-owner # outputs html for one repo\n```\n\n### List all of the docker images used in a kustomize configuration.\n\n```\nexport GITHUB_TOKEN=xxxxxxxxxxx\n\n./scrng images kustomize --root {some-path} --root {some-other-path } # list all images\n```\n\n### List all services in a Jaegar trace \n\n```\n./scrng images jaegar --trace-id=231d6db2c8be1d28a7c86d67716cf39e\n```\n\n### List all of the docker images used in a kustomize configuration and map to repositories\n\n```\nexport GITHUB_TOKEN=xxxxxxxxxxx\n\n./scrng images kustomize --root {some-path} --root {some-other-path } --mapping {some-file-path}\n```\n\nAn example mapping file \n\n```\n# this is a comment\n\n# default github owner\nowner = \"org-1\"\n\n# know container repositories\ncontainer_repositories = [\n  \"foo-container-repo\",\n  \"bar-container-repo\"\n]\n\n# a container that doesn't map to a repo \n_ \u003e \"please/ignore\"\n\n# static is a repo we can't discover from the image name \nstatic \u003e _\n\n# the image 'bar' maps to repo 'foo' at the owner above\nfoo \u003e \"bar\"\n\n# you can namespace the image using the prefix \"image:\"\n# the image 'bar2' maps to repo 'foo2' at the owner above\nfoo2 \u003e \"image:bar2\"\n\n# the image 'other-org' maps to another to github repo org-2/foo\norg-2/foo \u003e \"other-org\"\n# the image 'no', 'yes' and 'maybe' maps to repo 'needle' at the owner above\nneedle \u003e [\"no\", \"yes\", \"maybe\"]\n\n```\n\nExample output\n\n```\n[\n {\n    \"name\": \"bar\",\n    \"docker_container_repository\" : \"foo-container-repo\",\n    \"version\": \"0.3.2\",\n    \"count\": 1,\n    \"repo\": {\n      \"name\": \"foo\",\n      \"url\": \"https://github.com/org-1/foo\",\n      \"is_archived\": false,\n      \"topics\": [\n        \"one\",\n        \"two\"\n      ],\n      \"languages\": {\n        \"Dockerfile\": 1572,\n        \"Go\": 92022,\n        \"Makefile\": 1609,\n        \"Shell\": 1332\n      }\n    }\n  }\n]\n\n```\n\n### List all of the services touched by a Jaegar trace configuration and map to repositories\n\n```\nexport GITHUB_TOKEN=xxxxxxxxxxx\n\n./scrng images jaegar --trace-id=231d6db2c8be1d28a7c86d67716cf39e --mapping mappings.conf\n\n```\n\n### List all of the repos with some basic information for a team.\n\n```\nexport GITHUB_TOKEN=xxxxxxxxxxx\n\n./scrng list --topic foo --owner some-owner | jq\n```\n\n### List all repos without specific topics (in the example one, two or three)\n\n```\nexport GITHUB_TOKEN=xxxxxxxxxxx\n\n./scrng list -owner some-owner --omit-archived | jq -c '.[] |. as $parent | select(.repo.topics) | .repo.topics |  select( all( test(\"one|two|three\") == false )) | $parent' | jq -r  '.repo.name' | sort | uniq\n```\n\n### List all non-archived repos\n\n```\nexport GITHUB_TOKEN=xxxxxxxxxxx\n\n./scrng list -owner some-owner --omit-archived\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmdevilliers%2Forg-scrounger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmdevilliers%2Forg-scrounger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmdevilliers%2Forg-scrounger/lists"}