mukan-ignite/ignite/pkg/confile/encoding.go
Mukan Erkin Törük 26b204bd04
Some checks are pending
Docs Deploy / build_and_deploy (push) Waiting to run
Generate Docs / cli (push) Waiting to run
Generate Config Doc / cli (push) Waiting to run
Go formatting / go-formatting (push) Waiting to run
Check links / markdown-link-check (push) Waiting to run
Integration / pre-test (push) Waiting to run
Integration / test on (push) Blocked by required conditions
Integration / status (push) Blocked by required conditions
Lint / Lint Go code (push) Waiting to run
Test / test (ubuntu-latest) (push) Waiting to run
feat: fork Ignite CLI v29 as Mukan Ignite — remove cosmos-sdk restrictions
2026-05-11 03:31:37 +03:00

75 lines
2 KiB
Go

package confile
import (
"encoding/json"
"io"
"github.com/goccy/go-yaml"
"github.com/pelletier/go-toml"
)
// EncodingCreator defines a constructor to create an EncodingCreator from
// an io.ReadWriter.
type EncodingCreator interface {
Create(io.ReadWriter) EncodeDecoder
}
// EncodeDecoder combines Encoder and Decoder.
type EncodeDecoder interface {
Encoder
Decoder
}
// Encoder should encode a v into io.Writer given to EncodingCreator.
type Encoder interface {
Encode(v interface{}) error
}
// Decoder should decode a v from io.Reader given to EncodingCreator.
type Decoder interface {
Decode(v interface{}) error
}
// Encoding implements EncodeDecoder.
type Encoding struct {
Encoder
Decoder
}
// NewEncoding returns a new EncodeDecoder implementation from e end d.
func NewEncoding(e Encoder, d Decoder) EncodeDecoder {
return &Encoding{
Encoder: e,
Decoder: d,
}
}
// DefaultJSONEncodingCreator implements EncodingCreator for JSON encoding.
var DefaultJSONEncodingCreator = &JSONEncodingCreator{}
// DefaultYAMLEncodingCreator implements EncodingCreator for YAML encoding.
var DefaultYAMLEncodingCreator = &YAMLEncodingCreator{}
// DefaultTOMLEncodingCreator implements EncodingCreator for TOML encoding.
var DefaultTOMLEncodingCreator = &TOMLEncodingCreator{}
// JSONEncodingCreator implements EncodingCreator for JSON encoding.
type JSONEncodingCreator struct{}
func (e *JSONEncodingCreator) Create(rw io.ReadWriter) EncodeDecoder {
return NewEncoding(json.NewEncoder(rw), json.NewDecoder(rw))
}
// YAMLEncodingCreator implements EncodingCreator for YAML encoding.
type YAMLEncodingCreator struct{}
func (e *YAMLEncodingCreator) Create(rw io.ReadWriter) EncodeDecoder {
return NewEncoding(yaml.NewEncoder(rw), yaml.NewDecoder(rw))
}
// TOMLEncodingCreator implements EncodingCreator for TOML encoding.
type TOMLEncodingCreator struct{}
func (e *TOMLEncodingCreator) Create(rw io.ReadWriter) EncodeDecoder {
return NewEncoding(toml.NewEncoder(rw), toml.NewDecoder(rw))
}