func processUserdata(userdata string, env *initialize.Environment) error { userdata = env.Apply(userdata) parsed, err := initialize.ParseUserData(userdata) if err != nil { fmt.Printf("Failed parsing user-data: %v\n", err) return err } err = initialize.PrepWorkspace(env.Workspace()) if err != nil { fmt.Printf("Failed preparing workspace: %v\n", err) return err } switch t := parsed.(type) { case initialize.CloudConfig: err = initialize.Apply(t, env) case system.Script: var path string path, err = initialize.PersistScriptInWorkspace(t, env.Workspace()) if err == nil { var name string name, err = system.ExecuteScript(path) initialize.PersistUnitNameInWorkspace(name, env.Workspace()) } } return err }
// TODO(jonboulle): this should probably be refactored and moved into a different module func runScript(script config.Script, env *initialize.Environment) error { err := initialize.PrepWorkspace(env.Workspace()) if err != nil { log.Printf("Failed preparing workspace: %v\n", err) return err } path, err := initialize.PersistScriptInWorkspace(script, env.Workspace()) if err == nil { var name string name, err = system.ExecuteScript(path) initialize.PersistUnitNameInWorkspace(name, env.Workspace()) } return err }