Download and install binaries from GitHub Releases, interactively.

Related tags

Command Line bget
Overview

bget

Download and install binary files from GitHub Releases.

Preview

CleanShot 2021-11-29 at 00 54 42

Install

For Mac/Linux users, you can use Homebrew to install it:

brew install egoist/tap/bget

For others:

# Feel free to change the -b flag to use another directory
curl -fsSL https://install.egoist.sh/bget.sh | bash \
    -s -- -b /usr/local/bin

Or just grab the latest release from GitHub Releases.

Usage

bget owner/repo [-b bin_name] [-d install_dir]

# Download from a specific release
bget owner/repo#v1.2.3
  • bin_name defaults to the name of the GitHub repo.
  • install_dir defaults to /usr/local/bin.

It will look for executable files (as well as compressed files) in the release assets, if it's a compressed file we simply use the largest file inside it.

Private Repo

bget owner/repo --token GITHUB_TOKEN

# Or using environment variable
env GITHUB_TOKEN=xxx bget owner/repo

Upgrade bget

bget egoist/bget

Example

bget egoist/doko

Development

Build for release:

go build -o bget ./cmd

Development:

go run ./cmd

License

MIT

Issues
  • No releases in this repo?

    No releases in this repo?

    I'm attempting to use bget with lando/lando (it's the lando-x64-vX.X.X.deb I'm interested in) The latest release is v.3.4.2 although there are later pre-releases.

    image

    Unfortunately when running bget lando/lando I just get 'no releases in this repo'

    opened by hailwood 5
  • rename: invalid cross-device link

    rename: invalid cross-device link

    Thanks for this awesome project! 🤗 I really appreciate your free time spending on writing helpful tooling 👏🏻

    Unfortunately, I had an error when I tried bget to install ripgrep for the first time. Here are the details:

    $ lsb_release -a
    No LSB modules are available.
    Distributor ID:	Ubuntu
    Description:	Ubuntu 20.04.4 LTS
    Release:	20.04
    Codename:	focal
    
    $ bget --version
    v1.0.8/linux-amd64
    
    $ bget BurntSushi/ripgrep -b rg -d $HOME/.local/bin
    ? Select an asset ripgrep-13.0.0-x86_64-unknown-linux-musl.tar.gz (2.01 MB)
    ? Bin already exists. Overwrite? Yes
    rename /tmp/4243669700/ripgrep-13.0.0-x86_64-unknown-linux-musl/rg /home/chshersh/.local/bin/rg: invalid cross-device link
    

    Apparently, this happens because bget uses os.Rename and Go implements os.Rename using the rename syscall which doesn't support renaming of files between different drives.

    In my case, /tmp and /home directories are indeed on different drives on my Ubuntu machine:

    $ df -h /home
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/nvme0n1p4  201G  172G   20G  91% /home
    
    $ df -h /tmp
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/nvme0n1p3   28G   17G  9.6G  64% /
    

    I'm not sure what would be the best solution to solve this problem by bget. It can implement the solution in the mv command style by copying the file instead of renaming if files are on different drives.

    • https://apple.stackexchange.com/questions/355169/how-does-the-mv-command-work-with-external-drives

    In my case the workaround is to copy-paste paths from the bget command and replace rename with mv like this:

    mv /tmp/4243669700/ripgrep-13.0.0-x86_64-unknown-linux-musl/rg /home/chshersh/.local/bin/rg
    chmod +x /home/chshersh/.local/bin/rg
    

    Which is less convenient but still something 🙂

    opened by chshersh 0
  • support self upgrade command

    support self upgrade command

    although we can use bget egoist/bget for self upgrade, i think it's better if we had internal command like bget -u for self upgrade. It can reduce memory costs.

    opened by lifesign 0
  • Configure Renovate

    Configure Renovate

    Mend Renovate

    Welcome to Renovate! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.

    🚦 To activate Renovate, merge this Pull Request. To disable Renovate, simply close this Pull Request unmerged.


    Detected Package Files

    • .github/workflows/release.yml (github-actions)
    • go.mod (gomod)

    Configuration Summary

    Based on the default config's presets, Renovate will:

    • Start dependency updates only once this onboarding PR is merged
    • Enable Renovate Dependency Dashboard creation
    • If semantic commits detected, use semantic commit type fix for dependencies and chore for all others
    • Ignore node_modules, bower_components, vendor and various test/tests directories
    • Autodetect whether to pin dependencies or maintain ranges
    • Rate limit PR creation to a maximum of two per hour
    • Limit to maximum 10 open PRs at any time
    • Group known monorepo packages together
    • Use curated list of recommended non-monorepo package groupings
    • A collection of workarounds for known problems with packages

    🔡 Would you like to change the way Renovate is upgrading your dependencies? Simply edit the renovate.json in this branch with your custom config and the list of Pull Requests in the "What to Expect" section below will be updated the next time Renovate runs.


    What to Expect

    With your current configuration, Renovate will create 4 Pull Requests:

    fix(deps): update module github.com/alecaivazis/survey/v2 to v2.3.5
    chore(deps): update actions/checkout action to v3
    • Schedule: ["at any time"]
    • Branch name: renovate/actions-checkout-3.x
    • Merge into: main
    • Upgrade actions/checkout to v3
    chore(deps): update actions/setup-go action to v3
    • Schedule: ["at any time"]
    • Branch name: renovate/actions-setup-go-3.x
    • Merge into: main
    • Upgrade actions/setup-go to v3
    chore(deps): update goreleaser/goreleaser-action action to v3
    • Schedule: ["at any time"]
    • Branch name: renovate/goreleaser-goreleaser-action-3.x
    • Merge into: main
    • Upgrade goreleaser/goreleaser-action to v3

    🚸 Branch creation will be limited to maximum 2 per hour, so it doesn't swamp any CI resources or spam the project. See docs for prhourlylimit for details.


    ❓ Got questions? Check out Renovate's Docs, particularly the Getting Started section. If you need any further assistance then you can also request help here.


    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • Cann't get full list of releases

    Cann't get full list of releases

    Hello, bget v1.0.7 installed via brew, runing on macOS. Please try bget DNSCrypt/dnscrypt-proxy


    Can we enhance the filter function? Like I just need typemacos, then I get it. That would be a better experience.

    opened by initdc 0
