44 lines
1.2 KiB
Go
44 lines
1.2 KiB
Go
package config
|
|
|
|
import (
|
|
"encoding/json"
|
|
"os"
|
|
)
|
|
|
|
// ConnectionConfig содержит параметры для подключения и развертывания
|
|
type ConnectionConfig struct {
|
|
IP string `json:"ip"`
|
|
Port string `json:"port"`
|
|
Login string `json:"login"`
|
|
Password string `json:"password"`
|
|
DeploymentPackagePath string `json:"deployment_package_path"`
|
|
}
|
|
|
|
// Save сохраняет конфигурацию в файл
|
|
func (c *ConnectionConfig) Save(filePath string) error {
|
|
data, err := json.MarshalIndent(c, "", " ")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return os.WriteFile(filePath, data, 0644)
|
|
}
|
|
|
|
// Load загружает конфигурацию из файла
|
|
func Load(filePath string) (*ConnectionConfig, error) {
|
|
if _, err := os.Stat(filePath); os.IsNotExist(err) {
|
|
// Возвращаем пустую конфигурацию, если файл не найден
|
|
return &ConnectionConfig{Port: "22", Login: "root"}, nil
|
|
}
|
|
|
|
data, err := os.ReadFile(filePath)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var cfg ConnectionConfig
|
|
if err := json.Unmarshal(data, &cfg); err != nil {
|
|
return nil, err
|
|
}
|
|
return &cfg, nil
|
|
}
|