Module: MSPRelease::Project

Defined in:
lib/msp_release/project.rb

Defined Under Namespace

Modules: Debian, Gem, Git, Ruby Classes: Base

Class Method Summary collapse

Class Method Details

.new_from_project_file(filename) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/msp_release/project.rb', line 3

def self.new_from_project_file(filename)
  config = YAML.load_file(filename)
  dirname = File.expand_path(File.dirname(filename))

  project = Base.new(filename, dirname)

  # TODO: make it so that this doesn't have to know about all the possible
  # mixins.

  # If the directory has a debian folder, treat it as a debian project.
  if File.directory?(File.join(dirname, 'debian'))
    project.extend(Debian)
  elsif Dir.glob("#{dirname}/*.gemspec").count > 0
    project.extend(Gem)
    # If its a gem project, it must also be a ruby project.
    project.extend(Ruby)
  end

  # If there is a ruby version file, we treat it as a
  if config[:ruby_version_file]
    project.extend(Ruby)
  end

  # Git project
  if File.directory?(File.join(dirname, '.git'))
    project.extend(Git)
  end

  project
end