Class: DevopsAssist::ReleaseLogger

Inherits:
Object
  • Object
show all
Includes:
TR::CondUtils
Defined in:
lib/devops_assist/release_log/release_log.rb

Constant Summary collapse

LOG_NAME =
".release_history.yml"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(rec = nil) ⇒ ReleaseLogger

Returns a new instance of ReleaseLogger.



15
16
17
18
19
# File 'lib/devops_assist/release_log/release_log.rb', line 15

def initialize(rec = nil)
  if not_empty?(rec)
    @relRec = YAML.load(rec)
  end
end

Instance Attribute Details

#relRec=(value) ⇒ Object

Sets the attribute relRec

Parameters:

  • value

    the value to set the attribute relRec to.



14
15
16
# File 'lib/devops_assist/release_log/release_log.rb', line 14

def relRec=(value)
  @relRec = value
end

Class Method Details

.load(root = Dir.getwd) ⇒ Object



126
127
128
129
130
131
132
133
134
135
136
137
# File 'lib/devops_assist/release_log/release_log.rb', line 126

def self.load(root = Dir.getwd)
  f = File.join(root, LOG_NAME) 
  if not File.exist?(f)
    ReleaseLogger.new
  else
    relLog = nil
    File.open(f,"r") do |ff|
      relLog = ReleaseLogger.new(ff.read)
    end
    relLog
  end
end

Instance Method Details

#is_version_exist?(ver, relName = nil) ⇒ Boolean

Returns:

  • (Boolean)


55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/devops_assist/release_log/release_log.rb', line 55

def is_version_exist?(ver, relName = nil)
  if is_empty?(relName)
    list = relRec[relRec.keys.first]
  else
    list = relRec[relName]
  end
  res = false
  if not_empty?(list)
    ref = ::Gem::Version.new(ver)
    list.each do |l|
      subj = ::Gem::Version.new(l[:version])
      res = (subj == ref)
      break if res
    end
  end

  res
end

#last_version_number(relName = nil) ⇒ Object



45
46
47
48
49
50
51
52
53
# File 'lib/devops_assist/release_log/release_log.rb', line 45

def last_version_number(relName = nil)
  if is_empty?(relName)
    list = relRec[relRec.keys.first]
  else
    list = relRec[relName]
  end

  list.last[:version] if not_empty?(list)
end

#log_release(relName, version, &block) ⇒ Object

Raises:



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/devops_assist/release_log/release_log.rb', line 21

def log_release(relName, version, &block)

  raise ReleaseLogError, "Release name cannot be empty" if is_empty?(relName)
  raise ReleaseLogError, "Version cannot be empty" if is_empty?(version)

  raise ReleaseLogError, "Version '#{version}' already in the log file for release '#{relName}'" if is_version_exist?(version, relName)

  rec = { version: version, timestamp: Time.now.to_f }
  if block
    relBy = block.call(:released_by)
    rec[:released_by] = relBy if not_empty?(relBy)

    relFrom = block.call(:released_location)
    rec[:released_location] = relFrom if not_empty?(relFrom)
  end

  relRec[relName] = [] if is_empty?(relRec[relName])
  relRec[relName] << rec

  save

  relRec
end

#releases(&block) ⇒ Object



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# File 'lib/devops_assist/release_log/release_log.rb', line 74

def releases(&block)
  ret = Marshal.load(Marshal.dump(relRec))
  ret.values.each do |v|
  #ret.map { |k,v|
    v.map { |r|

      t = r[:timestamp]
      tt = Time.at(t)

      res = nil

      if block
        res = block.call(:convert_timestamp, tt)
      end

      if is_empty?(res)
        res = tt.strftime("%a, %d %b %Y, %H:%M:%S")
      end

      r[:timestamp] = res 

      relBy = r[:released_by]
      if not_empty?(relBy) 

        if block
          res = block.call(:convert_released_by, relBy)
          r[:released_by] = res if not_empty?(res)
        end

      end

      relFrom = r[:released_location]
      if not_empty?(relFrom) 

        if block
          res = block.call(:convert_released_location, relFrom)
          r[:released_location] = res if not_empty?(res)
        end

      end

      r

    }

    v

  end

  ret
end

#reset_log(root = Dir.getwd) ⇒ Object



146
147
148
149
# File 'lib/devops_assist/release_log/release_log.rb', line 146

def reset_log(root = Dir.getwd)
  log = File.join(root, LOG_NAME)
  FileUtils.rm(log) if File.exist?(log)
end

#save(root = Dir.getwd) ⇒ Object



139
140
141
142
143
144
# File 'lib/devops_assist/release_log/release_log.rb', line 139

def save(root = Dir.getwd)
  f = File.join(root, LOG_NAME)
  File.open(f,"w") do |ff|
    ff.write YAML.dump(relRec)
  end
end