Monorepo for Tangled tangled.org

appview: add pipelines router

Signed-off-by: oppiliappan <me@oppi.li>

oppi.li 6bf1f194 9bea45fe

verified
Changed files
+81
appview
pipelines
state
+58
appview/pipelines/pipelines.go
··· 1 + package pipelines 2 + 3 + import ( 4 + "log/slog" 5 + "net/http" 6 + 7 + "tangled.sh/tangled.sh/core/appview/config" 8 + "tangled.sh/tangled.sh/core/appview/db" 9 + "tangled.sh/tangled.sh/core/appview/idresolver" 10 + "tangled.sh/tangled.sh/core/appview/oauth" 11 + "tangled.sh/tangled.sh/core/appview/pages" 12 + "tangled.sh/tangled.sh/core/appview/reporesolver" 13 + "tangled.sh/tangled.sh/core/eventconsumer" 14 + "tangled.sh/tangled.sh/core/log" 15 + "tangled.sh/tangled.sh/core/rbac" 16 + 17 + "github.com/go-chi/chi/v5" 18 + "github.com/posthog/posthog-go" 19 + ) 20 + 21 + type Pipelines struct { 22 + repoResolver *reporesolver.RepoResolver 23 + idResolver *idresolver.Resolver 24 + config *config.Config 25 + oauth *oauth.OAuth 26 + pages *pages.Pages 27 + spindlestream *eventconsumer.Consumer 28 + db *db.DB 29 + enforcer *rbac.Enforcer 30 + posthog posthog.Client 31 + Logger *slog.Logger 32 + } 33 + 34 + func New( 35 + oauth *oauth.OAuth, 36 + repoResolver *reporesolver.RepoResolver, 37 + pages *pages.Pages, 38 + spindlestream *eventconsumer.Consumer, 39 + idResolver *idresolver.Resolver, 40 + db *db.DB, 41 + config *config.Config, 42 + posthog posthog.Client, 43 + enforcer *rbac.Enforcer, 44 + ) *Pipelines { 45 + logger := log.New("pipelines") 46 + 47 + return &Pipelines{oauth: oauth, 48 + repoResolver: repoResolver, 49 + pages: pages, 50 + idResolver: idResolver, 51 + config: config, 52 + spindlestream: spindlestream, 53 + db: db, 54 + posthog: posthog, 55 + enforcer: enforcer, 56 + Logger: logger, 57 + } 58 + }
+16
appview/pipelines/router.go
··· 1 + package pipelines 2 + 3 + import ( 4 + "net/http" 5 + 6 + "github.com/go-chi/chi/v5" 7 + "tangled.sh/tangled.sh/core/appview/middleware" 8 + ) 9 + 10 + func (p *Pipelines) Router(mw *middleware.Middleware) http.Handler { 11 + r := chi.NewRouter() 12 + r.Get("/", p.Index) 13 + r.Get("/{pipeline}/workflow/{workflow}", p.Workflow) 14 + 15 + return r 16 + }
+7
appview/state/router.go
··· 9 9 "tangled.sh/tangled.sh/core/appview/issues" 10 10 "tangled.sh/tangled.sh/core/appview/middleware" 11 11 oauthhandler "tangled.sh/tangled.sh/core/appview/oauth/handler" 12 + "tangled.sh/tangled.sh/core/appview/pipelines" 12 13 "tangled.sh/tangled.sh/core/appview/pulls" 13 14 "tangled.sh/tangled.sh/core/appview/repo" 14 15 "tangled.sh/tangled.sh/core/appview/settings" ··· 76 77 r.Mount("/", s.RepoRouter(mw)) 77 78 r.Mount("/issues", s.IssuesRouter(mw)) 78 79 r.Mount("/pulls", s.PullsRouter(mw)) 80 + r.Mount("/pipelines", s.PipelinesRouter(mw)) 79 81 80 82 // These routes get proxied to the knot 81 83 r.Get("/info/refs", s.InfoRefs) ··· 202 204 repo := repo.New(s.oauth, s.repoResolver, s.pages, s.spindlestream, s.idResolver, s.db, s.config, s.posthog, s.enforcer) 203 205 return repo.Router(mw) 204 206 } 207 + 208 + func (s *State) PipelinesRouter(mw *middleware.Middleware) http.Handler { 209 + pipes := pipelines.New(s.oauth, s.repoResolver, s.pages, s.spindlestream, s.idResolver, s.db, s.config, s.posthog, s.enforcer) 210 + return pipes.Router(mw) 211 + }