github.com/billybanfield/evergreen@v0.0.0-20170525200750-eeee692790f7/plugin/builtin/archive/archive_plugin.go (about)

     1  package archive
     2  
     3  import (
     4  	"github.com/evergreen-ci/evergreen/plugin"
     5  )
     6  
     7  func init() {
     8  	plugin.Publish(&ArchivePlugin{})
     9  }
    10  
    11  const (
    12  	TarGzPackCmdName   = "targz_pack"
    13  	TarGzUnpackCmdName = "targz_unpack"
    14  	ArchivePluginName  = "archive"
    15  )
    16  
    17  // ArchivePlugin holds commands for creating archives and extracting
    18  // their contents during a task.
    19  type ArchivePlugin struct{}
    20  
    21  // Name returns the name of the plugin. Fulfills the Plugin interface.
    22  func (self *ArchivePlugin) Name() string {
    23  	return ArchivePluginName
    24  }
    25  
    26  // NewCommand takes a command name as a string and returns the requested command,
    27  // or an error if the command does not exist. Fulfills the Plugin interface.
    28  func (self *ArchivePlugin) NewCommand(cmdName string) (plugin.Command, error) {
    29  	if cmdName == TarGzPackCmdName {
    30  		return &TarGzPackCommand{}, nil
    31  	}
    32  	if cmdName == TarGzUnpackCmdName {
    33  		return &TarGzUnpackCommand{}, nil
    34  	}
    35  	return nil, &plugin.ErrUnknownCommand{cmdName}
    36  }