Releases(v1.0.8)
Owner
EGOIST
Self-employed.
EGOIST
A very simple library for interactively selecting an option on a terminal

go-choice A very simple library for interactively selecting an option on a terminal Usage package main import ( "fmt" "github.com/TwiN/go-ch

null 3 Dec 30, 2021
CraftTalk Command Line Tool helps with managing CraftTalk releases on baremetal instances

ctcli - CraftTalk Command Line Tool Commands help Shows help version Shows version init Initializes specified root directory as a ctcli dir. ctcli --r

CraftTalk 11 Jan 20, 2022
Mass download all github repositories(public & private) of an organization, ideally in a few seconds.

Git Mass Mass download all github repositories(public & private) of an organization, ideally in a few seconds. Writing this as a simple bash script wo

Nithin Jois 0 Dec 27, 2021
CLI for SendGrid, which helps in managing SSO users, can install and update users from yaml config

Sendgrid API This script is needed to add new users to SendGrid as SSO teammates. Previously, all users were manually added and manually migrating the

ANNA 4 Jul 20, 2022
It is an easy and fast tool to install your packages with just one command.

Trouxa It is an easy and fast tool to install your packages with just one command. What means "Trouxa"? In portuguese, Trouxa means something like a "

Baianoware 7 Feb 13, 2022
Declarative CLI Version manager. Support Lazy Install and Sharable configuration mechanism named Registry. Switch versions seamlessly

aqua Declarative CLI Version manager. Support Lazy Install and Sharable configuration mechanism named Registry. Switch versions seamlessly. Index Slid

Shunsuke Suzuki 171 Jul 31, 2022
Command not found? Install it right there!

Tii On most GNU/Linux systems, when a command is not found, a message showing what can be run to install the command is printed.

Ishan Goel 31 Jul 15, 2022
A command tool to help user install oh-my-zsh plugins fast in a comfortable way

zshx A command tool to help user install oh-my-zsh plugins fast in a comfortable way. in other way, it is a zsh plugin package manager. How to use the

xylon 6 Feb 11, 2022
Instal - Install any binary app from a script URL

??️ Install any binary app from a script URL. this cli app is an alternative to

Abdfn 13 Jun 30, 2022
gon is a simple, no-frills tool for signing and notarizing your CLI binaries for macOS

Sign, notarize, and package macOS CLI tools and applications written in any language. Available as both a CLI and a Go library.

Mitchell Hashimoto 1.2k Aug 1, 2022
A CLI tool that generates OpenTelemetry Collector binaries based on a manifest.

OpenTelemetry Collector builder This program generates a custom OpenTelemetry Collector binary based on a given configuration. TL;DR $ go get github.c

OpenTelemetry - CNCF 51 Aug 3, 2022
Got: Simple golang package and CLI tool to download large files faster 🏃 than cURL and Wget!

Got. Simple and fast concurrent downloader. Installation ❘ CLI Usage ❘ Module Usage ❘ License Comparison Comparison in cloud server: [[email protected]

Mohamed El Bahja 588 Aug 9, 2022
tmux-wormhole - download files and directories with tmux!

tmux-wormhole Use tmux and magic wormhole to get things from your remote computer to your tmux. If tmux has DISPLAY set, open the file locally! Demo U

Graham Clark 44 Jul 26, 2022
CLI tool to upload object to s3-compatible storage backend and set download policy for it.

typora-s3 CLI tool to upload object to s3-compatible storage backend and set download policy for it. Build $ git clone https://github.com/fengxsong/ty

fengxsong 0 Dec 29, 2021
Little golang app that allows you to download a youtube video as mp3, and optionally embed ID3 tags -Cover Art, Artist ...-

yt2mp3 Little golang app that allows you to download a youtube video as mp3, and optionally embed ID3 tags -Cover Art, Artist ...- Instructions At the

null 0 Dec 25, 2021
Command-line program to download videos from YouTube.com and other video sites

youtube-dl - download videos from youtube.com or other video platforms INSTALLATION DESCRIPTION OPTIONS CONFIGURATION OUTPUT TEMPLATE FORMAT SELECTION

youtube-dl 112.1k Aug 7, 2022
Go-file-downloader-ftctl - A file downloader cli built using golang. Makes use of cobra for building the cli and go concurrent feature to download files.

ftctl This is a file downloader cli written in Golang which uses the concurrent feature of go to download files. The cli is built using cobra. How to

Dipto Chakrabarty 2 Jan 2, 2022
📷 Command-line utility to download all photos from Instagram

Instagram Downloader This is a simple command-line tool, written in Go, to download all images from an Instagram account. Getting Started Install inst

Gregory Schier 21 May 31, 2022