lib/physique/tasks/versionizer.rb in physique-0.3.10 vs lib/physique/tasks/versionizer.rb in physique-0.4.0
- old
+ new
@@ -1,113 +1,113 @@
-require 'xsemver'
-require 'albacore/logging'
-
-module Physique
- module Tasks
- # Versionizer does versioning ITS OWN WAY!
- #
- # Defines ENV vars:
- # * BUILD_VERSION
- # * NUGET_VERSION
- # * FORMAL_VERSION
- #
- # Publishes symbol :build_version
- module Versionizer
- # adds a new task with the given symbol to the Rake/Albacore application
- # You can use this like any other albacore method, such as build,
- # in order to give it parameters or dependencies, but there is no
- # configuration object that you can configure. Copy-n-paste this
- # code if you want something of your own.
- #
- def self.new(*sym)
- version = gitflow_version(XSemVer::SemVer.find)
- version_data = define_versions(version)
-
- Albacore.subscribe :build_version do |data|
- ENV['BUILD_VERSION'] = data.build_version
- ENV['NUGET_VERSION'] = data.nuget_version
- ENV['FORMAL_VERSION'] = data.formal_version
- ENV['LONG_VERSION'] = data.long_version
- end
-
- Albacore.define_task(*sym) do
- Albacore.publish :build_version, OpenStruct.new(version_data)
- end
-
- Albacore.define_task :version do
- puts version_data.inspect
- end
- end
-
- def self.define_versions(semver)
- build = build_number
-
- {
- # just a monotonic inc
- :semver => semver,
- :build_number => build,
- :current_branch => current_branch,
-
- # purely M.m.p format
- :formal_version => "#{semver.format('%M.%m.%p')}",
-
- # four-numbers version, useful if you're dealing with COM/Windows
- :long_version => "#{semver.format('%M.%m.%p')}.#{build}",
-
- # extensible number w/ git hash
- :build_version => "#{semver.format('%M.%m.%p%s')}.#{last_commit[0]}",
-
- # nuget (not full semver 2.0.0-rc.1 support) see http://nuget.codeplex.com/workitem/1796
- :nuget_version => semver.format('%M.%m.%p%s')
- }
- end
-
- # load the commit data
- # returns: [short-commit :: String]
- #
- def self.last_commit
- begin
- `git rev-parse --short HEAD`.chomp[0,6]
- rescue
- (ENV['BUILD_VCS_NUMBER'] || '000000')[0,6]
- end
- end
-
- # Determine the current branch
- # returns: branch name
- #
- def self.current_branch
- begin
- `git rev-parse --abbrev-ref HEAD`.chomp
- rescue
- 'master'
- end
- end
-
- def self.gitflow_version(version)
- return unless ENV.include?('BUILD_NUMBER')
- version.special = gitflow_special
- version
- end
-
- def self.build_number
- ENV['BUILD_NUMBER'] || '0'
- end
-
- def self.gitflow_special
- prefix = special_prefix
- return version.special if prefix == 'master'
-
- "#{prefix}#{build_number}"
- end
-
- def self.special_prefix
- # TODO: There is a better way to do this.
- branch_name = current_branch
- return 'release' if branch_name.start_with? 'release/'
- return 'hotfix' if branch_name.start_with? 'hotfix/'
- return 'feature' if branch_name.start_with? 'feature/'
- branch_name
- end
- end
- end
+require 'xsemver'
+require 'albacore/logging'
+
+module Physique
+ module Tasks
+ # Versionizer does versioning ITS OWN WAY!
+ #
+ # Defines ENV vars:
+ # * BUILD_VERSION
+ # * NUGET_VERSION
+ # * FORMAL_VERSION
+ #
+ # Publishes symbol :build_version
+ module Versionizer
+ # adds a new task with the given symbol to the Rake/Albacore application
+ # You can use this like any other albacore method, such as build,
+ # in order to give it parameters or dependencies, but there is no
+ # configuration object that you can configure. Copy-n-paste this
+ # code if you want something of your own.
+ #
+ def self.new(*sym)
+ version = gitflow_version(XSemVer::SemVer.find)
+ version_data = define_versions(version)
+
+ Albacore.subscribe :build_version do |data|
+ ENV['BUILD_VERSION'] = data.build_version
+ ENV['NUGET_VERSION'] = data.nuget_version
+ ENV['FORMAL_VERSION'] = data.formal_version
+ ENV['LONG_VERSION'] = data.long_version
+ end
+
+ Albacore.define_task(*sym) do
+ Albacore.publish :build_version, OpenStruct.new(version_data)
+ end
+
+ Albacore.define_task :version do
+ puts version_data.inspect
+ end
+ end
+
+ def self.define_versions(semver)
+ build = build_number
+
+ {
+ # just a monotonic inc
+ :semver => semver,
+ :build_number => build,
+ :current_branch => current_branch,
+
+ # purely M.m.p format
+ :formal_version => "#{semver.format('%M.%m.%p')}",
+
+ # four-numbers version, useful if you're dealing with COM/Windows
+ :long_version => "#{semver.format('%M.%m.%p')}.#{build}",
+
+ # extensible number w/ git hash
+ :build_version => "#{semver.format('%M.%m.%p%s')}.#{last_commit[0]}",
+
+ # nuget (not full semver 2.0.0-rc.1 support) see http://nuget.codeplex.com/workitem/1796
+ :nuget_version => semver.format('%M.%m.%p%s')
+ }
+ end
+
+ # load the commit data
+ # returns: [short-commit :: String]
+ #
+ def self.last_commit
+ begin
+ `git rev-parse --short HEAD`.chomp[0,6]
+ rescue
+ (ENV['BUILD_VCS_NUMBER'] || '000000')[0,6]
+ end
+ end
+
+ # Determine the current branch
+ # returns: branch name
+ #
+ def self.current_branch
+ begin
+ `git rev-parse --abbrev-ref HEAD`.chomp
+ rescue
+ 'master'
+ end
+ end
+
+ def self.gitflow_version(version)
+ return unless ENV.include?('BUILD_NUMBER')
+ version.special = gitflow_special
+ version
+ end
+
+ def self.build_number
+ ENV['BUILD_NUMBER'] || '0'
+ end
+
+ def self.gitflow_special
+ prefix = special_prefix
+ return version.special if prefix == 'master'
+
+ "#{prefix}#{build_number}"
+ end
+
+ def self.special_prefix
+ # TODO: There is a better way to do this.
+ branch_name = current_branch
+ return 'release' if branch_name.start_with? 'release/'
+ return 'hotfix' if branch_name.start_with? 'hotfix/'
+ return 'feature' if branch_name.start_with? 'feature/'
+ branch_name
+ end
+ end
+ end
end
\ No newline at end of file