+58
appview/pipelines/pipelines.go
+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
+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
+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
+
}