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 }