mirror of
https://github.com/rancher/os.git
synced 2025-09-02 15:24:32 +00:00
Start initial support of running in Docker
This commit is contained in:
60
util/util.go
60
util/util.go
@@ -4,6 +4,7 @@ import (
|
||||
"archive/tar"
|
||||
"fmt"
|
||||
"io"
|
||||
"math/rand"
|
||||
"os"
|
||||
"path"
|
||||
"syscall"
|
||||
@@ -11,6 +12,10 @@ import (
|
||||
"github.com/docker/docker/pkg/mount"
|
||||
)
|
||||
|
||||
var (
|
||||
letters = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
|
||||
)
|
||||
|
||||
func mountProc() error {
|
||||
if _, err := os.Stat("/proc/self/mountinfo"); os.IsNotExist(err) {
|
||||
if _, err := os.Stat("/proc"); os.IsNotExist(err) {
|
||||
@@ -94,3 +99,58 @@ func ExtractTar(archive string, dest string) error {
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func Contains(values []string, value string) bool {
|
||||
if len(value) == 0 {
|
||||
return false
|
||||
}
|
||||
|
||||
for _, value := range values {
|
||||
if value == value {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
type ReturnsErr func() error
|
||||
|
||||
func ShortCircuit(funcs ...ReturnsErr) error {
|
||||
for _, f := range funcs {
|
||||
err := f()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
type ErrWriter struct {
|
||||
w io.Writer
|
||||
Err error
|
||||
}
|
||||
|
||||
func NewErrorWriter(w io.Writer) *ErrWriter {
|
||||
return &ErrWriter{
|
||||
w: w,
|
||||
}
|
||||
}
|
||||
|
||||
func (e *ErrWriter) Write(buf []byte) *ErrWriter {
|
||||
if e.Err != nil {
|
||||
return e
|
||||
}
|
||||
|
||||
_, e.Err = e.w.Write(buf)
|
||||
return e
|
||||
}
|
||||
|
||||
func RandSeq(n int) string {
|
||||
b := make([]rune, n)
|
||||
for i := range b {
|
||||
b[i] = letters[rand.Intn(len(letters))]
|
||||
}
|
||||
return string(b)
|
||||
}
|
||||
|
Reference in New Issue
Block a user