69 lines
1.3 KiB
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
|
|
}
|