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 }