Explorar el Código

Start of the config

Gary Kramlich hace 3 años
padre
commit
5b3811ce96
Se han modificado 5 ficheros con 63 adiciones y 1 borrados
  1. 10 0
      config/appservice.go
  2. 35 0
      config/config.go
  3. 7 0
      config/homeserver.go
  4. 4 1
      go.mod
  5. 7 0
      go.sum

+ 10 - 0
config/appservice.go

@@ -0,0 +1,10 @@
+package config
+
+type appservice struct {
+	Address  string `yaml:"address"`
+	Hostname string `yaml:"hostname"`
+	Port     uint16 `yaml:"port"`
+
+	ASToken string `yaml:"as_token"`
+	HSToken string `yaml:"hs_token"`
+}

+ 35 - 0
config/config.go

@@ -0,0 +1,35 @@
+package config
+
+import (
+	"io/ioutil"
+
+	"gopkg.in/yaml.v2"
+)
+
+type Config struct {
+	Homeserver homeserver `yaml:"homeserver"`
+	Appservice appservice `yaml:"appservice"`
+}
+
+func FromBytes(data []byte) (*Config, error) {
+	cfg := Config{}
+
+	if err := yaml.Unmarshal(data, &cfg); err != nil {
+		return nil, err
+	}
+
+	return &cfg, nil
+}
+
+func FromString(str string) (*Config, error) {
+	return FromBytes([]byte(str))
+}
+
+func FromFile(filename string) (*Config, error) {
+	data, err := ioutil.ReadFile(filename)
+	if err != nil {
+		return nil, err
+	}
+
+	return FromBytes(data)
+}

+ 7 - 0
config/homeserver.go

@@ -0,0 +1,7 @@
+package config
+
+type homeserver struct {
+	Address        string `yaml:"address"`
+	Domain         string `yaml:"domain"`
+	StatusEndpoint string `yaml:"status_endpoint"`
+}

+ 4 - 1
go.mod

@@ -2,6 +2,9 @@ module gitlab.com/beeper/discord
 
 go 1.17
 
-require github.com/alecthomas/kong v0.2.18
+require (
+	github.com/alecthomas/kong v0.2.18
+	gopkg.in/yaml.v2 v2.4.0
+)
 
 require github.com/pkg/errors v0.9.1 // indirect

+ 7 - 0
go.sum

@@ -1,12 +1,19 @@
 github.com/alecthomas/kong v0.2.18 h1:H05f55eRO5f9gusObxgjpqKtozJNvniqMTuOPnf+2SQ=
 github.com/alecthomas/kong v0.2.18/go.mod h1:ka3VZ8GZNPXv9Ov+j4YNLkI8mTuhXyr/0ktSlqIydQQ=
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
 gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=