Работа над конфигом repko, работа над интеграцией в deb пакет repko
This commit is contained in:
parent
58b258be29
commit
d3fd4f5858
7 changed files with 101 additions and 11 deletions
|
|
@ -12,6 +12,7 @@ import (
|
|||
|
||||
func Start() {
|
||||
//Создаем новый объект Main для настройки.
|
||||
//todo работа внутри apt, вывод интерфейса во время выполнения apt
|
||||
m := NewMain()
|
||||
p := tea.NewProgram(m, tea.WithAltScreen()) //Запускаем через bubble tea программу
|
||||
m.Program = p //Указываем объекту настроек, программу в которой запущен, чтобы передавать туда сигналы
|
||||
|
|
|
|||
|
|
@ -57,7 +57,26 @@ func ExecuteAction(action *types.SectionAction, application *types.PackageApplic
|
|||
if cmdErr != nil {
|
||||
return fmt.Errorf("не удалось создать шаблон команды: %v", cmdErr)
|
||||
}
|
||||
return RunCommand(cmdStr, action.RunAs)
|
||||
output, err := RunCommand(cmdStr, action.RunAs)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if action.AssignTo != "" {
|
||||
assigned := false
|
||||
for i := range application.Variables {
|
||||
v := &application.Variables[i]
|
||||
if v.Name == action.AssignTo {
|
||||
v.Value = output
|
||||
assigned = true
|
||||
logrus.Infof("Присвоение значения '%s' переменной '%s'", output, v.Name)
|
||||
break
|
||||
}
|
||||
}
|
||||
if !assigned {
|
||||
return fmt.Errorf("переменная '%s' для присвоения не найдена", action.AssignTo)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
case "file_template":
|
||||
//Формируем 2 строки пути, с подставленными значениями и передаем её для выполнения
|
||||
source, sourceErr := RenderTemplate(action.FileSource, vars)
|
||||
|
|
@ -75,9 +94,9 @@ func ExecuteAction(action *types.SectionAction, application *types.PackageApplic
|
|||
}
|
||||
|
||||
// RunCommand запускает выполнение переданной команды от указанного лица
|
||||
func RunCommand(cmdStr, runAs string) error {
|
||||
func RunCommand(cmdStr, runAs string) (string, error) {
|
||||
if cmdStr == "" {
|
||||
return nil
|
||||
return "", nil
|
||||
}
|
||||
var cmd *exec.Cmd
|
||||
if runAs != "" && runAs != "root" {
|
||||
|
|
@ -87,9 +106,9 @@ func RunCommand(cmdStr, runAs string) error {
|
|||
}
|
||||
output, err := cmd.CombinedOutput()
|
||||
if err != nil {
|
||||
return fmt.Errorf("ошибка команды: %v\nВывод: %s", err, string(output))
|
||||
return string(output), fmt.Errorf("ошибка выполнения команды: %v\nВывод: %s", err, string(output))
|
||||
}
|
||||
return nil
|
||||
return strings.TrimSpace(string(output)), nil
|
||||
}
|
||||
|
||||
// RenderFileTemplate создает целевой файл на основе файла источника с подставленными значениями в нем
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue