Module: Albacore::Tasks::Versionizer
- Defined in:
- lib/albacore/tasks/versionizer.rb
Overview
Versionizer does versioning ITS OWN WAY!
Defines ENV vars:
* BUILD_VERSION
* NUGET_VERSION
* FORMAL_VERSION
Publishes symbol :build_version
Class Method Summary collapse
-
.commit_data ⇒ Object
- load the commit data returns: [short-commit
- String, date
-
DateTime].
- .format_nuget(semver) ⇒ Object
-
.new(*sym) ⇒ Object
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.
- .versions(semver, &commit_data) ⇒ Object
Class Method Details
.commit_data ⇒ Object
load the commit data
- returns: [short-commit
- String, date
-
DateTime]
71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/albacore/tasks/versionizer.rb', line 71 def self.commit_data begin commit = `git rev-parse --short HEAD`.chomp()[0,6] git_date = `git log -1 --date=iso --pretty=format:%ad` commit_date = DateTime.parse( git_date ).strftime("%Y-%m-%d %H:%M:%S") rescue commit = (ENV['BUILD_VCS_NUMBER'] || "000000")[0,6] commit_date = Time.new.strftime("%Y-%m-%d %H:%M:%S") end [commit, commit_date] end |
.format_nuget(semver) ⇒ Object
60 61 62 63 64 65 66 |
# File 'lib/albacore/tasks/versionizer.rb', line 60 def self.format_nuget semver if semver.prerelease and not semver.prerelease.empty? "#{semver.major}.#{semver.minor}.#{semver.patch}-#{semver.prerelease.gsub(/\W/, '')}" else semver.format '%M.%m.%p' end end |
.new(*sym) ⇒ Object
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.
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/albacore/tasks/versionizer.rb', line 23 def self.new *sym ver = XSemVer::SemVer.find ver.patch = (ENV['BUILD_NUMBER'] || ver.patch).to_i version_data = versions(ver, &method(:commit_data)) 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 end |
.versions(semver, &commit_data) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/albacore/tasks/versionizer.rb', line 40 def self.versions semver, &commit_data { # just a monotonic inc :build_number => semver.patch, :semver => semver, # purely M.m.p format :formal_version => "#{ XSemVer::SemVer.new(semver.major, semver.minor, semver.patch).format "%M.%m.%p"}", # four-numbers version, useful if you're dealing with COM/Windows :long_version => "#{semver.format '%M.%m.%p'}.0", # extensible number w/ git hash :build_version => semver.format("%M.%m.%p%s") + ".#{yield[0]}", # nuget (not full semver 2.0.0 support) see http://nuget.codeplex.com/workitem/1796 :nuget_version => format_nuget(semver) } end |