Holen is a utility for fetching applications when you need them, on any system. For instance, if you'd like to use gof3r or hub or terraform, you would need to go to the right download page and select the right binary for your system, download it, and put it on your path (don't forget the chmod +x
!). Not so hard for one, but what if you need several?
Holen can help. Running any binary that Holen knows about is as easy as:
holen run [app name] -- [app options]
And, if you'd like it to stick around for a bit, you can run this, which will put a little alias in your $HOME/bin
directory:
holen link [app name]
Then you can just run it like it's installed. When activated, Holen will download the right Docker image (or static binary) and then run the desired command.
Think of it as a distant cousin to Homebrew. Holen is German for "fetch".
Holen knows about applications via a set of manifests, which are managed in git repositories. The main manifest repository is here, but more can be set up and managed easily.
Here is an (abbreviated) example manifest for dockviz. It teaches holen where to find the dockviz application in both the Docker and the static binary strategy:
desc: Visualizing Docker data
strategies:
docker:
image: nate/dockviz:v{{.Version}}
docker_conn: true
versions:
- version: '0.5.0'
- version: '0.4.2'
binary:
base_url: https://github.com/justone/dockviz/releases/download/v{{.Version}}/dockviz_{{.OSArch}}
versions:
- version: '0.5.0'
os_arch:
linux_amd64:
sha256sum: 0d63259921dae52329f61d63e7fef8211362d6b62396d2db5759e46054995a98
darwin_amd64:
sha256sum: 3e1f72cf94ad228bd84d8d288531e28f7935346233c409c7c0cd9b88deebdc81
- version: '0.4.2'
os_arch:
linux_amd64:
sha256sum: a8155fd4b2ebd38444c57a0e7af2892a246abec89c9f13b7421721df931b7c3b
darwin_amd64:
sha256sum: 24b56b817101bc8089be3a46501ae0e5fa0a3a52fa90d640de115295427d49cf
Holen utilizes a few different strategies for fetching applications:
- Docker image
- Static binary
- cmd.io (experimental)
Holen will try each strategy in the above order until it is able to run the application. If you'd like it to try binary first, just run holen config strategy.priority binary,docker
.
- Download the latest release for your platform and place it in your $PATH.
- Run
holen list
to view the available commands. - Run
holen link [utility] -b [dir to link into]
to link a utility. For example,holen link jq -b $HOME/bin
. - Run the utility.
For more information, go to the documentation.
In a Go 1.8 development environment (may I suggest skeg?):
$ go get github.com/holen-app/holen
$ cd $GOPATH/github.com/holen-app/holen
$ go build
$ go test
See the CONTRIBUTING.md file for details.
- Whalebrew - Makes it really easy to run Docker images as native commands. Holen has a manifest for whalebrew, so you can link it and install all its applications too.
Copyright 2016-2017 Nate Jones Licensed under the Apache License, Version 2.0.