// Git configures a new Git service routine. func Setup(c *setup.Controller) (middleware.Middleware, error) { git, err := parse(c) if err != nil { return nil, err } // repos configured with webhooks var hookRepos []*Repo // loop through all repos and and start monitoring for i := range git { repo := git.Repo(i) // If a HookUrl is set, we switch to event based pulling. // Install the url handler if repo.HookUrl != "" { c.OncePerServerBlock(func() error { c.Startup = append(c.Startup, func() error { return repo.Pull() }) return nil }) hookRepos = append(hookRepos, repo) } else { c.OncePerServerBlock(func() error { c.Startup = append(c.Startup, func() error { // Start service routine in background Start(repo) // Do a pull right away to return error return repo.Pull() }) return nil }) } } // if there are repo(s) with webhook // return handler if len(hookRepos) > 0 { webhook := &WebHook{Repos: hookRepos} return func(next middleware.Handler) middleware.Handler { webhook.Next = next return webhook }, err } return nil, err }
// Setup creates a caddy middleware func Setup(c *setup.Controller) (middleware.Middleware, error) { repoPath, err := parseRepo(c) if err != nil { return nil, err } paths := []string{"/api"} // Runs on Caddy startup, useful for services or other setups. c.Startup = append(c.Startup, func() error { fmt.Println("api middleware is initiated") return nil }) // Runs on Caddy shutdown, useful for cleanups. c.Shutdown = append(c.Shutdown, func() error { fmt.Println("api middleware is cleaning up") return nil }) return func(next middleware.Handler) middleware.Handler { h := &handler{ Paths: paths, Next: next, } repo := api.SimpleRepo(repoPath) server := api.NewServer(repo) h.apihandler = server return h }, nil }