Creating circleci job to just lint and vet code
This commit is contained in:
26
config.go
26
config.go
@@ -13,10 +13,12 @@ import (
|
||||
"github.com/naoina/toml/ast"
|
||||
)
|
||||
|
||||
// Duration just wraps time.Duration
|
||||
type Duration struct {
|
||||
time.Duration
|
||||
}
|
||||
|
||||
// UnmarshalTOML parses the duration from the TOML config file
|
||||
func (d *Duration) UnmarshalTOML(b []byte) error {
|
||||
dur, err := time.ParseDuration(string(b[1 : len(b)-1]))
|
||||
if err != nil {
|
||||
@@ -28,6 +30,9 @@ func (d *Duration) UnmarshalTOML(b []byte) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Config specifies the URL/user/password for the database that telegraf
|
||||
// will be logging to, as well as all the plugins that the user has
|
||||
// specified
|
||||
type Config struct {
|
||||
URL string
|
||||
Username string
|
||||
@@ -41,10 +46,12 @@ type Config struct {
|
||||
plugins map[string]*ast.Table
|
||||
}
|
||||
|
||||
// Plugins returns the configured plugins as a map of name -> plugin toml
|
||||
func (c *Config) Plugins() map[string]*ast.Table {
|
||||
return c.plugins
|
||||
}
|
||||
|
||||
// ConfiguredPlugin containing a name, interval, and drop/pass prefix lists
|
||||
type ConfiguredPlugin struct {
|
||||
Name string
|
||||
|
||||
@@ -54,6 +61,7 @@ type ConfiguredPlugin struct {
|
||||
Interval time.Duration
|
||||
}
|
||||
|
||||
// ShouldPass returns true if the metric should pass, false if should drop
|
||||
func (cp *ConfiguredPlugin) ShouldPass(measurement string) bool {
|
||||
if cp.Pass != nil {
|
||||
for _, pat := range cp.Pass {
|
||||
@@ -78,6 +86,7 @@ func (cp *ConfiguredPlugin) ShouldPass(measurement string) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
// ApplyAgent loads the toml config into the given interface
|
||||
func (c *Config) ApplyAgent(v interface{}) error {
|
||||
if c.agent != nil {
|
||||
return toml.UnmarshalTable(c.agent, v)
|
||||
@@ -86,6 +95,9 @@ func (c *Config) ApplyAgent(v interface{}) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// ApplyPlugin takes defined plugin names and applies them to the given
|
||||
// interface, returning a ConfiguredPlugin object in the end that can
|
||||
// be inserted into a runningPlugin by the agent.
|
||||
func (c *Config) ApplyPlugin(name string, v interface{}) (*ConfiguredPlugin, error) {
|
||||
cp := &ConfiguredPlugin{Name: name}
|
||||
|
||||
@@ -137,10 +149,11 @@ func (c *Config) ApplyPlugin(name string, v interface{}) (*ConfiguredPlugin, err
|
||||
return cp, nil
|
||||
}
|
||||
|
||||
// PluginsDeclared returns the name of all plugins declared in the config.
|
||||
func (c *Config) PluginsDeclared() []string {
|
||||
var plugins []string
|
||||
|
||||
for name, _ := range c.plugins {
|
||||
for name := range c.plugins {
|
||||
plugins = append(plugins, name)
|
||||
}
|
||||
|
||||
@@ -149,12 +162,14 @@ func (c *Config) PluginsDeclared() []string {
|
||||
return plugins
|
||||
}
|
||||
|
||||
// DefaultConfig returns an empty default configuration
|
||||
func DefaultConfig() *Config {
|
||||
return &Config{}
|
||||
}
|
||||
|
||||
var ErrInvalidConfig = errors.New("invalid configuration")
|
||||
var errInvalidConfig = errors.New("invalid configuration")
|
||||
|
||||
// LoadConfig loads the given config file and returns a *Config pointer
|
||||
func LoadConfig(path string) (*Config, error) {
|
||||
data, err := ioutil.ReadFile(path)
|
||||
if err != nil {
|
||||
@@ -173,7 +188,7 @@ func LoadConfig(path string) (*Config, error) {
|
||||
for name, val := range tbl.Fields {
|
||||
subtbl, ok := val.(*ast.Table)
|
||||
if !ok {
|
||||
return nil, ErrInvalidConfig
|
||||
return nil, errInvalidConfig
|
||||
}
|
||||
|
||||
switch name {
|
||||
@@ -192,6 +207,8 @@ func LoadConfig(path string) (*Config, error) {
|
||||
return c, nil
|
||||
}
|
||||
|
||||
// ListTags returns a string of tags specified in the config,
|
||||
// line-protocol style
|
||||
func (c *Config) ListTags() string {
|
||||
var tags []string
|
||||
|
||||
@@ -271,12 +288,13 @@ database = "telegraf" # required.
|
||||
|
||||
`
|
||||
|
||||
// PrintSampleConfig prints the sample config!
|
||||
func PrintSampleConfig() {
|
||||
fmt.Printf(header)
|
||||
|
||||
var names []string
|
||||
|
||||
for name, _ := range plugins.Plugins {
|
||||
for name := range plugins.Plugins {
|
||||
names = append(names, name)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user