conbox

module
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Feb 16, 2023 License: MIT

README

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 ;# clone outside of GOPATH
cd conbox
GO111MODULE=on 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

Go Projects

Unfortunately these projects seem inactive:

Non-Go projects

Directories

Path Synopsis
applets
cat
Package cat implements an utility.
Package cat implements an utility.
chmod
Package chmod implements an utility.
Package chmod implements an utility.
chown
Package chown implements an utility.
Package chown implements an utility.
cp
Package cp implements an utility.
Package cp implements an utility.
dd
Package dd implements an utility.
Package dd implements an utility.
echo
Package echo implements an utility.
Package echo implements an utility.
head
Package head implements an utility.
Package head implements an utility.
host
Package host implements an utility.
Package host implements an utility.
ls
Package ls implements an utility.
Package ls implements an utility.
mkdir
Package mkdir implements an utility.
Package mkdir implements an utility.
mv
Package mv implements an utility.
Package mv implements an utility.
printenv
Package printenv implements an utility.
Package printenv implements an utility.
ps
Package ps implements an utility.
Package ps implements an utility.
pwd
Package pwd implements an utility.
Package pwd implements an utility.
rm
Package rm implements an utility.
Package rm implements an utility.
rmdir
Package rmdir implements an utility.
Package rmdir implements an utility.
sh
Package sh implements an utility.
Package sh implements an utility.
shell
Package shell implements an utility.
Package shell implements an utility.
sleep
Package sleep implements an utility.
Package sleep implements an utility.
touch
Package touch implements an utility.
Package touch implements an utility.
which
Package which implements an utility.
Package which implements an utility.
Package common holds some utilities.
Package common holds some utilities.
Package main implements conbox.
Package main implements conbox.

Jump to

Keyboard shortcuts

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