diff --git a/README.md b/README.md index ef989a4..bc500ca 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +[![wercker status](https://app.wercker.com/status/56107a996689202ef859cc6a49d9fb5f/s/master "wercker status")](https://app.wercker.com/project/byKey/56107a996689202ef859cc6a49d9fb5f) + ### OCI Metadata Script Handler #### Overview diff --git a/executor.go b/executor.go index 7875c2d..2d87ef2 100644 --- a/executor.go +++ b/executor.go @@ -10,6 +10,7 @@ import ( const defaultShell = "/bin/bash" +// RunScript runs the script that has been fetched as requested func (sm *ScriptManager) RunScript(sn string) error { s := fmt.Sprintf("%s/%s", sm.WorkDir, sn) diff --git a/go.sum b/go.sum index 1d6ea4f..440ef27 100644 --- a/go.sum +++ b/go.sum @@ -1,17 +1,21 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/oracle/oci-go-sdk v5.4.0+incompatible h1:fM4QtmPTmmrzcyvBQP1/deOodn1/zJSszrQmHotAb3Q= github.com/oracle/oci-go-sdk v5.4.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33 h1:I6FyU15t786LL7oL/hn43zqTuEGr4PN7F4XJ1p4E3Y8= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= diff --git a/main.go b/main.go index 9b6009d..8277a46 100644 --- a/main.go +++ b/main.go @@ -18,6 +18,7 @@ const ( workShell = "/bin/bash" ) +// ScriptManager definition of the manager to handle the script management type ScriptManager struct { Type ScriptType WorkDir string @@ -39,7 +40,7 @@ func main() { st, err := ParseScriptType(scriptType) if err != nil { log.Error("No valid argument specified for script type") - log.Error("%s : %s", err, scriptType) + log.Errorf("%s : %s", err, scriptType) os.Exit(1) } @@ -53,7 +54,7 @@ func main() { defer func() { if !debug { - os.RemoveAll(wd) + _ = os.RemoveAll(wd) } else { log.Debug("not removing work dir : ", wd) } diff --git a/types.go b/types.go index 4da4185..f838951 100644 --- a/types.go +++ b/types.go @@ -2,8 +2,10 @@ package main import "fmt" +// ScriptType of what type of script it is type ScriptType int +// Startup / Shutdown constant for that of a startup script const ( Startup ScriptType = iota + 1 Shutdown @@ -22,6 +24,7 @@ func (t ScriptType) String() string { return types[t-1] } +// ParseScriptType will take the type of script string and map to the ScriptType constant func ParseScriptType(s string) (ScriptType, error) { var ret ScriptType switch s { @@ -42,6 +45,7 @@ func ParseScriptType(s string) (ScriptType, error) { } +// Startup will return true if it's time for a startup script func (t ScriptType) Startup() bool { if t == Startup { return true @@ -49,6 +53,7 @@ func (t ScriptType) Startup() bool { return false } +// Shutdown will return true if it's shutdown script time func (t ScriptType) Shutdown() bool { if t == Shutdown { return true diff --git a/wercker.yml b/wercker.yml new file mode 100644 index 0000000..3a775a2 --- /dev/null +++ b/wercker.yml @@ -0,0 +1,50 @@ +box: golang:1.12 +build: + steps: + - wercker/golint@1.4.1: + exclude: vendor + - script: + name: go test + code: | + go test -mod vendor ./... + - script: + name: go build + code: | + go build -mod vendor -o oci-metadata-scripts . +package: + box: nshttpd/fpm-packager:0a62ec4 + steps: + - script: + name: make directories + code: | + mkdir -p pkg/usr/bin + mkdir -p pkg/etc/systemd/system + mkdir -p pkg/var/lib/oci/scripts + mkdir -p pkg/build + - script: + name: copy files + code: | + cp oci-metadata-scripts pkg/usr/bin/ + cp misc/*.service pkg/etc/systemd/system/ + cp misc/postinst.sh pkg/var/lib/oci/scripts/ + chmod 744 pkg/var/lib/oci/scripts/postinst.sh + - script: + name: fpm rpm builder + code: | + export VERSION=`cat VERSION` + fpm -s dir -t rpm -v ${VERSION} -n oci-metadata-scripts -p pkg/build \ + -C pkg --replaces oci-metadata-scripts --after-install pkg/var/lib/oci/scripts/postinst.sh var/ usr/ etc/ + fpm -s dir -t deb -v ${VERSION} -n oci-metadata-scripts -p pkg/build \ + -C pkg --replaces oci-metadata-scripts --after-install pkg/var/lib/oci/scripts/postinst.sh var/ usr/ etc/ +deploy: + steps: + - script: + name: set version + code: | + export VERSION=`cat VERSION` + - tcnksm/ghr@0.2.0: + name: run ghr + token: $GITHUB_TOKEN + input: pkg/build + version: $VERSION + replace: true