Работа над выполнение действий секции, добавление комментариев

This commit is contained in:
XeRo 2026-01-22 17:54:42 +05:00
parent dc263b76bf
commit 91b1eea1d4
7 changed files with 300 additions and 41 deletions

View file

@ -44,12 +44,14 @@ func CalculateSelectOptionsIndex(focus, visibleCount, optionsCount int) (int, in
return start, end
}
// RenderFileTemplate создает целевой файл на основе файла источника с подставленными значениями в нем
func RenderFileTemplate(source, target string, vars map[string]interface{}) error {
if source == "" || target == "" {
return fmt.Errorf("source или target пустые")
}
var data []byte
var err error
//Получаем данные файла источника
if strings.HasPrefix(source, "http") {
resp, err := http.Get(source)
if err != nil {
@ -63,11 +65,15 @@ func RenderFileTemplate(source, target string, vars map[string]interface{}) erro
if err != nil {
return fmt.Errorf("ошибка чтения данных файла %s, err: %v", source, err)
}
//Формируем файл с переменными
tmpl, err := template.New("").Parse(string(data))
if err != nil {
return fmt.Errorf("ошибка формирования шаблона строки: %v", err)
}
var rendered bytes.Buffer
//В файл помещаем переменные
if err = tmpl.Execute(&rendered, vars); err != nil {
return fmt.Errorf("ошибка подстановки значений в шаблон")
}
@ -79,6 +85,7 @@ func RenderFileTemplate(source, target string, vars map[string]interface{}) erro
logrus.Infof("Бекап %s создан", backup)
}
}
//Создаем папку для целевого файла и записываем в него данные
if err = os.MkdirAll(filepath.Dir(target), 0755); err != nil {
return fmt.Errorf("ошибка создания директории для файла %s, err: %v", target, err)
}
@ -88,6 +95,7 @@ func RenderFileTemplate(source, target string, vars map[string]interface{}) erro
return nil
}
// RenderTemplate формирует строку с подставленными параметрами
func RenderTemplate(tmpl string, data map[string]interface{}) (string, error) {
if tmpl == "" {
return "", nil
@ -103,6 +111,7 @@ func RenderTemplate(tmpl string, data map[string]interface{}) (string, error) {
return buf.String(), nil
}
// RunCommand запускает выполнение переданной команды от указанного лица
func RunCommand(cmdStr, runAs string) error {
if cmdStr == "" {
return nil
@ -111,7 +120,7 @@ func RunCommand(cmdStr, runAs string) error {
if runAs != "" && runAs != "root" {
cmd = exec.Command("su", "-c", cmdStr, runAs)
} else {
cmd = exec.Command("bach", "-c", cmdStr)
cmd = exec.Command("bash", "-c", cmdStr)
}
output, err := cmd.CombinedOutput()
if err != nil {