Class: PmdTester::ProjectBuilder

Inherits:
Object
  • Object
show all
Includes:
PmdTester
Defined in:
lib/pmdtester/builders/project_builder.rb

Overview

Clones and builds the projects, that are configured in the project-list.xml

Constant Summary

Constants included from PmdTester

BASE, PATCH, PR_NUM_ENV_VAR, VERSION

Instance Method Summary collapse

Methods included from PmdTester

#logger, logger

Constructor Details

#initialize(projects) ⇒ ProjectBuilder

Returns a new instance of ProjectBuilder.



11
12
13
# File 'lib/pmdtester/builders/project_builder.rb', line 11

def initialize(projects)
  @projects = projects
end

Instance Method Details

#build_projectsObject



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

def build_projects
  logger.info 'Building projects started'

  @projects.each do |project|
    path = project.clone_root_path
    Dir.chdir(path) do
      progress_logger = SimpleProgressLogger.new("building #{project.name} in #{path}")
      progress_logger.start
      prepare_project(project)
      progress_logger.stop
    end
    logger.info "Building #{project.name} completed"
  end

  logger.info 'Building projects completed'
end

#clone_projectsObject



15
16
17
18
19
20
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/pmdtester/builders/project_builder.rb', line 15

def clone_projects
  logger.info 'Cloning projects started'

  @projects.each do |project|
    logger.info "Start cloning #{project.name} repository"
    path = project.clone_root_path

    if File.exist?(path)
      logger.warn "Skipping clone, project path #{path} already exists"
    else
      raise "Unsupported project type '#{project.type}' - only git is supported" unless project.type == 'git'

      # git:
      # Don't download whole history
      # Note we don't use --single-branch, because the repo is downloaded
      # once but may be used with several tags.
      clone_cmd = "git clone --no-single-branch --depth 1 #{project.connection} #{path}"

      Cmd.execute(clone_cmd)
    end

    Dir.chdir(path) do
      execute_reset_cmd(project.type, project.tag)
    end
    logger.info "Cloning #{project.name} completed"
  end

  logger.info 'Cloning projects completed'
end