From 3db40194af3f7041510d18d8034faabb82b9c6a2 Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Tue, 10 Nov 2020 14:48:06 -0800 Subject: [PATCH] version files --- builder/alicloud/version/version.go | 8 ++- builder/amazon/version/version.go | 13 +++++ builder/azure/version/version.go | 8 ++- builder/cloudstack/version/version.go | 13 +++++ builder/digitalocean/version/version.go | 13 +++++ builder/docker/version/version.go | 13 +++++ builder/file/version/version.go | 13 +++++ builder/googlecompute/version/version.go | 8 ++- builder/hcloud/version/version.go | 13 +++++ builder/hyperone/version/version.go | 13 +++++ builder/hyperv/version/version.go | 13 +++++ builder/jdcloud/version/version.go | 13 +++++ builder/linode/version/version.go | 8 ++- builder/lxc/version/version.go | 13 +++++ builder/lxd/version/version.go | 13 +++++ builder/ncloud/version/version.go | 13 +++++ builder/null/version/version.go | 13 +++++ builder/oneandone/version/version.go | 13 +++++ builder/openstack/version/version.go | 13 +++++ builder/oracle/version/version.go | 13 +++++ builder/osc/version/version.go | 13 +++++ builder/parallels/version/version.go | 13 +++++ builder/profitbricks/version/version.go | 13 +++++ builder/proxmox/version/version.go | 13 +++++ builder/qemu/version/version.go | 13 +++++ builder/scaleway/version/version.go | 8 ++- builder/tencentcloud/version/version.go | 13 +++++ builder/triton/version/version.go | 13 +++++ builder/ucloud/version/version.go | 8 ++- builder/vagrant/version/version.go | 13 +++++ builder/virtualbox/version/version.go | 13 +++++ builder/vmware/version/version.go | 13 +++++ builder/vsphere/version/version.go | 13 +++++ builder/yandex/version/version.go | 8 ++- helper/version/version.go | 57 ++++++++++++++----- .../exoscale-import/version/version.go | 8 ++- version/version.go | 8 +-- 37 files changed, 437 insertions(+), 43 deletions(-) create mode 100644 builder/amazon/version/version.go create mode 100644 builder/cloudstack/version/version.go create mode 100644 builder/digitalocean/version/version.go create mode 100644 builder/docker/version/version.go create mode 100644 builder/file/version/version.go create mode 100644 builder/hcloud/version/version.go create mode 100644 builder/hyperone/version/version.go create mode 100644 builder/hyperv/version/version.go create mode 100644 builder/jdcloud/version/version.go create mode 100644 builder/lxc/version/version.go create mode 100644 builder/lxd/version/version.go create mode 100644 builder/ncloud/version/version.go create mode 100644 builder/null/version/version.go create mode 100644 builder/oneandone/version/version.go create mode 100644 builder/openstack/version/version.go create mode 100644 builder/oracle/version/version.go create mode 100644 builder/osc/version/version.go create mode 100644 builder/parallels/version/version.go create mode 100644 builder/profitbricks/version/version.go create mode 100644 builder/proxmox/version/version.go create mode 100644 builder/qemu/version/version.go create mode 100644 builder/tencentcloud/version/version.go create mode 100644 builder/triton/version/version.go create mode 100644 builder/vagrant/version/version.go create mode 100644 builder/virtualbox/version/version.go create mode 100644 builder/vmware/version/version.go create mode 100644 builder/vsphere/version/version.go diff --git a/builder/alicloud/version/version.go b/builder/alicloud/version/version.go index 45ac500ca..beca8c69e 100644 --- a/builder/alicloud/version/version.go +++ b/builder/alicloud/version/version.go @@ -5,7 +5,9 @@ import ( packerVersion "github.com/hashicorp/packer/version" ) -var AlicloudPluginVersion = version.PluginVersion{ - Version: packerVersion.Version, - VersionPrerelease: packerVersion.VersionPrerelease, +var AlicloudPluginVersion *version.PluginVersion + +func init() { + AlicloudPluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) } diff --git a/builder/amazon/version/version.go b/builder/amazon/version/version.go new file mode 100644 index 000000000..86dee0981 --- /dev/null +++ b/builder/amazon/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var AWSPluginVersion *version.PluginVersion + +func init() { + AWSPluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/azure/version/version.go b/builder/azure/version/version.go index 9120955a8..b355acfee 100644 --- a/builder/azure/version/version.go +++ b/builder/azure/version/version.go @@ -5,7 +5,9 @@ import ( packerVersion "github.com/hashicorp/packer/version" ) -var AzurePluginVersion = version.PluginVersion{ - Version: packerVersion.Version, - VersionPrerelease: packerVersion.VersionPrerelease, +var AzurePluginVersion *version.PluginVersion + +func init() { + AzurePluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) } diff --git a/builder/cloudstack/version/version.go b/builder/cloudstack/version/version.go new file mode 100644 index 000000000..a41f3fa46 --- /dev/null +++ b/builder/cloudstack/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var CloudstackPluginVersion *version.PluginVersion + +func init() { + CloudstackPluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/digitalocean/version/version.go b/builder/digitalocean/version/version.go new file mode 100644 index 000000000..6cc62555d --- /dev/null +++ b/builder/digitalocean/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var DockerPluginVersion *version.PluginVersion + +func init() { + DockerPluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/docker/version/version.go b/builder/docker/version/version.go new file mode 100644 index 000000000..365c5cb86 --- /dev/null +++ b/builder/docker/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var DigitalOceanPluginVersion *version.PluginVersion + +func init() { + DigitalOceanPluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/file/version/version.go b/builder/file/version/version.go new file mode 100644 index 000000000..ce251c7cc --- /dev/null +++ b/builder/file/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var FilePluginVersion *version.PluginVersion + +func init() { + FilePluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/googlecompute/version/version.go b/builder/googlecompute/version/version.go index 644d55712..745fa8ddb 100644 --- a/builder/googlecompute/version/version.go +++ b/builder/googlecompute/version/version.go @@ -5,7 +5,9 @@ import ( packerVersion "github.com/hashicorp/packer/version" ) -var GCEPluginVersion = version.PluginVersion{ - Version: packerVersion.Version, - VersionPrerelease: packerVersion.VersionPrerelease, +var GCEPluginVersion *version.PluginVersion + +func init() { + GCEPluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) } diff --git a/builder/hcloud/version/version.go b/builder/hcloud/version/version.go new file mode 100644 index 000000000..2efe6aba7 --- /dev/null +++ b/builder/hcloud/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var HcloudPluginVersion *version.PluginVersion + +func init() { + HcloudPluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/hyperone/version/version.go b/builder/hyperone/version/version.go new file mode 100644 index 000000000..033630379 --- /dev/null +++ b/builder/hyperone/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var HyperonePluginVersion *version.PluginVersion + +func init() { + HyperonePluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/hyperv/version/version.go b/builder/hyperv/version/version.go new file mode 100644 index 000000000..1cb3f0654 --- /dev/null +++ b/builder/hyperv/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var HypervPluginVersion *version.PluginVersion + +func init() { + HypervPluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/jdcloud/version/version.go b/builder/jdcloud/version/version.go new file mode 100644 index 000000000..07ac862c7 --- /dev/null +++ b/builder/jdcloud/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var JDCloudPluginVersion *version.PluginVersion + +func init() { + JDCloudPluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/linode/version/version.go b/builder/linode/version/version.go index bf10c2e83..c3ea0c48e 100644 --- a/builder/linode/version/version.go +++ b/builder/linode/version/version.go @@ -5,7 +5,9 @@ import ( packerVersion "github.com/hashicorp/packer/version" ) -var LinodePluginVersion = version.PluginVersion{ - Version: packerVersion.Version, - VersionPrerelease: packerVersion.VersionPrerelease, +var LinodePluginVersion *version.PluginVersion + +func init() { + LinodePluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) } diff --git a/builder/lxc/version/version.go b/builder/lxc/version/version.go new file mode 100644 index 000000000..b64275fe1 --- /dev/null +++ b/builder/lxc/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var LXCPluginVersion *version.PluginVersion + +func init() { + LXCPluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/lxd/version/version.go b/builder/lxd/version/version.go new file mode 100644 index 000000000..f84991ceb --- /dev/null +++ b/builder/lxd/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var LXDPluginVersion *version.PluginVersion + +func init() { + LXDPluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/ncloud/version/version.go b/builder/ncloud/version/version.go new file mode 100644 index 000000000..6dbaae8ea --- /dev/null +++ b/builder/ncloud/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var NCloudPluginVersion *version.PluginVersion + +func init() { + NCloudPluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/null/version/version.go b/builder/null/version/version.go new file mode 100644 index 000000000..2dd98b1d2 --- /dev/null +++ b/builder/null/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var NullPluginVersion *version.PluginVersion + +func init() { + NullPluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/oneandone/version/version.go b/builder/oneandone/version/version.go new file mode 100644 index 000000000..15462d810 --- /dev/null +++ b/builder/oneandone/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var OneAndOnePluginVersion *version.PluginVersion + +func init() { + OneAndOnePluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/openstack/version/version.go b/builder/openstack/version/version.go new file mode 100644 index 000000000..0e4e82e44 --- /dev/null +++ b/builder/openstack/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var OpenstackPluginVersion *version.PluginVersion + +func init() { + OpenstackPluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/oracle/version/version.go b/builder/oracle/version/version.go new file mode 100644 index 000000000..82195589b --- /dev/null +++ b/builder/oracle/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var OraclePluginVersion *version.PluginVersion + +func init() { + OraclePluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/osc/version/version.go b/builder/osc/version/version.go new file mode 100644 index 000000000..4f3a0966f --- /dev/null +++ b/builder/osc/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var OutscalePluginVersion *version.PluginVersion + +func init() { + OutscalePluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/parallels/version/version.go b/builder/parallels/version/version.go new file mode 100644 index 000000000..1c71f44f3 --- /dev/null +++ b/builder/parallels/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var ParallelsPluginVersion *version.PluginVersion + +func init() { + ParallelsPluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/profitbricks/version/version.go b/builder/profitbricks/version/version.go new file mode 100644 index 000000000..67677861d --- /dev/null +++ b/builder/profitbricks/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var ProfitbricksPluginVersion *version.PluginVersion + +func init() { + ProfitbricksPluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/proxmox/version/version.go b/builder/proxmox/version/version.go new file mode 100644 index 000000000..9388b38aa --- /dev/null +++ b/builder/proxmox/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var ProxmoxPluginVersion *version.PluginVersion + +func init() { + ProxmoxPluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/qemu/version/version.go b/builder/qemu/version/version.go new file mode 100644 index 000000000..76f12152d --- /dev/null +++ b/builder/qemu/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var QemuPluginVersion *version.PluginVersion + +func init() { + QemuPluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/scaleway/version/version.go b/builder/scaleway/version/version.go index 8aee52974..79be4643a 100644 --- a/builder/scaleway/version/version.go +++ b/builder/scaleway/version/version.go @@ -5,7 +5,9 @@ import ( packerVersion "github.com/hashicorp/packer/version" ) -var ScalewayPluginVersion = version.PluginVersion{ - Version: packerVersion.Version, - VersionPrerelease: packerVersion.VersionPrerelease, +var ScalewayPluginVersion *version.PluginVersion + +func init() { + ScalewayPluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) } diff --git a/builder/tencentcloud/version/version.go b/builder/tencentcloud/version/version.go new file mode 100644 index 000000000..0c738f126 --- /dev/null +++ b/builder/tencentcloud/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var TencentPluginVersion *version.PluginVersion + +func init() { + TencentPluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/triton/version/version.go b/builder/triton/version/version.go new file mode 100644 index 000000000..a48e8ced1 --- /dev/null +++ b/builder/triton/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var TritonPluginVersion *version.PluginVersion + +func init() { + TritonPluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/ucloud/version/version.go b/builder/ucloud/version/version.go index 1aae958f1..e18d11932 100644 --- a/builder/ucloud/version/version.go +++ b/builder/ucloud/version/version.go @@ -5,7 +5,9 @@ import ( packerVersion "github.com/hashicorp/packer/version" ) -var UcloudPluginVersion = version.PluginVersion{ - Version: packerVersion.Version, - VersionPrerelease: packerVersion.VersionPrerelease, +var UcloudPluginVersion *version.PluginVersion + +func init() { + UcloudPluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) } diff --git a/builder/vagrant/version/version.go b/builder/vagrant/version/version.go new file mode 100644 index 000000000..c4747e529 --- /dev/null +++ b/builder/vagrant/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var VagrantPluginVersion *version.PluginVersion + +func init() { + VagrantPluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/virtualbox/version/version.go b/builder/virtualbox/version/version.go new file mode 100644 index 000000000..d849210b7 --- /dev/null +++ b/builder/virtualbox/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var VirtualboxPluginVersion *version.PluginVersion + +func init() { + VirtualboxPluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/vmware/version/version.go b/builder/vmware/version/version.go new file mode 100644 index 000000000..d9addf68c --- /dev/null +++ b/builder/vmware/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var VMwarePluginVersion *version.PluginVersion + +func init() { + VMwarePluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/vsphere/version/version.go b/builder/vsphere/version/version.go new file mode 100644 index 000000000..6e5234538 --- /dev/null +++ b/builder/vsphere/version/version.go @@ -0,0 +1,13 @@ +package version + +import ( + "github.com/hashicorp/packer/helper/version" + packerVersion "github.com/hashicorp/packer/version" +) + +var VSpherePluginVersion *version.PluginVersion + +func init() { + VSpherePluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) +} diff --git a/builder/yandex/version/version.go b/builder/yandex/version/version.go index 5f9969b63..73add8060 100644 --- a/builder/yandex/version/version.go +++ b/builder/yandex/version/version.go @@ -5,7 +5,9 @@ import ( packerVersion "github.com/hashicorp/packer/version" ) -var YandexPluginVersion = version.PluginVersion{ - Version: packerVersion.Version, - VersionPrerelease: packerVersion.VersionPrerelease, +var YandexPluginVersion *version.PluginVersion + +func init() { + YandexPluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) } diff --git a/helper/version/version.go b/helper/version/version.go index f40ea536d..a7f312a42 100644 --- a/helper/version/version.go +++ b/helper/version/version.go @@ -12,20 +12,39 @@ import ( // The git commit that was compiled. This will be filled in by the compiler. var GitCommit string +// InitializePluginVersion initializes the SemVer and returns a version var. +// If the provided "version" string is not valid, the call to version.Must +// will panic. Therefore, this function should always be called in a package +// init() function to make sure that plugins are following proper semantic +// versioning and to make sure that plugins which aren't following proper +// semantic versioning crash immediately rather than later. +func InitializePluginVersion(vers, versionPrerelease string) *PluginVersion { + pv := PluginVersion{ + version: vers, + versionPrerelease: versionPrerelease, + } + // This call initializes the SemVer to make sure that if Packer crashes due + // to an invalid SemVer it's at the very beginning of the Packer run. + pv.semVer = version.Must(version.NewVersion(vers)) + return &pv +} + type PluginVersion struct { // The main version number that is being run at the moment. - Version string + version string // A pre-release marker for the version. If this is "" (empty string) // then it means that it is a final release. Otherwise, this is a pre-release // such as "dev" (in development), "beta", "rc1", etc. - VersionPrerelease string + versionPrerelease string + // The Semantic Version of the plugin. Used for version constraint comparisons + semVer *version.Version } func (p *PluginVersion) FormattedVersion() string { var versionString bytes.Buffer - fmt.Fprintf(&versionString, "%s", p.Version) - if p.VersionPrerelease != "" { - fmt.Fprintf(&versionString, "-%s", p.VersionPrerelease) + fmt.Fprintf(&versionString, "%s", p.version) + if p.versionPrerelease != "" { + fmt.Fprintf(&versionString, "-%s", p.versionPrerelease) if GitCommit != "" { fmt.Fprintf(&versionString, " (%s)", GitCommit) @@ -35,18 +54,28 @@ func (p *PluginVersion) FormattedVersion() string { return versionString.String() } -func (p *PluginVersion) Semver() *version.Version { - // SemVer is an instance of version.Version. This has the secondary - // benefit of verifying during tests and init time that our version is a - // proper semantic version, which should always be the case. - SemVer := version.Must(version.NewVersion(p.Version)) - return SemVer +func (p *PluginVersion) SemVer() *version.Version { + if p.semVer != nil { + // SemVer is an instance of version.Version. This has the secondary + // benefit of verifying during tests and init time that our version is a + // proper semantic version, which should always be the case. + p.semVer = version.Must(version.NewVersion(p.version)) + } + return p.semVer +} + +func (p *PluginVersion) GetVersion() string { + return p.version +} + +func (p *PluginVersion) GetVersionPrerelease() string { + return p.versionPrerelease } // String returns the complete version string, including prerelease func (p *PluginVersion) String() string { - if p.VersionPrerelease != "" { - return fmt.Sprintf("%s-%s", p.Version, p.VersionPrerelease) + if p.versionPrerelease != "" { + return fmt.Sprintf("%s-%s", p.version, p.versionPrerelease) } - return p.Version + return p.version } diff --git a/post-processor/exoscale-import/version/version.go b/post-processor/exoscale-import/version/version.go index c6e587827..201e16eb9 100644 --- a/post-processor/exoscale-import/version/version.go +++ b/post-processor/exoscale-import/version/version.go @@ -5,7 +5,9 @@ import ( packerVersion "github.com/hashicorp/packer/version" ) -var ExoscaleImportPluginVersion = version.PluginVersion{ - Version: packerVersion.Version, - VersionPrerelease: packerVersion.VersionPrerelease, +var ExoscaleImportPluginVersion *version.PluginVersion + +func init() { + ExoscaleImportPluginVersion = version.InitializePluginVersion( + packerVersion.Version, packerVersion.VersionPrerelease) } diff --git a/version/version.go b/version/version.go index 3c89bd0ef..e4a12b1ca 100644 --- a/version/version.go +++ b/version/version.go @@ -16,10 +16,7 @@ const Version = "1.6.6" // such as "dev" (in development), "beta", "rc1", etc. const VersionPrerelease = "dev" -var PackerVersion = pluginVersion.PluginVersion{ - Version: Version, - VersionPrerelease: VersionPrerelease, -} +var PackerVersion *pluginVersion.PluginVersion func FormattedVersion() string { return PackerVersion.FormattedVersion() @@ -31,7 +28,8 @@ func FormattedVersion() string { var SemVer *version.Version func init() { - SemVer = version.Must(version.NewVersion(Version)) + PackerVersion = pluginVersion.InitializePluginVersion(Version, VersionPrerelease) + SemVer = PackerVersion.SemVer() } // String returns the complete version string, including prerelease