Skip to content
conbox is a Go implementation of unix-like utilities as single static executable intended for small container images.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
applets Hooks for gosh applets. May 15, 2019
common mv applet. Apr 29, 2019
conbox dd. May 14, 2019
docker Printenv applet. Apr 25, 2019
.gitignore Initial commit Apr 22, 2019
LICENSE Initial commit Apr 22, 2019
README.md Similar projects. Apr 30, 2019
build.sh Rm applet. Apr 23, 2019
go.mod Add github.com/mvdan/sh as shell. May 7, 2019
go.sum Add go.sum. May 14, 2019

README.md

license Go Report Card

conbox

conbox is a Go implementation of unix-like utilities as single static executable intended for small container images.

Created by gh-md-toc

Install

git clone https://github.com/udhos/conbox
cd conbox
go install ./conbox

Usage

Available applets

List available applets:

$ conbox
conbox: version 0.0 runtime go1.12.4 GOMAXPROC=1 OS=linux ARCH=amd64

usage: conbox APPLET [ARG]... : run APPLET
       conbox -h              : show command-line help
       conbox -l              : list applets

conbox: registered applets:
cat echo ls mkdir printenv pwd rm rmdir shell which

See all implemented applets here:

https://github.com/udhos/conbox/tree/master/applets

Basename usage

You can create a symbolic link for a supported applet pointing to 'conbox':

ln -s ~/go/bin/conbox ~/bin/cat
~/bin/cat /etc/passwd

Subcommand usage

Pass applet name as subcommand to 'conbox':

conbox cat /etc/passwd

Shell usage

All applets are also directly available from within conbox shell:

$ conbox shell
conbox: version 0.0 runtime go1.12.4 GOMAXPROC=1 OS=linux ARCH=amd64

welcome to conbox shell.
this tiny shell is very limited in features.
however you can run external programs normally.
some hints:
       - use 'conbox' to see all applets available as shell commands.
       - use 'help' to list shell built-in commands.
       - 'exit' terminates the shell.

shell built-in commands:
builtin cd exit help

conbox shell$

Adding new applet

  1. Create a new package for the applet under directory 'applets'. The package must export the function Run() as show in example below.
$ more applets/myapp/run.go
package myapp // put applet myapp in package myapp

import (
        "fmt"

        "github.com/udhos/conbox/common"
)

// Run executes the applet.
func Run(tab map[string]common.AppletFunc, args []string) int {

        fmt.Println("myapp: hello")

        return 0 // exit status
}
  1. In file 'conbox/applets.go', import the applet package and include its Run() function in the applet table:
$ more conbox/applets.go
package main

import (
	// (...)
        "github.com/udhos/conbox/applets/myapp" // <-- import the applet package
	// (...)
)

func loadApplets() map[string]common.AppletFunc {
        tab := map[string]common.AppletFunc{
		// (...)
                "myapp": myapp.Run, // <-- point applet name to its Run() function
		// (...)
        }
        return tab
}
  1. Rebuild conbox and test the new applet:
$ go install ./conbox
$ conbox myapp
myapp: hello

Docker

Get 'conbox' as docker image udhos/conbox:latest from:

https://hub.docker.com/r/udhos/conbox

Run in docker

Run applet:

docker run --rm udhos/conbox:latest cat /etc/passwd

Run interactive shell:

docker run --rm -ti udhos/conbox:latest shell

Docker recipes

Build docker image:

./docker/build.sh

Tag image:

docker tag udhos/conbox udhos/conbox:latest

Push image:

docker login
docker push udhos/conbox:latest

Related work

Go Projects

Unfortunately these projects seem inactive:

Non-Go projects

You can’t perform that action at this time.