mirror of
https://github.com/openshift/source-to-image.git
synced 2026-02-05 12:44:54 +01:00
* pkg/util/glog -> pkg/util/log * var glog replaced with var log * Removed unnecessary flag.Parse call (fixed with klog)
72 lines
2.2 KiB
Go
72 lines
2.2 KiB
Go
package create
|
|
|
|
import (
|
|
"os"
|
|
"text/template"
|
|
|
|
"github.com/openshift/source-to-image/pkg/create/templates"
|
|
utillog "github.com/openshift/source-to-image/pkg/util/log"
|
|
)
|
|
|
|
var log = utillog.StderrLog
|
|
|
|
// Bootstrap defines parameters for the template processing
|
|
type Bootstrap struct {
|
|
DestinationDir string
|
|
ImageName string
|
|
}
|
|
|
|
// New returns a new bootstrap for given image name and destination directory
|
|
func New(name, dst string) *Bootstrap {
|
|
return &Bootstrap{ImageName: name, DestinationDir: dst}
|
|
}
|
|
|
|
// AddSTIScripts creates the STI scripts directory structure and process
|
|
// templates for STI scripts
|
|
func (b *Bootstrap) AddSTIScripts() {
|
|
os.MkdirAll(b.DestinationDir+"/"+"s2i/bin", 0700)
|
|
b.process(templates.AssembleScript, "s2i/bin/assemble", 0755)
|
|
b.process(templates.RunScript, "s2i/bin/run", 0755)
|
|
b.process(templates.UsageScript, "s2i/bin/usage", 0755)
|
|
b.process(templates.SaveArtifactsScript, "s2i/bin/save-artifacts", 0755)
|
|
}
|
|
|
|
// AddDockerfile creates an example Dockerfile
|
|
func (b *Bootstrap) AddDockerfile() {
|
|
b.process(templates.Dockerfile, "Dockerfile", 0600)
|
|
}
|
|
|
|
// AddReadme creates a README.md
|
|
func (b *Bootstrap) AddReadme() {
|
|
b.process(templates.Readme, "README.md", 0600)
|
|
}
|
|
|
|
// AddTests creates an example test for the STI image and the Makefile
|
|
func (b *Bootstrap) AddTests() {
|
|
os.MkdirAll(b.DestinationDir+"/"+"test/test-app", 0700)
|
|
b.process(templates.Index, "test/test-app/index.html", 0600)
|
|
b.process(templates.TestRunScript, "test/run", 0700)
|
|
b.process(templates.Makefile, "Makefile", 0600)
|
|
}
|
|
|
|
func (b *Bootstrap) process(t string, dst string, perm os.FileMode) {
|
|
tpl := template.Must(template.New("").Parse(t))
|
|
if _, err := os.Stat(b.DestinationDir + "/" + dst); err == nil {
|
|
log.Errorf("File already exists: %s, skipping", dst)
|
|
return
|
|
}
|
|
f, err := os.Create(b.DestinationDir + "/" + dst)
|
|
if err != nil {
|
|
log.Errorf("Unable to create %s file, skipping: %v", dst, err)
|
|
return
|
|
}
|
|
if err := os.Chmod(b.DestinationDir+"/"+dst, perm); err != nil {
|
|
log.Errorf("Unable to chmod %s file to %v, skipping: %v", dst, perm, err)
|
|
return
|
|
}
|
|
defer f.Close()
|
|
if err := tpl.Execute(f, b); err != nil {
|
|
log.Errorf("Error processing %s template: %v", dst, err)
|
|
}
|
|
}
|