script: move Script into config package

This commit is contained in:
Alex Crawford
2014-09-27 11:11:57 -07:00
parent 3e2823df1b
commit 6e2db882e6
6 changed files with 38 additions and 20 deletions

View File

@@ -17,32 +17,25 @@
package initialize
import (
"fmt"
"errors"
"log"
"strings"
"github.com/coreos/coreos-cloudinit/config"
"github.com/coreos/coreos-cloudinit/system"
)
func ParseUserData(contents string) (interface{}, error) {
if len(contents) == 0 {
return nil, nil
}
header := strings.SplitN(contents, "\n", 2)[0]
// Explicitly trim the header so we can handle user-data from
// non-unix operating systems. The rest of the file is parsed
// by yaml, which correctly handles CRLF.
header = strings.TrimSpace(header)
if strings.HasPrefix(header, "#!") {
switch {
case config.IsScript(contents):
log.Printf("Parsing user-data as script")
return system.Script(contents), nil
} else if header == "#cloud-config" {
return config.NewScript(contents)
case config.IsCloudConfig(contents):
log.Printf("Parsing user-data as cloud-config")
return config.NewCloudConfig(contents)
} else {
return nil, fmt.Errorf("Unrecognized user-data header: %s", header)
default:
return nil, errors.New("Unrecognized user-data format")
}
}

View File

@@ -38,7 +38,7 @@ func PrepWorkspace(workspace string) error {
return nil
}
func PersistScriptInWorkspace(script system.Script, workspace string) (string, error) {
func PersistScriptInWorkspace(script config.Script, workspace string) (string, error) {
scriptsPath := path.Join(workspace, "scripts")
tmp, err := ioutil.TempFile(scriptsPath, "")
if err != nil {