]> git.giacomolli.uk - onechat/blobdiff - agent.go
Select notification targets by stable ID
[onechat] / agent.go
index 13491c11d22c41fd8a272f017e4497bdebf7064e..da4b0b7be7eb5c65bc474095cd5eb00f189c4840 100644 (file)
--- a/agent.go
+++ b/agent.go
@@ -61,7 +61,12 @@ func openAgent(dir string) (*Agent, error) {
        path := filepath.Join(dir, "config.json")
        data, err := os.ReadFile(path)
        if errors.Is(err, os.ErrNotExist) {
-               return createAgent(dir)
+               agent, err := createAgent(dir)
+               if err != nil {
+                       return agent, fmt.Errorf("create agent: %w", err)
+               }
+
+               return agent, nil
        }
 
        if err != nil {
@@ -70,7 +75,7 @@ func openAgent(dir string) (*Agent, error) {
 
        config, err := defaultAgentConfig()
        if err != nil {
-               return nil, err
+               return nil, fmt.Errorf("prepare agent defaults: %w", err)
        }
 
        decoder := json.NewDecoder(bytes.NewReader(data))
@@ -345,10 +350,15 @@ func (c AgentConfig) validate() error {
 func createAgent(dir string) (*Agent, error) {
        config, err := defaultAgentConfig()
        if err != nil {
-               return nil, err
+               return nil, fmt.Errorf("prepare agent defaults: %w", err)
+       }
+
+       agent, err := writeAgent(dir, config)
+       if err != nil {
+               return agent, fmt.Errorf("write new agent: %w", err)
        }
 
-       return writeAgent(dir, config)
+       return agent, nil
 }
 
 // defaultAgentConfig returns the settings of a new agent, without an ID. The