{"id":37197534,"url":"https://github.com/kamilsk/godownloader","last_synced_at":"2026-01-14T22:57:40.664Z","repository":{"id":43199376,"uuid":"415391941","full_name":"kamilsk/godownloader","owner":"kamilsk","description":"🔧 The version with Homebrew.","archived":false,"fork":true,"pushed_at":"2024-07-27T13:29:35.000Z","size":1058,"stargazers_count":12,"open_issues_count":1,"forks_count":1,"subscribers_count":5,"default_branch":"extended","last_synced_at":"2024-07-27T14:43:29.980Z","etag":null,"topics":["cli","go","golang","installer","tool"],"latest_commit_sha":null,"homepage":"https://godownloader.octolab.org/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"goreleaser/godownloader","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kamilsk.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","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}},"created_at":"2021-10-09T18:34:09.000Z","updated_at":"2024-07-27T13:29:38.000Z","dependencies_parsed_at":"2023-09-28T20:24:47.539Z","dependency_job_id":null,"html_url":"https://github.com/kamilsk/godownloader","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/kamilsk/godownloader","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamilsk%2Fgodownloader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamilsk%2Fgodownloader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamilsk%2Fgodownloader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamilsk%2Fgodownloader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kamilsk","download_url":"https://codeload.github.com/kamilsk/godownloader/tar.gz/refs/heads/extended","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamilsk%2Fgodownloader/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28437582,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T22:37:52.437Z","status":"ssl_error","status_checked_at":"2026-01-14T22:37:31.496Z","response_time":107,"last_error":"SSL_read: 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":["cli","go","golang","installer","tool"],"created_at":"2026-01-14T22:57:39.913Z","updated_at":"2026-01-14T22:57:40.616Z","avatar_url":"https://github.com/kamilsk.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"GoReleaser Logo\" src=\"https://avatars2.githubusercontent.com/u/24697112?v=3\u0026s=200\" height=\"140\" /\u003e\n  \u003ch3 align=\"center\"\u003eGoDownloader\u003c/h3\u003e\n  \u003cp align=\"center\"\u003eDownload Go binaries as fast and easily as possible.\u003c/p\u003e\n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"/LICENSE.md\"\u003e\u003cimg alt=\"Software License\" src=\"https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://travis-ci.org/goreleaser/godownloader\"\u003e\u003cimg alt=\"Travis\" src=\"https://img.shields.io/travis/goreleaser/godownloader/master.svg?style=flat-square\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://goreportcard.com/report/github.com/goreleaser/godownloader\"\u003e\u003cimg alt=\"Go Report Card\" src=\"https://goreportcard.com/badge/github.com/goreleaser/godownloader?style=flat-square\"\u003e\u003c/a\u003e\n    \u003ca href=\"http://godoc.org/github.com/goreleaser/goreleaser\"\u003e\u003cimg alt=\"Go Doc\" src=\"https://img.shields.io/badge/godoc-reference-blue.svg?style=flat-square\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/goreleaser\"\u003e\u003cimg alt=\"Powered By: GoReleaser\" src=\"https://img.shields.io/badge/powered%20by-goreleaser-green.svg?style=flat-square\"\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/p\u003e\n\n---\n\nThis is the inverse of [goreleaser](https://github.com/goreleaser/goreleaser).  The goreleaser YAML file is read and creates a custom shell script that can download the right package and the right version for the existing machine.\n\nIf you use goreleaser already, this will create scripts suitable for \"curl bash\" style downloads.\n\n* Run godownloader on your `goreleaser.yaml` file\n* Add the `godownloader.sh` file to your repo\n* Tell your users to use https://raw.githubusercontent.com/YOU/YOURAPP/master/godownloader.sh to install\n\nThis is also useful in CI/CD systems such as [travis-ci.org](https://travis-ci.org).\n\n* Much faster then 'go get' (sometimes up to 100x)\n* Make sure your local environment (macOS) and the CI environment (Linux) are using the exact same versions of your go binaries.\n\n## CI/CD Example\n\nLet's say you are using [hugo](https://gohugo.io), the static website generator, with [travis-ci](https://travis-ci.org).\n\nYour old `.travis.yml` file might have \n\n```yaml\ninstall:\n  - go get github.com/gohugoio/hugo\n```\n\nThis can take up to 30 seconds! \n\nHugo doesn't have (yet) a `godownloader.sh` file.  So we will make our own:\n\n```\n# create a godownloader script\ngodownloader --repo=gohugoio/hugo \u003e ./godownloader-hugo.sh\n```\n\nand add `godownloader-hugo.sh` to your GitHub repo.  Edit your `.travis.yml` as such\n\n```yaml\ninstall:\n  - ./godownloader-hugo.sh v0.37.1\n```\n\nWithout a version number, GitHub is queried to get the latest version number.\n\n```yaml\ninstall:\n  - ./godownloader-hugo.sh\n```\n\nTypical download time is 0.3 seconds, or 100x improvement. \n\nYour new `hugo` binary is in `./bin`, so change your Makefie or scripts to use `./bin/hugo`. \n\nThe default installation directory can be changed with the `-b` flag or the `BINDIR` environment variable.\n\n## Notes on Functionality\n\n* Only GitHub Releases are supported right now.\n* Checksums are checked.\n* Binares are installed using `tar.gz` or `zip`. \n* No OS-specific installs such as homebrew, deb, rpm.  Everything is installed locally via a `tar.gz` or `zip`.  Typically OS installs are done differently anyways (e.g. brew, apt-get, yum, etc).\n\n## Experimental support\n\nSome people do not use Goreleaser (why!), so there is experimental support for the following alterative distributions.\n\n### \"naked\" releases on GitHub\n\nA naked release is just the raw binary put on GitHub releases.  Limited support can be done by\n\n```bash\n./goreleaser -source raw -repo [owner/repo] -exe [name] -nametpl [tpl]\n```\n\nWhere `exe` is the final binary name, and `tpl` is the same type of name template that Goreleaser uses.\n\nAn example repo is at [mvdan/sh](https://github.com/mvdan/sh/releases). Note how the repo `sh` is different than the binary `shfmt`.\n\n### Equinox.io\n\n[Equinox.io](https://equinox.io) is a really interesting platform.  Take a look.\n\nThere is no API, so godownloader screen scrapes to figure out the latest release.  Likewise, checksums are not verified.\n\n```bash\n./goreleaser -source equinoxio -repo [owner/repo]\n```\n\nWhile Equinox.io supports the concept of different release channels, only the `stable` channel is supported by godownloader.\n\n## Yes, it's true.\n\nIt's a go program that reads a YAML file that uses a template to make a posix shell script.\n\n## Other Resources and Inspiration\n\nOther applications have written custom shell downloaders and installers:\n\n### golang/dep\n\nThe [golang/dep](https://github.com/golang/dep) package manager has a nice downloader, [install.sh](https://github.com/golang/dep/blob/master/install.sh). Their trick to extract a version number from GitHub Releases is excellent:\n\n```sh\n$(echo \"${LATEST_RELEASE}\" | tr -s '\\n' ' ' | sed 's/.*\"tag_name\":\"//' | sed 's/\".*//' )\n```\n\nThis is probably based on [masterminds/glide](https://github.com/Masterminds/glide) and its installer at https://glide.sh/get\n\n### kubernetes/helm\n\n[kubernetes/helm](https://github.com/kubernetes/helm) is a \"tool for managing Kubernetes charts. Charts are packages of pre-configured Kubernetes resources.\"\n\nIt has a [get script](https://github.com/kubernetes/helm/blob/master/scripts/get). Of note is that it won't re-install if the desired version is already present.\n\n### chef\n\n[Chef](https://www.chef.io) has the one of the most complete installers at https://omnitruck.chef.io/install.sh. In particular it has support for\n\n* Support for solaris and aix, and some other less common platforms\n* python or perl as installers if curl or wget isn't present\n* http proxy support\n\n### Caddy\n\n[Caddy](https://caddyserver.com) is \"the HTTP/2 web server with automatic HTTPS\" and a NGINX replacement.  It has a clever installer at https://getcaddy.com. Of note is GPG signature verification.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkamilsk%2Fgodownloader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkamilsk%2Fgodownloader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkamilsk%2Fgodownloader/lists"}