package datavisor import ( "os" "path/filepath" "ripple/config" "ripple/state" "ripple/transport" "ripple/types" ) func Init(configPath string) error { cfg, err := loadConfigFile(configPath) if err != nil { return err } port := int(cfg.Port) username := string(cfg.Username) serverAddress := string(cfg.ServerAddress) var secretKey [32]byte copy(secretKey[:], cfg.SecretKey[:]) homeDir, err := os.UserHomeDir() if err != nil { return err } dataDir := filepath.Join(homeDir, config.DataDir) if err := os.MkdirAll(dataDir, 0700); err != nil { return err } userID := types.UserIdentifier{ Username: username, ServerAddress: serverAddress, } if err := transport.Init(port, userID, secretKey); err != nil { return err } if err := state.Init(secretKey); err != nil { return err } return nil }