Files
umbrix-libcore/config/debug.go
2024-02-05 18:47:26 +01:00

46 lines
923 B
Go

package config
import (
"bytes"
"encoding/json"
"fmt"
"os"
"path/filepath"
"runtime/debug"
"github.com/sagernet/sing-box/option"
)
func SaveCurrentConfig(path string, options option.Options) error {
json, err := ToJson(options)
if err != nil {
return err
}
p, err := filepath.Abs(path)
fmt.Printf("Saving config to %v %+v\n", p, err)
if err != nil {
return err
}
return os.WriteFile(p, []byte(json), 0644)
}
func ToJson(options option.Options) (string, error) {
var buffer bytes.Buffer
encoder := json.NewEncoder(&buffer)
encoder.SetIndent("", " ")
// fmt.Printf("%+v\n", options)
err := encoder.Encode(options)
if err != nil {
fmt.Printf("ERROR in coding:%+v\n", err)
return "", err
}
return buffer.String(), nil
}
func DeferPanicToError(name string, err func(error)) {
if r := recover(); r != nil {
s := fmt.Errorf("%s panic: %s\n%s", name, r, string(debug.Stack()))
err(s)
}
}