init
This commit is contained in:
56
internal/services/config.go
Normal file
56
internal/services/config.go
Normal file
@@ -0,0 +1,56 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"os"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
type Server struct {
|
||||
Host string `json:"host"`
|
||||
User string `json:"user"`
|
||||
PrivateKey string `json:"private_key"`
|
||||
Port string `json:"port"`
|
||||
}
|
||||
|
||||
type ConfigService struct {
|
||||
path string
|
||||
servers map[string]Server
|
||||
}
|
||||
|
||||
func NewConfigService() (*ConfigService, error) {
|
||||
configDir, err := os.UserConfigDir()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
dir := filepath.Join(configDir, "filepass")
|
||||
if err := os.MkdirAll(dir, 0o700); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
path := filepath.Join(dir, "servers.json")
|
||||
|
||||
if _, err := os.Stat(path); errors.Is(err, os.ErrNotExist) {
|
||||
if err := os.WriteFile(path, []byte("{}"), 0o600); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
data, err := os.ReadFile(path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var servers map[string]Server
|
||||
if err := json.Unmarshal(data, &servers); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &ConfigService{path: path, servers: servers}, nil
|
||||
}
|
||||
|
||||
func (c *ConfigService) Servers() map[string]Server {
|
||||
return c.servers
|
||||
}
|
||||
Reference in New Issue
Block a user