package command import ( packersdk "github.com/hashicorp/packer-plugin-sdk/packer" // Previously core-bundled components, split into their own plugins but // still vendored with Packer for now. Importing as library instead of // forcing use of packer init, until packer v1.8.0 exoscaleimportpostprocessor "github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import" amazonchrootbuilder "github.com/hashicorp/packer-plugin-amazon/builder/chroot" amazonebsbuilder "github.com/hashicorp/packer-plugin-amazon/builder/ebs" amazonebssurrogatebuilder "github.com/hashicorp/packer-plugin-amazon/builder/ebssurrogate" amazonebsvolumebuilder "github.com/hashicorp/packer-plugin-amazon/builder/ebsvolume" amazoninstancebuilder "github.com/hashicorp/packer-plugin-amazon/builder/instance" amazonamidatasource "github.com/hashicorp/packer-plugin-amazon/datasource/ami" amazonsecretsmanagerdatasource "github.com/hashicorp/packer-plugin-amazon/datasource/secretsmanager" anazibimportpostprocessor "github.com/hashicorp/packer-plugin-amazon/post-processor/import" dockerbuilder "github.com/hashicorp/packer-plugin-docker/builder/docker" dockerimportpostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-import" dockerpushpostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-push" dockersavepostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-save" dockertagpostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag" ) // VendoredDatasources are datasource components that were once bundled with the // Packer core, but are now being imported from their counterpart plugin repos var VendoredDatasources = map[string]packersdk.Datasource{ "amazon-ami": new(amazonamidatasource.Datasource), "amazon-secretsmanager": new(amazonsecretsmanagerdatasource.Datasource), } // VendoredBuilders are builder components that were once bundled with the // Packer core, but are now being imported from their counterpart plugin repos var VendoredBuilders = map[string]packersdk.Builder{ "docker": new(dockerbuilder.Builder), "amazon-ebs": new(amazonebsbuilder.Builder), "amazon-chroot": new(amazonchrootbuilder.Builder), "amazon-ebssurrogate": new(amazonebssurrogatebuilder.Builder), "amazon-ebsvolume": new(amazonebsvolumebuilder.Builder), "amazon-instance": new(amazoninstancebuilder.Builder), } // VendoredProvisioners are provisioner components that were once bundled with the // Packer core, but are now being imported from their counterpart plugin repos var VendoredProvisioners = map[string]packersdk.Provisioner{} // VendoredPostProcessors are post-processor components that were once bundled with the // Packer core, but are now being imported from their counterpart plugin repos var VendoredPostProcessors = map[string]packersdk.PostProcessor{ "docker-import": new(dockerimportpostprocessor.PostProcessor), "docker-push": new(dockerpushpostprocessor.PostProcessor), "docker-save": new(dockersavepostprocessor.PostProcessor), "docker-tag": new(dockertagpostprocessor.PostProcessor), "exoscale-import": new(exoscaleimportpostprocessor.PostProcessor), "amazon-import": new(anazibimportpostprocessor.PostProcessor), } // Upon init lets load up any plugins that were vendored manually into the default // set of plugins. func init() { for k, v := range VendoredDatasources { if _, ok := Datasources[k]; ok { continue } Datasources[k] = v } for k, v := range VendoredBuilders { if _, ok := Builders[k]; ok { continue } Builders[k] = v } for k, v := range VendoredProvisioners { if _, ok := Provisioners[k]; ok { continue } Provisioners[k] = v } for k, v := range VendoredPostProcessors { if _, ok := PostProcessors[k]; ok { continue } PostProcessors[k] = v } }