// NewTemplateResource creates a TemplateResource. func NewTemplateResource(path string, config Config) (*TemplateResource, error) { if config.StoreClient == nil { return nil, errors.New("A valid StoreClient is required.") } var tc *TemplateResourceConfig log.Debug("Loading template resource from " + path) _, err := toml.DecodeFile(path, &tc) if err != nil { return nil, fmt.Errorf("Cannot process template resource %s - %s", path, err.Error()) } tr := tc.TemplateResource tr.expandEnv() tr.keepStageFile = config.KeepStageFile tr.noop = config.Noop tr.storeClient = config.StoreClient tr.funcMap = newFuncMap() tr.store = memkv.New() addFuncs(tr.funcMap, tr.store.FuncMap) tr.prefix = filepath.Join("/", config.Prefix, tr.Prefix) if tr.Src == "" { return nil, ErrEmptySrc } tr.Src = filepath.Join(config.TemplateDir, tr.Src) return &tr, nil }
func NewTemplating(name, content string) *Templating { t := new(Templating) t.name = name t.content = cleanupOfTemplate(content) t.functions = newFuncMap() t.vars = memkv.New() addFuncs(t.functions, t.vars.FuncMap) return t }
func NewTemplate(config *TemplateConfig, doNoOp, keepStageFile, useMutex bool) *Template { store := memkv.New() funcMap := newFuncMap() for name, fn := range store.FuncMap { funcMap[name] = fn } return &Template{ config: config, funcMap: funcMap, store: store, doNoOp: doNoOp, keepStageFile: keepStageFile, useMutex: useMutex, mutex: &sync.Mutex{}, } }
// NewTemplateResource creates a TemplateResource. func NewTemplateResource(path string, config Config) (*TemplateResource, error) { if config.StoreClient == nil { return nil, errors.New("A valid StoreClient is required.") } // Set the default uid and gid so we can determine if it was // unset from configuration. tc := &TemplateResourceConfig{TemplateResource{Uid: -1, Gid: -1}} log.Debug("Loading template resource from " + path) _, err := toml.DecodeFile(path, &tc) if err != nil { return nil, fmt.Errorf("Cannot process template resource %s - %s", path, err.Error()) } tr := tc.TemplateResource tr.keepStageFile = config.KeepStageFile tr.noop = config.Noop tr.storeClient = config.StoreClient tr.funcMap = newFuncMap() tr.store = memkv.New() tr.syncOnly = config.SyncOnly addFuncs(tr.funcMap, tr.store.FuncMap) if config.Prefix != "" { tr.Prefix = config.Prefix } tr.Prefix = filepath.Join("/", tr.Prefix) if tr.Src == "" { return nil, ErrEmptySrc } if tr.Uid == -1 { tr.Uid = os.Geteuid() } if tr.Gid == -1 { tr.Gid = os.Getegid() } tr.Src = filepath.Join(config.TemplateDir, tr.Src) return &tr, nil }