{"id":18446461,"url":"https://github.com/ovh/distronaut","last_synced_at":"2025-04-08T00:31:50.867Z","repository":{"id":65146183,"uuid":"561721928","full_name":"ovh/distronaut","owner":"ovh","description":"Find distribution installers all across the web !","archived":false,"fork":false,"pushed_at":"2024-09-10T15:25:56.000Z","size":178,"stargazers_count":13,"open_issues_count":1,"forks_count":1,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-03-23T03:11:10.499Z","etag":null,"topics":["distributions","iso","linux","os","scraper"],"latest_commit_sha":null,"homepage":"https://distronaut.ovh","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ovh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-04T10:43:29.000Z","updated_at":"2024-09-10T15:32:58.000Z","dependencies_parsed_at":"2024-06-20T04:17:56.201Z","dependency_job_id":"1028be0f-e69f-434c-b033-2009559be0aa","html_url":"https://github.com/ovh/distronaut","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ovh%2Fdistronaut","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ovh%2Fdistronaut/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ovh%2Fdistronaut/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ovh%2Fdistronaut/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ovh","download_url":"https://codeload.github.com/ovh/distronaut/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247755388,"owners_count":20990616,"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":["distributions","iso","linux","os","scraper"],"created_at":"2024-11-06T07:09:27.280Z","updated_at":"2025-04-08T00:31:50.474Z","avatar_url":"https://github.com/ovh.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 Distronaut\n\n**Distronaut** is a tool that travel through the internet to find distribution ISO links and metadata, making it easier for you to monitor new releases, burn install medias or build your own ISO bank archive.\n\n## ⌨️ CLI\n\n### 🔨 Installation\n\nUsing a pre-built binary:\n```bash\ngo install github.com/ovh/distronaut@latest\n```\n\nBuilding from source\n```bash\nmake\n```\n\n### 🪛 Usage\n\nUse `fetch` command to retrieve a JSON from configured sources:\n```bash\ndistronaut fetch -c config/sources.yml -f 'debian'\n```\n\nOutput is similar to below:\n```json\n[\n  {\n    \"source\": \"Debian\",\n    \"family\": \"Linux\",\n    \"distribution\": \"Debian (formerly Debian GNU/Linux)\",\n    \"website\": \"http://www.debian.org/\",\n    \"documentation\": \"http://www.debian.org/doc/\",\n    \"status\": \"Active\",\n    \"logo\": \"https://distrowatch.com/images/yvzhuwbpy/debian.png\",\n    \"logo64\": \"data:image/png;base64,...\",\n    \"versions\": [\n      {\n        \"url\": \"https://cdimage.debian.org/cdimage/archive/12.6.0/amd64/iso-cd/debian-12.6.0-amd64-netinst.iso\",\n        \"hash\": \"sha256:ade3a4acc465f59ca2496344aab72455945f3277a52afc5a2cae88cdc370fa12\",\n        \"hashfile\": \"https://cdimage.debian.org/cdimage/archive/12.6.0/amd64/iso-cd/SHA256SUMS\",\n        \"version\": \"12.6.0\",\n        \"arch\": \"amd64\",\n        \"meta\": {\n          \"release\": \"2023-06-10\"\n        }\n      }\n    ]\n  }\n]\n```\n\nAdditional metadata are scrapped from [distrowatch.com](https://distrowatch.com).\n\n## 👨‍💻 Programmatic usage\n\nThis package can also be imported within another golang codebase:\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"github.com/ovh/distronaut/pkg/distro\"\n)\n\nfunc main() {\n\tsrc, _ := distro.FetchSources(\"config/sources.yml\", \"debian\")\n\tj, _ := json.MarshalIndent(src, \"\", \"  \")\n\tfmt.Println(string(j))\n}\n```\n\n## 🌕 Configuring new sources\n\nOpen your configuration file and add a new entry, containing:\n- `name` is a friendly name for your new source (can also be used for filtering)\n- `url` is the source url pattern\n  - each *route parameter* is indicated by a colon (`:`)\n- `patterns` is a map containing:\n  - `:*` are regex patterns that are matched by defined *route parameter*\n    - each *route parameter* can be back-referenced using `\\k\u003c:name\u003e` syntax\n  - `.hash.*` contains all hash related settings \n    - `.hash.file` is a regex pattern matching the file containing hashes \n    - `.hash.pattern` is a regex pattern capturing the hash from a given iso (that can be back-referenced with `\\k\u003ciso\u003e`)\n    - `.hash.algo` is the name of the hash algorithm\n  - `.meta.*` contains all metadata related settings\n    - `.meta.source` must be set to `distrowatch` (only metadata source supported for now)\n    - `.meta.id` is the distro handle on distrowatch\n    - `.meta.version` is a regex pattern matching the version as it is referenced on distrowatch\n\nExample source:\n```yml\n- name: Debian\n  url: https://cdimage.debian.org/debian-cd/:version/:arch/iso-cd/:iso\n  patterns:\n    :version: ^(\\d+\\.\\d+(?:\\.\\d+)?)\\/$\n    :arch: ^(amd64|arm64)\\/$\n    :iso: ^debian-\\k\u003cversion\u003e-\\k\u003carch\u003e-netinst\\.iso$\n    .hash.file: SHA256SUMS\n    .hash.algo: sha256\n    .hash.pattern: (?m)^([0-9a-f]{64})\\s+\\k\u003ciso\u003e\n    .meta.source: distrowatch\n    .meta.id: debian\n    .meta.version: (\\d+)\n```\n\n# 💪 Contributing\n\nPlease read our contribution guidelines first ([CONTRIBUTING.md](https://github.com/ovh/distronaut/blob/master/CONTRIBUTING.md)).\n\n## 🧪 Testing\n\nRun tests using:\n```bash\nmake test\n```\n\nA mocked server will temporary be spawned on port 3000 to avoid performing real network requests.\n\n# 📜 License\n \n```\nCopyright 2021 OVH SAS\n \nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n \n    http://www.apache.org/licenses/LICENSE-2.0\n \nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fovh%2Fdistronaut","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fovh%2Fdistronaut","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fovh%2Fdistronaut/lists"}