drone-yaml-server/plugin/plugin.go

69 lines
1.3 KiB
Go

// Copyright 2019 the Drone Authors. All rights reserved.
// Use of this source code is governed by the Blue Oak Model License
// that can be found in the LICENSE file.
package plugin
import (
"context"
"git.entr0py.de/garionion/drone-yaml-server/repo"
"github.com/sirupsen/logrus"
"time"
"github.com/drone/drone-go/drone"
"github.com/drone/drone-go/plugin/config"
)
// TODO replace or remove
const defaultPipeline = `
kind: pipeline
name: default
steps:
- name: build
image: golang
commands:
- go build
- go test -v
`
// New returns a new config plugin.
func New(repository, branch, token string, frequency time.Duration) config.Plugin {
repos := repo.Repos{&repo.Repo{
URL: repository,
Token: token,
Branch: branch,
Frequency: frequency,
}}
repos.Init()
return &plugin{
repos: repos,
}
}
type plugin struct {
repos repo.Repos
}
func (p *plugin) Find(ctx context.Context, req *config.Request) (*drone.Config, error) {
if req.Repo.Namespace == "some-organization" {
return &drone.Config{
Data: defaultPipeline,
}, nil
}
configuration, err := p.repos.GetConfiguration(req.Repo.HTTPURL)
if err != nil {
logrus.Error(err)
return nil, err
}
if configuration != "" {
return &drone.Config{
Data: configuration,
}, nil
}
return nil, nil
}