コード例 #1
0
ファイル: setup.go プロジェクト: karasz/caddy-git
// 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
}
コード例 #2
0
ファイル: ape.go プロジェクト: groob/ape
// 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
}