Compare commits
4 commits
b8fc873850
...
c73dfc0d3a
| Author | SHA1 | Date | |
|---|---|---|---|
| c73dfc0d3a | |||
| 8a069859ea | |||
| c703a26c10 | |||
| 25ed67b2e9 |
16 changed files with 72 additions and 56 deletions
|
|
@ -75,6 +75,6 @@ tasks:
|
||||||
sources:
|
sources:
|
||||||
- '**/*.go'
|
- '**/*.go'
|
||||||
generates:
|
generates:
|
||||||
- build/lenore
|
- build/combluotion
|
||||||
cmds:
|
cmds:
|
||||||
- go build -o build/lenore cmd/lenore/main.go
|
- go build -o build/combluotion cmd/combluotion/main.go
|
||||||
|
|
|
||||||
8
app.go
8
app.go
|
|
@ -1,13 +1,13 @@
|
||||||
package lenore
|
package combluotion
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"codeberg.org/danjones000/lenore/config"
|
"codeberg.org/danjones000/combluotion/config"
|
||||||
_ "codeberg.org/danjones000/lenore/imports"
|
_ "codeberg.org/danjones000/combluotion/imports"
|
||||||
"codeberg.org/danjones000/lenore/store"
|
"codeberg.org/danjones000/combluotion/store"
|
||||||
vocab "github.com/go-ap/activitypub"
|
vocab "github.com/go-ap/activitypub"
|
||||||
"github.com/go-ap/client"
|
"github.com/go-ap/client"
|
||||||
boxap "github.com/go-ap/fedbox/activitypub"
|
boxap "github.com/go-ap/fedbox/activitypub"
|
||||||
|
|
|
||||||
18
app_test.go
18
app_test.go
|
|
@ -1,11 +1,11 @@
|
||||||
package lenore
|
package combluotion
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"codeberg.org/danjones000/lenore/config"
|
"codeberg.org/danjones000/combluotion/config"
|
||||||
"codeberg.org/danjones000/lenore/internal/testmocks"
|
"codeberg.org/danjones000/combluotion/internal/testmocks"
|
||||||
vocab "github.com/go-ap/activitypub"
|
vocab "github.com/go-ap/activitypub"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
@ -22,7 +22,7 @@ func TestDefaultEnvironment(t *testing.T) {
|
||||||
a, er := NewApp("0.0.0", c, testmocks.GetStore())
|
a, er := NewApp("0.0.0", c, testmocks.GetStore())
|
||||||
assert.NoError(t, er)
|
assert.NoError(t, er)
|
||||||
if assert.NotNil(t, a) {
|
if assert.NotNil(t, a) {
|
||||||
assert.Equal(t, config.DEV, a.Environment())
|
assert.Equal(t, config.Dev, a.Environment())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -31,11 +31,11 @@ func TestGivenEnvironment(t *testing.T) {
|
||||||
given config.Env
|
given config.Env
|
||||||
exp config.Env
|
exp config.Env
|
||||||
}{
|
}{
|
||||||
{config.DEV, config.DEV},
|
{config.Dev, config.Dev},
|
||||||
{config.PROD, config.PROD},
|
{config.Prod, config.Prod},
|
||||||
{config.QA, config.QA},
|
{config.Qa, config.Qa},
|
||||||
{config.Env("foo"), config.DEV},
|
{config.Env("foo"), config.Dev},
|
||||||
{config.Env("✨"), config.DEV},
|
{config.Env("✨"), config.Dev},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, c := range cases {
|
for _, c := range cases {
|
||||||
|
|
|
||||||
|
|
@ -6,20 +6,22 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"codeberg.org/danjones000/lenore"
|
"codeberg.org/danjones000/combluotion"
|
||||||
"codeberg.org/danjones000/lenore/config"
|
"codeberg.org/danjones000/combluotion/config"
|
||||||
"codeberg.org/danjones000/lenore/store"
|
"codeberg.org/danjones000/combluotion/store"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
conf, err := config.LoadFromToml(getTomlFile())
|
f := getTomlFile()
|
||||||
|
defer os.Remove(f)
|
||||||
|
conf, err := config.LoadFromToml(f)
|
||||||
quitErr(err)
|
quitErr(err)
|
||||||
fmt.Printf("%+v\n", conf)
|
fmt.Printf("%+v\n", conf)
|
||||||
|
|
||||||
db, err := store.MakeStore(conf.Conn.Store, conf)
|
db, err := store.MakeStore(conf.Conn.Store, conf)
|
||||||
quitErr(err)
|
quitErr(err)
|
||||||
|
|
||||||
app, err := lenore.NewApp(config.Version, conf, db)
|
app, err := combluotion.NewApp(config.Version, conf, db)
|
||||||
quitErr(err)
|
quitErr(err)
|
||||||
|
|
||||||
fmt.Println(app)
|
fmt.Println(app)
|
||||||
|
|
@ -28,6 +30,7 @@ func main() {
|
||||||
fmt.Println(string(out))
|
fmt.Println(string(out))
|
||||||
fmt.Println(serv.ID)
|
fmt.Println(serv.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
func quitErr(err error) {
|
func quitErr(err error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
|
|
@ -36,9 +39,7 @@ func quitErr(err error) {
|
||||||
|
|
||||||
func getTomlFile() string {
|
func getTomlFile() string {
|
||||||
tmp, err := os.CreateTemp("", "*.toml")
|
tmp, err := os.CreateTemp("", "*.toml")
|
||||||
if err != nil {
|
quitErr(err)
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
defer tmp.Close()
|
defer tmp.Close()
|
||||||
|
|
||||||
p := tmp.Name()
|
p := tmp.Name()
|
||||||
|
|
@ -8,12 +8,12 @@ import (
|
||||||
|
|
||||||
func TestEnvDefaultsToDev(t *testing.T) {
|
func TestEnvDefaultsToDev(t *testing.T) {
|
||||||
c := Config{}
|
c := Config{}
|
||||||
assert.Equal(t, DEV, c.Environment())
|
assert.Equal(t, Dev, c.Environment())
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestInvalidEnvReturnsDev(t *testing.T) {
|
func TestInvalidEnvReturnsDev(t *testing.T) {
|
||||||
c := Config{Env: Env("foobar")}
|
c := Config{Env: Env("foobar")}
|
||||||
assert.Equal(t, DEV, c.Environment())
|
assert.Equal(t, Dev, c.Environment())
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestValidEnvReturnsCorrect(t *testing.T) {
|
func TestValidEnvReturnsCorrect(t *testing.T) {
|
||||||
|
|
|
||||||
|
|
@ -3,24 +3,24 @@ package config
|
||||||
type Env string
|
type Env string
|
||||||
|
|
||||||
const (
|
const (
|
||||||
DEV Env = "dev"
|
Dev Env = "dev"
|
||||||
PROD Env = "prod"
|
Prod Env = "prod"
|
||||||
QA Env = "qa"
|
Qa Env = "qa"
|
||||||
TEST Env = "test"
|
Test Env = "test"
|
||||||
)
|
)
|
||||||
|
|
||||||
var Envs = [...]Env{
|
var Envs = [...]Env{
|
||||||
DEV,
|
Dev,
|
||||||
PROD,
|
Prod,
|
||||||
QA,
|
Qa,
|
||||||
TEST,
|
Test,
|
||||||
}
|
}
|
||||||
|
|
||||||
func ValidEnvOrDev(e Env) Env {
|
func ValidEnvOrDev(e Env) Env {
|
||||||
if ValidEnv(e) {
|
if ValidEnv(e) {
|
||||||
return e
|
return e
|
||||||
}
|
}
|
||||||
return DEV
|
return Dev
|
||||||
}
|
}
|
||||||
|
|
||||||
func ValidEnv(env Env) bool {
|
func ValidEnv(env Env) bool {
|
||||||
|
|
|
||||||
|
|
@ -21,10 +21,10 @@ func TestValidEnv(t *testing.T) {
|
||||||
e Env
|
e Env
|
||||||
exp bool
|
exp bool
|
||||||
}{
|
}{
|
||||||
{DEV, true},
|
{Dev, true},
|
||||||
{PROD, true},
|
{Prod, true},
|
||||||
{QA, true},
|
{Qa, true},
|
||||||
{TEST, true},
|
{Test, true},
|
||||||
{Env("foobar"), false},
|
{Env("foobar"), false},
|
||||||
{Env(""), false},
|
{Env(""), false},
|
||||||
{Env("✨"), false},
|
{Env("✨"), false},
|
||||||
|
|
@ -42,13 +42,13 @@ func TestValidEnvOrDev(t *testing.T) {
|
||||||
give Env
|
give Env
|
||||||
exp Env
|
exp Env
|
||||||
}{
|
}{
|
||||||
{DEV, DEV},
|
{Dev, Dev},
|
||||||
{PROD, PROD},
|
{Prod, Prod},
|
||||||
{QA, QA},
|
{Qa, Qa},
|
||||||
{TEST, TEST},
|
{Test, Test},
|
||||||
{Env("foobar"), DEV},
|
{Env("foobar"), Dev},
|
||||||
{Env(""), DEV},
|
{Env(""), Dev},
|
||||||
{Env("✨"), DEV},
|
{Env("✨"), Dev},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, c := range cases {
|
for _, c := range cases {
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ func TestLoadTomlMissing(t *testing.T) {
|
||||||
|
|
||||||
func TestLoadTomlGood(t *testing.T) {
|
func TestLoadTomlGood(t *testing.T) {
|
||||||
tmp, _ := os.CreateTemp("", "*.toml")
|
tmp, _ := os.CreateTemp("", "*.toml")
|
||||||
|
defer os.Remove(tmp.Name())
|
||||||
defer tmp.Close()
|
defer tmp.Close()
|
||||||
fmt.Fprintln(tmp, `name = "Cool"`)
|
fmt.Fprintln(tmp, `name = "Cool"`)
|
||||||
fmt.Fprintln(tmp, "[conn]")
|
fmt.Fprintln(tmp, "[conn]")
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
package config
|
package config
|
||||||
|
|
||||||
const (
|
const (
|
||||||
AppName string = "lenore"
|
AppName string = "combluotion"
|
||||||
Version string = "0.0.1"
|
Version string = "0.0.1"
|
||||||
Url string = "https://codeberg.org/danjones000/lenore"
|
Url string = "https://codeberg.org/danjones000/combluotion"
|
||||||
DevUrl string = "https://codeberg.org/danjones000"
|
DevUrl string = "https://codeberg.org/danjones000"
|
||||||
Email string = "danjones@goodevilgenius.org"
|
Email string = "danjones@goodevilgenius.org"
|
||||||
UserAgent string = AppName + "/" + Version + " (" + Url + "; " + Email + ")"
|
UserAgent string = AppName + "/" + Version + " (" + Url + "; " + Email + ")"
|
||||||
|
|
|
||||||
2
go.mod
2
go.mod
|
|
@ -1,4 +1,4 @@
|
||||||
module codeberg.org/danjones000/lenore
|
module codeberg.org/danjones000/combluotion
|
||||||
|
|
||||||
go 1.23.1
|
go 1.23.1
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
package imports
|
package imports
|
||||||
|
|
||||||
import (
|
import (
|
||||||
_ "codeberg.org/danjones000/lenore/store/sqlite"
|
_ "codeberg.org/danjones000/combluotion/store/sqlite"
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package testmocks
|
package testmocks
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeberg.org/danjones000/lenore/config"
|
"codeberg.org/danjones000/combluotion/config"
|
||||||
vocab "github.com/go-ap/activitypub"
|
vocab "github.com/go-ap/activitypub"
|
||||||
"github.com/go-ap/filters"
|
"github.com/go-ap/filters"
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"codeberg.org/danjones000/lenore/config"
|
"codeberg.org/danjones000/combluotion/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
var ErrNoFactory = errors.New("unknown factory")
|
var ErrNoFactory = errors.New("unknown factory")
|
||||||
|
|
@ -26,6 +26,10 @@ func GetFactory(name string) StoreFactory {
|
||||||
}
|
}
|
||||||
|
|
||||||
func MakeStore(name string, conf config.Config) (Store, error) {
|
func MakeStore(name string, conf config.Config) (Store, error) {
|
||||||
|
if name == "" {
|
||||||
|
name = conf.Conn.Store
|
||||||
|
}
|
||||||
|
|
||||||
f, ok := factories[name]
|
f, ok := factories[name]
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("%w: %s", ErrNoFactory, name)
|
return nil, fmt.Errorf("%w: %s", ErrNoFactory, name)
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@ package store
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"codeberg.org/danjones000/lenore/config"
|
"codeberg.org/danjones000/combluotion/config"
|
||||||
"codeberg.org/danjones000/lenore/internal/testmocks"
|
"codeberg.org/danjones000/combluotion/internal/testmocks"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -45,3 +45,13 @@ func TestMakeStoreNoError(t *testing.T) {
|
||||||
assert.NotNil(t, s)
|
assert.NotNil(t, s)
|
||||||
assert.NoError(t, e)
|
assert.NoError(t, e)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestMakeStoreNoName(t *testing.T) {
|
||||||
|
AddFactory("mock", f)
|
||||||
|
defer delete(factories, "mock")
|
||||||
|
s, e := MakeStore("", config.Config{
|
||||||
|
Conn: config.ConnSettings{Store: "mock"},
|
||||||
|
})
|
||||||
|
assert.NotNil(t, s)
|
||||||
|
assert.NoError(t, e)
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
package sqlite
|
package sqlite
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeberg.org/danjones000/lenore/config"
|
"codeberg.org/danjones000/combluotion/config"
|
||||||
"codeberg.org/danjones000/lenore/store"
|
"codeberg.org/danjones000/combluotion/store"
|
||||||
"github.com/go-ap/storage-sqlite"
|
"github.com/go-ap/storage-sqlite"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package store
|
package store
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeberg.org/danjones000/lenore/config"
|
"codeberg.org/danjones000/combluotion/config"
|
||||||
st "github.com/go-ap/fedbox/storage"
|
st "github.com/go-ap/fedbox/storage"
|
||||||
proc "github.com/go-ap/processing"
|
proc "github.com/go-ap/processing"
|
||||||
"github.com/openshift/osin"
|
"github.com/openshift/osin"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue