Class: Zenflow::Version

Inherits:
Object
  • Object
show all
Defined in:
lib/zenflow/helpers/version.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*version) ⇒ Version

Returns a new instance of Version.



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/zenflow/helpers/version.rb', line 18

def initialize(*version)
  @version = case version.first
  when String
    YAML.load_file(version.first)
  when Hash
    version.first
  else
    {
      "major" => version[0],
      "minor" => version[1],
      "patch" => version[2],
      "pre"   => version[3]
    }
  end
end

Class Method Details

.[](*version) ⇒ Object



4
5
6
# File 'lib/zenflow/helpers/version.rb', line 4

def self.[](*version)
  self.new(*version)
end

.currentObject



8
9
10
11
12
13
14
15
16
# File 'lib/zenflow/helpers/version.rb', line 8

def self.current
  file = "#{Dir.pwd}/VERSION.yml"
  if File.exist?(file)
    self.new(file)
  else
    Zenflow::Log("No version file found (looking for #{file}).", :color => :red)
    exit(1)
  end
end

.update(level = :patch) ⇒ Object



34
35
36
37
38
39
# File 'lib/zenflow/helpers/version.rb', line 34

def self.update(level=:patch)
  new_version = Zenflow::Version.current.bump(level)
  new_version.save
  Zenflow::Shell["git add VERSION.yml && git commit -a -m 'Bumping version to #{new_version}.'"]
  new_version
end

Instance Method Details

#bump(level) ⇒ Object



41
42
43
44
45
46
47
48
49
# File 'lib/zenflow/helpers/version.rb', line 41

def bump(level)
  raise "Invalid version part" unless [:major, :minor, :patch].include?(level.to_sym)
  new_version = case level.to_sym
  when :major then [major+1, 0, 0]
  when :minor then [major, minor+1, 0]
  when :patch then [major, minor, patch+1]
  end
  Version[*new_version]
end

#majorObject



51
52
53
# File 'lib/zenflow/helpers/version.rb', line 51

def major
  @version['major']
end

#minorObject



55
56
57
# File 'lib/zenflow/helpers/version.rb', line 55

def minor
  @version['minor']
end

#patchObject



59
60
61
# File 'lib/zenflow/helpers/version.rb', line 59

def patch
  @version['patch']
end

#preObject



63
64
65
# File 'lib/zenflow/helpers/version.rb', line 63

def pre
  @version['pre']
end

#save(path = "VERSION.yml") ⇒ Object



81
82
83
84
85
# File 'lib/zenflow/helpers/version.rb', line 81

def save(path="VERSION.yml")
  File.open(path, 'w') do |out|
    YAML.dump(@version, out)
  end
end

#to_aObject



71
72
73
# File 'lib/zenflow/helpers/version.rb', line 71

def to_a
  [major, minor, patch, pre]
end

#to_hashObject



67
68
69
# File 'lib/zenflow/helpers/version.rb', line 67

def to_hash
  @version.dup
end

#to_sObject



75
76
77
78
79
# File 'lib/zenflow/helpers/version.rb', line 75

def to_s
  n = to_a[0..2]
  n << pre unless pre.nil?
  n.join(".")
end