ignore

Форк
0
/
templates.go 
49 строк · 1.0 Кб
1
package internal
2

3
import (
4
	"bytes"
5
	"embed"
6
	"fmt"
7
	"io"
8
	"io/fs"
9
	"path/filepath"
10
	"strings"
11
)
12

13
//go:embed templates/*
14
var templates embed.FS
15

16
type TemplateRegistry struct {
17
	templates fs.FS
18
}
19

20
func NewTemplateRegistry() *TemplateRegistry {
21
	return &TemplateRegistry{templates: templates}
22
}
23

24
func (tr *TemplateRegistry) HasTemplate(name string) bool {
25
	_, err := fs.Stat(tr.templates, fmt.Sprintf("templates/%s.gitignore", name))
26
	return err == nil
27
}
28

29
func (tr *TemplateRegistry) List() []string {
30
	var templates []string
31
	fs.WalkDir(tr.templates, ".", func(path string, d fs.DirEntry, _ error) error {
32
		if d.IsDir() {
33
			return nil
34
		}
35
		template := strings.TrimSuffix(filepath.Base(path), ".gitignore")
36
		templates = append(templates, template)
37
		return nil
38
	})
39
	return templates
40
}
41

42
func (tr *TemplateRegistry) CopyTemplate(name string, dst io.Writer) error {
43
	b, err := fs.ReadFile(tr.templates, fmt.Sprintf("templates/%s.gitignore", name))
44
	if err != nil {
45
		return err
46
	}
47
	io.Copy(dst, bytes.NewReader(b))
48
	return nil
49
}
50

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.