Add opinionated Plugin interface

This commit is contained in:
Don 2019-10-11 11:38:22 -07:00
parent d893f6373c
commit 0efd1b3902
1 changed files with 34 additions and 0 deletions

34
pkg/plugin/interfaces.go Normal file
View File

@ -0,0 +1,34 @@
// Copyright (c) 2019, the Drone Plugins project authors.
// Please see the AUTHORS file for details. All rights reserved.
// Use of this source code is governed by an Apache 2.0 license that can be
// found in the LICENSE file.
package plugin
type (
// Plugin is an interface for a Drone plugin written in Go.
//
// This is a higly opinionated interface for what a Plugin should do. Its
// not required that a plugin author follow it.
Plugin interface {
// Validate checks the inputs to the Plugin and verifies that the
// configuration is correct before executing.
//
// An error is returned if there are any issues with the current
// configuration, such as missing information or files not being
// present. A Plugin may choose to populate additional information to
// ensure a successful execution, for example if a URL is parsed
// successfully it can be stored off for later use.
//
// Validate needs to be called before Exec.
Validate() error
// Exec runs the plugin in the current configuration.
//
// An error is returned if the Plugin did not run successfully that
// describes the runtime error.
//
// Exec needs to be called after Validate.
Exec() error
}
)