code: func (r *Reader) GetAllTemplates() ([]*process.Template, error) {
  	var templates []*process.Template
  	entries, err := ioutil.ReadDir(r.path)
  	if err != nil {
  		return templates, errors.Errorf("failed to open process template path %s: %v", r.path, err)
  	}
  	// From this point, log all errors bot continue reading
  	for _, entry := range entries {
  		if entry.IsDir() {
  			continue
  		}
  		if filepath.Ext(entry.Name()) != JSONExt {
  			continue
  		}
  		filePath := filepath.Join(r.path, entry.Name())
  		file, err := ioutil.ReadFile(filePath)
  		if err != nil {
  			r.log.Errorf("failed to read file %s: %v", filePath, err)
  			continue
  		}
  		template := &process.Template{}
  		if err := json.Unmarshal(file, template); err != nil {
  			r.log.Errorf("failed to unmarshal file %s: %v", filePath, err)
  			continue
  		}
  
  		templates = append(templates, template)
  	}
  
  	r.log.Debugf("read %d process template(s)", len(templates))
  
  	return templates, nil
  }
docs: // GetAllTemplates reads all templates from reader's path. Error is returned if path is not a directory. All JSON
  // file are read and un-marshaled as template objects