From 0fe6f5070eafb6ae463f3a7eeffc485e1b9e8d13 Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Sat, 14 Sep 2024 16:51:33 -0500 Subject: [PATCH 1/3] =?UTF-8?q?=F0=9F=9B=A0=20Code=20coverage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Taskfile.yml | 31 ++++++++++++++++++++++++++++++- build/.gitignore | 3 ++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/Taskfile.yml b/Taskfile.yml index 6b8852f..eb52f83 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -7,15 +7,44 @@ tasks: - task: test - task: build + ft: + desc: Format and test + cmds: + - task: fmt + - task: test + fmt: desc: Format go code + sources: + - '**/*.go' cmds: - go fmt ./... test: desc: Run unit tests + sources: + - '**/*.go' + generates: + - build/cover.out cmds: - - go test -race -cover ./... + - go test -race -cover -coverprofile build/cover.out ./... + + coverage-report: + desc: Build coverage report + deps: [test] + sources: + - build/cover.out + generates: + - build/cover.html + cmds: + - go tool cover -html=build/cover.out -o build/cover.html + + serve-report: + desc: Serve the coverage report + deps: [coverage-report] + cmds: + - ip addr list | grep inet + - php -S 0.0.0.0:3265 -t build build: desc: Build server binary diff --git a/build/.gitignore b/build/.gitignore index b1e2a80..d6b7ef3 100644 --- a/build/.gitignore +++ b/build/.gitignore @@ -1 +1,2 @@ -lenore +* +!.gitignore From 931f75500f303b1e337062f3c2f06891cd587f88 Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Sat, 14 Sep 2024 16:53:53 -0500 Subject: [PATCH 2/3] =?UTF-8?q?=E2=9C=A8=20Generate=20service=20dynamicall?= =?UTF-8?q?y?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.go | 15 +++++++++++---- cmd/lenore/main.go | 25 +++++-------------------- config/version.go | 10 ++++++++++ 3 files changed, 26 insertions(+), 24 deletions(-) create mode 100644 config/version.go diff --git a/app.go b/app.go index 6390de9..8cb5604 100644 --- a/app.go +++ b/app.go @@ -3,6 +3,7 @@ package lenore import ( "errors" "fmt" + "time" "codeberg.org/danjones000/lenore/config" "codeberg.org/danjones000/lenore/store" @@ -11,6 +12,10 @@ import ( boxap "github.com/go-ap/fedbox/activitypub" ) +func init() { + client.UserAgent = config.UserAgent +} + type App struct { conf config.Config self vocab.Service @@ -30,10 +35,12 @@ func NewApp(ver string, conf config.Config, db store.Store) (*App, error) { } selfIRI := boxap.DefaultServiceIRI(conf.BaseURL) - self, err := boxap.LoadActor(db, selfIRI) - if err != nil { - return nil, err - } + self := boxap.Self(selfIRI) + self.Name = vocab.DefaultNaturalLanguageValue(app.Name()) + self.AttributedTo = vocab.IRI(config.DevUrl) + self.Summary = vocab.DefaultNaturalLanguageValue("ActivityPub-powered reader") + self.Published = time.Now() + self.Updated = time.Now() app.self = self app.client = *client.New() diff --git a/cmd/lenore/main.go b/cmd/lenore/main.go index f879352..0f7d6be 100644 --- a/cmd/lenore/main.go +++ b/cmd/lenore/main.go @@ -4,44 +4,29 @@ package main import ( "fmt" - "time" "codeberg.org/danjones000/lenore" "codeberg.org/danjones000/lenore/config" - vocab "github.com/go-ap/activitypub" - boxap "github.com/go-ap/fedbox/activitypub" "github.com/go-ap/storage-sqlite" ) func main() { conf := config.Config{BaseURL: "http://localhost:4523/"} - sqlConf := sqlite.Config{Path: "storage"} - err := sqlite.Bootstrap(sqlConf) - if err != nil { - panic(err) - } db, err := sqlite.New(sqlConf) if err != nil { panic(err) } - serv := vocab.ServiceNew(boxap.DefaultServiceIRI(conf.BaseURL)) - serv.Name = vocab.DefaultNaturalLanguageValue("Lenore") - serv.Summary = vocab.DefaultNaturalLanguageValue("ActivityPub-powered reader") - serv.Published = time.Now() - serv.Updated = time.Now() - _, err = db.Save(serv) - if err != nil { - panic(err) - } - - app, err := lenore.NewApp("0.0.0", conf, db) + app, err := lenore.NewApp(config.Version, conf, db) if err != nil { panic(err) } fmt.Println(app) - fmt.Println(app.Service().ID) + serv := app.Service() + out, _ := serv.MarshalJSON() + fmt.Println(string(out)) + fmt.Println(serv.ID) } diff --git a/config/version.go b/config/version.go new file mode 100644 index 0000000..3731179 --- /dev/null +++ b/config/version.go @@ -0,0 +1,10 @@ +package config + +const ( + AppName string = "lenore" + Version string = "0.0.1" + Url string = "https://codeberg.org/danjones000/lenore" + DevUrl string = "https://codeberg.org/danjones000" + Email string = "danjones@goodevilgenius.org" + UserAgent string = AppName + "/" + Version + " (" + Url + "; " + Email + ")" +) From d6546e5ff979c56de3af36e8b55f0015528ccf82 Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Sat, 14 Sep 2024 17:34:47 -0500 Subject: [PATCH 3/3] =?UTF-8?q?=F0=9F=9B=A0=20Add=20static=20analysis?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Taskfile.yml | 35 +++++++++++++++++++++++++++++------ app.go | 2 +- app_test.go | 2 +- 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/Taskfile.yml b/Taskfile.yml index eb52f83..4a5c4ce 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -7,12 +7,6 @@ tasks: - task: test - task: build - ft: - desc: Format and test - cmds: - - task: fmt - - task: test - fmt: desc: Format go code sources: @@ -20,8 +14,37 @@ tasks: cmds: - go fmt ./... + vet: + desc: Vet go code + sources: + - '**/*.go' + cmds: + - go vet ./... + + critic: + desc: Critique go code + sources: + - '**/*.go' + cmds: + - gocritic check ./... + + staticcheck: + desc: Static check go code + sources: + - '**/*.go' + cmds: + - staticcheck ./... + + analyze: + desc: Do static analysis + deps: + - vet + - critic + - staticcheck + test: desc: Run unit tests + deps: [fmt, vet] sources: - '**/*.go' generates: diff --git a/app.go b/app.go index 8cb5604..6b33a8c 100644 --- a/app.go +++ b/app.go @@ -27,7 +27,7 @@ type App struct { func NewApp(ver string, conf config.Config, db store.Store) (*App, error) { if conf.BaseURL == "" { - return nil, errors.New("Missing BaseURL") + return nil, errors.New("missing BaseURL") } app := App{ version: ver, diff --git a/app_test.go b/app_test.go index 7bc0cac..426985e 100644 --- a/app_test.go +++ b/app_test.go @@ -14,7 +14,7 @@ func TestEmptyBaseURL(t *testing.T) { c := config.Config{} a, er := NewApp("0.0.0", c, testmocks.GetStore()) assert.Nil(t, a) - assert.EqualError(t, er, "Missing BaseURL") + assert.EqualError(t, er, "missing BaseURL") } func TestDefaultEnvironment(t *testing.T) {