示例#1
0
// Setup creates a new middleware with the given configuration
func Setup(c *setup.Controller) (mid middleware.Middleware, err error) {
	var config *Config

	config, err = parseSearch(c)
	if err != nil {
		panic(err)
	}

	index, err := NewIndexer(config.Engine, indexer.Config{
		HostName:       config.HostName,
		IndexDirectory: config.IndexDirectory,
	})

	if err != nil {
		panic(err)
	}

	ppl, err := NewPipeline(config, index)

	if err != nil {
		panic(err)
	}

	c.Startup = append(c.Startup, func() error {
		return ScanToPipe(c.Root, config, ppl, index)
	})

	mid = func(next middleware.Handler) middleware.Handler {
		return Handler(next, config, index, ppl)
	}

	return
}
示例#2
0
// 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
	}

	// 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.Startup = append(c.Startup, func() error {
				return repo.Pull()
			})

			webhook := &WebHook{Repo: repo}
			return func(next middleware.Handler) middleware.Handler {
				webhook.Next = next
				return webhook
			}, nil

		} else {
			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, err
}