Class: Ops::Revision
- Inherits:
-
Object
- Object
- Ops::Revision
- Defined in:
- lib/ops/revision.rb
Instance Method Summary collapse
- #chomp(file) ⇒ Object
- #current_dir ⇒ Object
- #deploy_date ⇒ Object
- #development? ⇒ Boolean
- #environment ⇒ Object
- #file_root ⇒ Object
- #get_previous_by_time ⇒ Object
- #get_previous_versions ⇒ Object
- #get_revision(file) ⇒ Object
- #get_time(file) ⇒ Object
- #get_version(file) ⇒ Object
- #headers ⇒ Object
-
#initialize(new_headers = {}, opts = Ops.config) ⇒ Revision
constructor
A new instance of Revision.
- #last_commit ⇒ Object
- #path ⇒ Object
- #previous_versions ⇒ Object
- #revision_file ⇒ Object
- #revision_file? ⇒ Boolean
- #stats_hash(files) ⇒ Object
- #version_file ⇒ Object
- #version_file? ⇒ Boolean
- #version_or_branch ⇒ Object
Constructor Details
#initialize(new_headers = {}, opts = Ops.config) ⇒ Revision
Returns a new instance of Revision.
3 4 5 6 7 |
# File 'lib/ops/revision.rb', line 3 def initialize(new_headers={}, opts = Ops.config) @file_root = opts.file_root.to_s # convert to string in case they pass us a Pathname @environment = opts.environment @headers = new_headers end |
Instance Method Details
#chomp(file) ⇒ Object
57 58 59 |
# File 'lib/ops/revision.rb', line 57 def chomp(file) File.read(file).chomp end |
#current_dir ⇒ Object
39 40 41 |
# File 'lib/ops/revision.rb', line 39 def current_dir file_root.split('/').last end |
#deploy_date ⇒ Object
93 94 95 96 97 98 99 100 101 |
# File 'lib/ops/revision.rb', line 93 def deploy_date @deploy_date ||= if version_file? get_time version_file elsif development? 'Live' else 'Unknown (VERSION file is missing)' end end |
#development? ⇒ Boolean
73 74 75 |
# File 'lib/ops/revision.rb', line 73 def development? environment == 'development' end |
#environment ⇒ Object
69 70 71 |
# File 'lib/ops/revision.rb', line 69 def environment @environment end |
#file_root ⇒ Object
65 66 67 |
# File 'lib/ops/revision.rb', line 65 def file_root @file_root end |
#get_previous_by_time ⇒ Object
23 24 25 |
# File 'lib/ops/revision.rb', line 23 def get_previous_by_time get_previous_versions.sort { |a, b| a[:time] <=> b[:time] } end |
#get_previous_versions ⇒ Object
27 28 29 30 31 32 33 |
# File 'lib/ops/revision.rb', line 27 def get_previous_versions Dir["#{path}/../*"].each_with_object([]) do |dir, array| next if dir =~ /#{current_dir}$/ version, revision = File.join(dir, 'VERSION'), File.join(dir, 'REVISION') array << stats_hash(version: version, revision: revision) if File.exists?(version) && File.exists?(revision) end end |
#get_revision(file) ⇒ Object
53 54 55 |
# File 'lib/ops/revision.rb', line 53 def get_revision(file) chomp file end |
#get_time(file) ⇒ Object
61 62 63 |
# File 'lib/ops/revision.rb', line 61 def get_time(file) File.stat(file).mtime end |
#get_version(file) ⇒ Object
49 50 51 |
# File 'lib/ops/revision.rb', line 49 def get_version(file) chomp(file).gsub('^{}', '') end |
#headers ⇒ Object
113 114 115 |
# File 'lib/ops/revision.rb', line 113 def headers @headers.select{|k,v| k.match(/^[-A-Z_].*$/) } end |
#last_commit ⇒ Object
103 104 105 106 107 108 109 110 111 |
# File 'lib/ops/revision.rb', line 103 def last_commit @last_commit ||= if revision_file? chomp revision_file elsif development? && `git show` =~ /^commit (.*)$/ $1 else 'Unknown (REVISION file is missing)' end end |
#path ⇒ Object
35 36 37 |
# File 'lib/ops/revision.rb', line 35 def path File.absolute_path file_root end |
#previous_versions ⇒ Object
19 20 21 |
# File 'lib/ops/revision.rb', line 19 def previous_versions @previous_versions ||= get_previous_by_time end |
#revision_file ⇒ Object
85 86 87 |
# File 'lib/ops/revision.rb', line 85 def revision_file @revision_file ||= File.join(file_root, 'REVISION') end |
#revision_file? ⇒ Boolean
89 90 91 |
# File 'lib/ops/revision.rb', line 89 def revision_file? File.exists? revision_file end |
#stats_hash(files) ⇒ Object
43 44 45 46 47 |
# File 'lib/ops/revision.rb', line 43 def stats_hash(files) { version: get_version(files[:version]), revision: get_revision(files[:revision]), time: get_time(files[:revision]) } end |
#version_file ⇒ Object
77 78 79 |
# File 'lib/ops/revision.rb', line 77 def version_file @version_file ||= File.join(file_root, 'VERSION') end |
#version_file? ⇒ Boolean
81 82 83 |
# File 'lib/ops/revision.rb', line 81 def version_file? File.exists? version_file end |
#version_or_branch ⇒ Object
9 10 11 12 13 14 15 16 17 |
# File 'lib/ops/revision.rb', line 9 def version_or_branch @version ||= if version_file? chomp(version_file).gsub('^{}', '') elsif development? && `git branch` =~ /^\* (.*)$/ $1 else 'Unknown (VERSION file is missing)' end end |