aboutsummaryrefslogtreecommitdiff
path: root/cmd/resolver/resolver.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/resolver/resolver.go')
-rw-r--r--cmd/resolver/resolver.go41
1 files changed, 41 insertions, 0 deletions
diff --git a/cmd/resolver/resolver.go b/cmd/resolver/resolver.go
index b7129cc..697953d 100644
--- a/cmd/resolver/resolver.go
+++ b/cmd/resolver/resolver.go
@@ -6,8 +6,10 @@ package main
import (
"encoding/json"
"fmt"
+ "io"
"log"
"math/rand"
+ "os"
"strings"
"time"
@@ -128,6 +130,45 @@ func (rsol *resolver) doCmdEnv() {
fmt.Printf("%s\n", envJson)
}
+// doCmdEnvUpdate update the server environment by reading the JSON formatted
+// environment from file or from stdin.
+func (rsol *resolver) doCmdEnvUpdate(fileOrStdin string) (err error) {
+ var (
+ resc = rsol.newRescachedClient()
+
+ env *rescached.Environment
+ envJson []byte
+ )
+
+ if fileOrStdin == "-" {
+ envJson, err = io.ReadAll(os.Stdin)
+ } else {
+ envJson, err = os.ReadFile(fileOrStdin)
+ }
+ if err != nil {
+ return fmt.Errorf("%s %s: %w", cmdEnv, subCmdUpdate, err)
+ }
+
+ err = json.Unmarshal(envJson, &env)
+ if err != nil {
+ return fmt.Errorf("%s %s: %w", cmdEnv, subCmdUpdate, err)
+ }
+
+ env, err = resc.EnvUpdate(env)
+ if err != nil {
+ return fmt.Errorf("%s %s: %w", cmdEnv, subCmdUpdate, err)
+ }
+
+ envJson, err = json.MarshalIndent(env, "", " ")
+ if err != nil {
+ return fmt.Errorf("%s %s: %w", cmdEnv, subCmdUpdate, err)
+ }
+
+ fmt.Printf("%s\n", envJson)
+
+ return nil
+}
+
func (rsol *resolver) doCmdQuery(args []string) {
var (
maxAttempts = defAttempts