{"id":13809090,"url":"https://github.com/yaonyan/ghdl","last_synced_at":"2026-04-29T09:13:57.979Z","repository":{"id":45719520,"uuid":"456796053","full_name":"beetcb/ghdl","owner":"beetcb","description":"A much more convenient way to download GitHub release binaries on the command line, works on Win \u0026 Unix-like systems","archived":false,"fork":false,"pushed_at":"2023-08-05T03:49:47.000Z","size":3593,"stargazers_count":52,"open_issues_count":3,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-08-04T01:10:13.558Z","etag":null,"topics":["binary","executable","github-release"],"latest_commit_sha":null,"homepage":"","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/beetcb.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":"2022-02-08T05:30:39.000Z","updated_at":"2024-06-04T02:23:16.000Z","dependencies_parsed_at":"2024-01-07T09:45:26.002Z","dependency_job_id":null,"html_url":"https://github.com/beetcb/ghdl","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beetcb%2Fghdl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beetcb%2Fghdl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beetcb%2Fghdl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beetcb%2Fghdl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/beetcb","download_url":"https://codeload.github.com/beetcb/ghdl/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225277960,"owners_count":17448793,"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":["binary","executable","github-release"],"created_at":"2024-08-04T01:02:01.398Z","updated_at":"2025-05-14T05:33:07.459Z","avatar_url":"https://github.com/beetcb.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# ghdl\n\n\u003e Memorize `ghdl` as `github download`\n\n`ghdl` is a fast and simple program (and also a golang module) for downloading and installing executable binary from github releases.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg alt=\"animated demo\" src=\"./demo.svg\" width=\"600px\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eThe demo above extracts \u003ccode\u003efd\u003c/code\u003e execuable to current working directory and give execute permission to it.\u003c/strong\u003e\n\u003c/p\u003e\n\n# Features\n\n- Auto decompressing and unarchiving the downloaded asset (without any system dependencies like `tar` or `unzip`)\n\n    ```ts\n    Currently supporting unarchiving `tar` and decompressing `zip` `gzip`.\n    Package format `deb` `rpm` `apk` will be downloaded directly\n    ```\n    \n    `ghdl` binary is statically linked, works well on non-FHS *nix systems like [NixOS](https://nixos.org/)). In case this is relevant to you, on that kind of system, only binaries like `ghdl` can be run directly.\n    \n- Setups for executable: `ghdl` moves executable to specified location and add execute permissions to the file.\n- Auto filtering: multiple assets in one release will be filtered by OS or ARCH. This feature can be disabled using `-F` flag.\n- Interactive TUI: when auto filtering is failed or returned multiple options, you can select assets in a interactive way, with vim key bindings support.\n- Release tags: `ghdl` downloads latest release by default, other or old tagged releases can be downloaded by specifying release tag: `username/repo#tagname`\n- Inspect download status with real-time progress bar.\n\n# Installation\n\n\u003e If you're going to use `ghdl` as a go module, ignore the following installation progress.\n\n- Using Go tools: \n\n    go will download the latest version of ghdl to $GOPATH/bin, please make sure $GOPATH is in the PATH: \n\n    ```sh\n    go install github.com/beetcb/ghdl/ghdl@latest\n    ```\n    \u003e Note: Just to be safe, you'd better specify CGO_ENABLED=0 when running `go install` on non-FHS *nix systems like [NixOS](https://nixos.org/))\n\n- Download and run executable from release.\n- Run the following shell script(*nix system only):\n\n    ```sh\n    curl -fsSL \"https://bina.egoist.sh/beetcb/ghdl?dir=/usr/local/bin\" | sh\n    # feel free to change the `dir` url param to specify the installation directory.\n    ```\n\n# Usage\n\n### CLI\n\nRun `ghdl --help`\n\n```sh\n❯ ghdl --help\n\nghdl download binary from github release\nghdl handles archived or compressed file as well\n\nUsage:\n  ghdl \u003cuser/repo[#tagname]\u003e [flags]\n\nFlags:\n  -f, --asset-filter string   specify regular expression for the asset name; used in conjunction with the platform and architecture filters.\n  -F, --filter-off            turn off auto-filtering feature\n  -h, --help                  help for ghdl\n  -n, --name string           specify binary file name to enhance filtering and extracting accuracy\n  -p, --path path             save binary to path and add execute permission to it (default \".\")\n```\n\nIt's tedious to specify `-p` manually, we can alias `ghdl -p \"$DirInPath\"` to a shorthand command, then use it as a executable installer.\n\n### Go Module\n\n1. Require `ghdl` to go.mod\n\n\t```sh\n\tgo get github.com/beetcb/ghdl\n\t```\n\n2. Use `ghdl`'s out-of-box utilities: see [TestDownloadFdBinary func](./ghdl_test.go) as an example\n\n# Credit\n\nInspired by [egoist/bina](https://github.com/egoist/bina), TUI powered by [charmbracelet/bubbletea](https://github.com/charmbracelet/bubbletea)\n\n# License\n\nLicensed under [MIT](./LICENSE)\n\nAuthor: @beetcb | Email: i@beetcb.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyaonyan%2Fghdl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyaonyan%2Fghdl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyaonyan%2Fghdl/lists"}