github.com/taubyte/tau-cli@v0.1.13-0.20240326000942-487f0d57edfc/singletons/templates/code.go (about)

     1  package templates
     2  
     3  import (
     4  	"os"
     5  	"path"
     6  	"path/filepath"
     7  
     8  	"gopkg.in/yaml.v3"
     9  )
    10  
    11  type codeConfig struct {
    12  	Description string
    13  }
    14  
    15  func (t *templates) Function(language string) (map[string]TemplateInfo, error) {
    16  	return t.codeMap(path.Join(templateFunctionsFolder, language))
    17  }
    18  
    19  func (t *templates) SmartOps(language string) (map[string]TemplateInfo, error) {
    20  	return t.codeMap(path.Join(templateSmartOpsFolder, language))
    21  }
    22  
    23  func (t *templates) codeMap(templatePath string) (map[string]TemplateInfo, error) {
    24  	dirs, err := os.ReadDir(templatePath)
    25  	if err != nil {
    26  		return nil, err
    27  	}
    28  
    29  	templateMap := make(map[string]TemplateInfo, len(dirs))
    30  	for _, dir := range dirs {
    31  		if dir.Name() == "common" {
    32  			continue
    33  		}
    34  		yamlData, err := os.ReadFile(path.Join(templatePath, dir.Name(), "config.yaml"))
    35  		if err != nil {
    36  			return nil, err
    37  		}
    38  
    39  		var config codeConfig
    40  		err = yaml.Unmarshal(yamlData, &config)
    41  		if err != nil {
    42  			return nil, err
    43  		}
    44  
    45  		templateMap[filepath.Base(dir.Name())] = TemplateInfo{
    46  			HideURL:     true,
    47  			URL:         path.Join(templatePath, dir.Name()),
    48  			Description: config.Description,
    49  		}
    50  	}
    51  
    52  	return templateMap, nil
    53  }