{"id":22435584,"url":"https://github.com/allanger/dumb-downloader","last_synced_at":"2026-05-04T03:35:15.457Z","repository":{"id":125775665,"uuid":"590197758","full_name":"allanger/dumb-downloader","owner":"allanger","description":"Maybe not so dumb after all","archived":false,"fork":false,"pushed_at":"2024-02-27T14:21:21.000Z","size":113,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-27T08:26:41.552Z","etag":null,"topics":["docker","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/allanger.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}},"created_at":"2023-01-17T21:31:06.000Z","updated_at":"2023-02-12T19:36:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"0c70d870-3810-4900-923d-fadb6e478795","html_url":"https://github.com/allanger/dumb-downloader","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/allanger/dumb-downloader","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/allanger%2Fdumb-downloader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/allanger%2Fdumb-downloader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/allanger%2Fdumb-downloader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/allanger%2Fdumb-downloader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/allanger","download_url":"https://codeload.github.com/allanger/dumb-downloader/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/allanger%2Fdumb-downloader/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32593944,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T22:12:39.696Z","status":"online","status_checked_at":"2026-05-04T02:00:06.625Z","response_time":58,"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":["docker","rust"],"created_at":"2024-12-05T23:14:40.573Z","updated_at":"2026-05-04T03:35:15.443Z","avatar_url":"https://github.com/allanger.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dumb Downloader (dudo)\n\n# What's it about?\nIt's just a tool to make downloading binaries for different platforms easier. \n\n## For example\nIf you want to build a docker image, but you want to make it available on different platforms. But your tool needs other tools as dependencies, e.g. `helm`.\nTo install helm on Alpine you need to use curl, wget, or something. You need to choose a version, an operating system, and an architecture. For me, it was obvious that you must be able to use `uname -m`...\n```BASH\nuname -m \naarch64\n\nuname -m\nx86_64\n\nuname -m\narm64\n```\n\nWhile release naming is also not very consecutive\n\n- release_example.amd-macos.zip\n- another-release-for-amd64-macos.zip\n- linux-aarch64-release.zip\n\n# How to install?\n## Install \n### Download \n\nGet executable from github releases\n\nPrebuilt binaries exist for **Linux x86_64** and **MacOS arm64** and **x86_64**\n\nDon't forget to add the binary to $PATH\n```\n$ curl https://raw.githubusercontent.com/allanger/dumb-downloader/main/scripts/download_dudo.sh | bash\n$ dudo --help\n```\n### Docker\n\nYou can use the `latest` or a `tagged` docker image\n```\n$ docker pull ghcr.io/allanger/dumb-downloader:latest\n$ docker run ghcr.io/allanger/dumb-downloader:latest dudo -h\n```\n\n### Build from source\n1. Build binary\n```\n$ cargo build --release\n``` \n2. Run `dudo --help`\n\n# How to use?\n## Custom configurations\n\nIn case the default config is not doing the trick for you, you can pass a custom configuration, for example, you need to download a package \"package-linux-amd64_x86_64_intel_v1.0.3\" and this kind of name for an architecture is not supported by the `dudo`, then you can create a config file like \n```yaml\n# config-example.yaml\n---\n---\nos:\n  macos:\n    - macos\n    - darwin\n    - mac\n    - apple\n  linux:\n    - linux\n  windows:\n    - windows\n  freebsd:\n    - freebsd\narch:\n  x86_64:\n    - x86_64\n    - amd64\n    - amd\n    - intel\n    - amd64_x86_64_intel\n  aarch64:\n    - aarch64\n    - arm64\n    - m1\n\n```\n\nAnd execute `dudo -l \"package-{{ os }}-{{ arch }}-{{ version}}\" -p v1.0.3 -d /tmp/package` and dudo will download the package to the `/tmp/package` then, \n\n## Dockerfile\n\nThe initial intetion for developing this was to use it for writing multi-architecture Dockerfiles for my another projects. I needed to download `helm` and `helmfile` for `arm64` and `amd64`. And I couldn't come up with good simple script for settings environment variables that would point to the the correct url, because `uname -m` wasn't giving me results that I would need. I was thinkg about writing a script to create some kind of map for different architectures, but then I thought that is was already not the first time I was having that problem and I decided to come up with a tool. And here is example, how one could use it in a `Dockerfile`\n\n```DOCKERFILE\nARG BASE_VERSION=latest\nFROM ghcr.io/allanger/dumb-downloader as builder\nRUN apt-get update -y \u0026\u0026 apt-get install tar -y\nARG HELM_VERSION=v3.10.3\nARG HELMFILE_VERSION=0.151.0\nENV RUST_LOG=info\nRUN dudo -l \"https://github.com/helmfile/helmfile/releases/download/v{{ version }}/helmfile_{{ version }}_{{ os }}_{{ arch }}.tar.gz\" -i /tmp/helmfile.tar.gz -p $HELMFILE_VERSION\nRUN dudo -l \"https://get.helm.sh/helm-{{ version }}-{{ os }}-{{ arch }}.tar.gz\" -i /tmp/helm.tar.gz -p $HELM_VERSION\nRUN tar -xf /tmp/helm.tar.gz  -C /tmp \u0026\u0026 rm -f /tmp/helm.tar.gz \nRUN tar -xf /tmp/helmfile.tar.gz  -C /tmp \u0026\u0026 rm -f /tmp/helmfile.tar.gz \nRUN mkdir /out \u0026\u0026 for bin in `find /tmp | grep helm`; do cp $bin /out/; done\nRUN chmod +x /out/helm\nRUN chmod +x /out/helmfile\n\nFROM ghcr.io/allanger/check-da-helm-base:${BASE_VERSION} \nCOPY --from=builder /out/ /usr/bin\nRUN apk update --no-cache \u0026\u0026 apk add --no-cache jq bash\nENTRYPOINT [\"cdh\"]\n```\n\nIn the builder it is downloading dependencies that are needed in my final docker image.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fallanger%2Fdumb-downloader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fallanger%2Fdumb-downloader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fallanger%2Fdumb-downloader/lists"}