Class: MSPRelease::Project::Base

Inherits:
Object
  • Object
show all
Includes:
Exec::Helpers
Defined in:
lib/msp_release/project/base.rb

Constant Summary collapse

RELEASE_COMMIT_PREFIX =
"RELEASE COMMIT - "

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Exec::Helpers

#exec

Constructor Details

#initialize(filename, dir = '.') ⇒ Base

Returns a new instance of Base.



10
11
12
13
14
15
16
17
# File 'lib/msp_release/project/base.rb', line 10

def initialize(filename, dir='.')
  @config_file = filename
  @dir = dir
  @config = YAML.load_file(@config_file)
  config.each do |key, value|
    instance_variable_set("@#{key}", value)
  end
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



8
9
10
# File 'lib/msp_release/project/base.rb', line 8

def config
  @config
end

#config_fileObject (readonly)

Returns the value of attribute config_file.



8
9
10
# File 'lib/msp_release/project/base.rb', line 8

def config_file
  @config_file
end

#dirObject (readonly)

Returns the value of attribute dir.



8
9
10
# File 'lib/msp_release/project/base.rb', line 8

def dir
  @dir
end

Instance Method Details

#at_version?(rhs_version) ⇒ Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/msp_release/project/base.rb', line 35

def at_version?(rhs_version)
  any_version == rhs_version
end

#branch_name(version = self.version) ⇒ Object



31
32
33
# File 'lib/msp_release/project/base.rb', line 31

def branch_name(version=self.version)
  "release-#{version.format(:without_bugfix => true)}"
end

#build(options = {}) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/msp_release/project/base.rb', line 45

def build(options={})
  unless self.respond_to?(:build_command)
    raise "Don't know how to build this project"
  end

  build_opts(options) if self.respond_to?(:build_opts)

  LOG.debug("Checked out to #{@dir}")

  LOG.debug("Building...")
  build = Build.new(@dir, self, options)

  result = build.perform_from_cli!
  LOG.debug("Build products:")
  result.files.each {|f| LOG.info(f) }
end

#bump_version(segment) ⇒ Object



39
40
41
42
43
# File 'lib/msp_release/project/base.rb', line 39

def bump_version(segment)
  new_version = version.bump(segment.to_sym)
  written_files = write_version(new_version)
  [new_version, *written_files]
end

#release_commit_message(release_name) ⇒ Object

Returns the commit message that should be used for a given release



27
28
29
# File 'lib/msp_release/project/base.rb', line 27

def release_commit_message(release_name)
  "#{RELEASE_COMMIT_PREFIX}#{release_name}"
end

#release_name_from_message(commit_message) ⇒ Object



19
20
21
22
23
24
# File 'lib/msp_release/project/base.rb', line 19

def release_name_from_message(commit_message)
  idx = commit_message.index(RELEASE_COMMIT_PREFIX)
  return nil unless idx == 0

  commit_message[RELEASE_COMMIT_PREFIX.length..-1]
end