Работа над выполнение действий секции, добавление комментариев
This commit is contained in:
parent
dc263b76bf
commit
91b1eea1d4
7 changed files with 300 additions and 41 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue