bget

package module
v1.0.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 28, 2022 License: MIT Imports: 14 Imported by: 0

README

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

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DownloadFileToTemp

func DownloadFileToTemp(url string, headers *map[string]string) (string, error)

DownloadFileToTemp download url to a temporary file and returns the path to the temporary file

func Extract

func Extract(file string) (string, error)

Extract extracts the file to a temporary directory

func GetBinFromDir

func GetBinFromDir(dir string) (string, error)

func HumanSize

func HumanSize(size int64) string

func InstallBin

func InstallBin(src string, binName string, binDir string) error

func IsCompressedFile

func IsCompressedFile(file string) bool

Check if file ends with any of the extensions

func IsExecutable

func IsExecutable(file string) bool

func IsQualifiedAsset

func IsQualifiedAsset(name string) bool

func PathExists

func PathExists(path string) bool

func Request

func Request(url string, headers *map[string]string) ([]byte, error)

func ShowSpinnerWhile

func ShowSpinnerWhile(message string) func()

Types

type File

type File struct {
	Path string
	Size int64
}

func ReadDir

func ReadDir(dir string) ([]File, error)

ReadDir read files recursively in a dir

type GitHub

type GitHub struct {
	Owner   string
	Repo    string
	TagName string
	Token   string
}

func NewGitHub

func NewGitHub(input string, token string) *GitHub

func (*GitHub) DownloadAndInstallAsset

func (gh *GitHub) DownloadAndInstallAsset(asset *GithubReleaseAsset, installOpts *InstallOpts) error

func (*GitHub) FetchRelease

func (gh *GitHub) FetchRelease() (GitHubRelease, error)

func (*GitHub) GetHeaders

func (gh *GitHub) GetHeaders() *map[string]string

func (*GitHub) New

func (gh *GitHub) New(input string, token string)

type GitHubRelease

type GitHubRelease struct {
	TagName string               `json:"tag_name"`
	Assets  []GithubReleaseAsset `json:"assets"`
}

type GithubReleaseAsset

type GithubReleaseAsset struct {
	DwnloadURL string `json:"url"`
	Size       int64  `json:"size"`
	Name       string `json:"name"`
}

type InstallOpts

type InstallOpts struct {
	BinDir  string
	BinName string
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL