grim/convey

Add a .reviewboardrc file

2022-03-26, Gary Kramlich
8fea0c778f8e
Add a .reviewboardrc file
// Convey
// Copyright 2016-2018 Gary Kramlich <grim@reaperworld.com>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
// Package config defines the basic config format.
package config
import (
"fmt"
log "github.com/sirupsen/logrus"
"keep.imfreedom.org/grim/convey/runtime"
)
// Config represents a full convey configuration.
type Config struct {
Tasks map[string]runtime.Task
Plans map[string]runtime.Plan
MetaPlans map[string]runtime.MetaPlan
Environment []string
}
// Valid returns an error if the command is valid or not.
func (c *Config) Valid() error {
for name, task := range c.Tasks {
if err := task.Valid(); err != nil {
return fmt.Errorf("task %s : %s", name, err.Error())
}
if err := task.Deprecated(); err != nil {
log.Warnf("warning: task %s: %s", name, err.Error())
}
}
return nil
}
// HasPlans checks if the given plans exist
func (c *Config) HasPlans(plans []string) error {
for _, name := range plans {
if _, found := c.Plans[name]; !found {
if _, found := c.MetaPlans[name]; !found {
return fmt.Errorf("no plan or metaplan named %q found", name)
}
}
}
return nil
}