From 0efd1b3902a9ce56de8da5633ebeed2776490506 Mon Sep 17 00:00:00 2001 From: Don Date: Fri, 11 Oct 2019 11:38:22 -0700 Subject: [PATCH] Add opinionated Plugin interface --- pkg/plugin/interfaces.go | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 pkg/plugin/interfaces.go diff --git a/pkg/plugin/interfaces.go b/pkg/plugin/interfaces.go new file mode 100644 index 0000000..a98c5ca --- /dev/null +++ b/pkg/plugin/interfaces.go @@ -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 + } +)