Archived
1
This repository has been archived on 2025-08-09. You can view files and clone it, but cannot push or open issues or pull requests.
Files
2024-12-23 01:55:48 +03:00

120 lines
2.9 KiB
Go

package space_worker
import (
"fmt"
"path/filepath"
"playbookctl/internal/types"
"playbookctl/internal/utils"
)
func (app *SpaceWorker) ListHosts() error {
app.log.Debug(fmt.Sprintf("workDir: %s", app.workDir))
app.log.Trace("try read hosts.yml")
hosts, err := types.ReadHosts(app.workDir)
if err != nil {
return err
}
app.log.Trace("try read default.host.txt")
defaultHost, err := utils.ReadStringFile(filepath.Join(app.workDir, "default.host.txt"))
if err != nil {
return err
}
fmt.Println("Хосты:")
for serverName, props := range *hosts {
defaultMarker := ""
if serverName == defaultHost {
defaultMarker = " *"
}
fmt.Printf(" - %s [%s:%d] (%s)%s\n", serverName, props.Host, props.Port, props.User, defaultMarker)
}
return nil
}
func (app *SpaceWorker) HostsAdd(name string, host string, port uint16, user string) error {
app.log.Debug(fmt.Sprintf("workDir: %s", app.workDir))
app.log.Trace("try read hosts.yml")
hosts, err := types.ReadHosts(app.workDir)
if err != nil {
return err
}
app.log.Trace("append new host to hosts.yml")
(*hosts)[name] = types.THostProps{
Host: host,
Port: port,
User: user,
Interpreter: types.DefaultInterpreter,
}
app.log.Trace("write hosts.yml")
if err := types.WriteHosts(app.workDir, hosts); err != nil {
return err
}
app.log.Trace(fmt.Sprintf("create vars/%s.vars.yml", name))
err = utils.WriteEmptyYaml(filepath.Join(app.workDir, "vars", fmt.Sprintf("%s.vars.yml", name)))
if err != nil {
return err
}
app.log.Info("Новый хост добавлен")
return nil
}
func (app *SpaceWorker) HostRemove(name string) error {
app.log.Debug(fmt.Sprintf("workDir: %s", app.workDir))
app.log.Trace("try read hosts.yml")
hosts, err := types.ReadHosts(app.workDir)
if err != nil {
return err
}
app.log.Trace("remove host from hosts.yml")
delete(*hosts, name)
app.log.Trace("write hosts.yml")
if err := types.WriteHosts(app.workDir, hosts); err != nil {
return err
}
app.log.Trace(fmt.Sprintf("remove vars/%s.vars.yml", name))
err = utils.RemoveFile(filepath.Join(app.workDir, "vars", fmt.Sprintf("%s.vars.yml", name)))
if err != nil {
return err
}
app.log.Info("Хост удалён")
return nil
}
func (app *SpaceWorker) SetDefaultHost(name string) error {
app.log.Debug(fmt.Sprintf("workDir: %s", app.workDir))
app.log.Trace("try write default.host.txt")
err := utils.WriteStringFile(filepath.Join(app.workDir, "default.host.txt"), name)
if err != nil {
return err
}
app.log.Info(fmt.Sprintf("Хост '%s' установлен по-умолчанию", name))
return nil
}
func (app *SpaceWorker) GetDefaultHost() (string, error) {
app.log.Debug(fmt.Sprintf("workDir: %s", app.workDir))
app.log.Trace("try read default.host.txt")
value, err := utils.ReadStringFile(filepath.Join(app.workDir, "default.host.txt"))
if err != nil {
return "", err
}
return value, nil
}