Class: FunCi::Setup::Installer

Inherits:
Object
  • Object
show all
Defined in:
lib/fun_ci/setup/installer.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(project_root:, stdout:, pom_reader: nil) ⇒ Installer

Returns a new instance of Installer.



14
15
16
17
18
# File 'lib/fun_ci/setup/installer.rb', line 14

def initialize(project_root:, stdout:, pom_reader: nil)
  @project_root = project_root
  @stdout = stdout
  @pom_reader = pom_reader || ->(path) { File.read(path) }
end

Class Method Details

.run(project_root:, stdout: $stdout, pom_reader: nil) ⇒ Object



10
11
12
# File 'lib/fun_ci/setup/installer.rb', line 10

def self.run(project_root:, stdout: $stdout, pom_reader: nil)
  new(project_root: project_root, stdout: stdout, pom_reader: pom_reader).run
end

Instance Method Details

#runObject



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/fun_ci/setup/installer.rb', line 20

def run
  if Dir.exist?(File.join(@project_root, ".fun-ci"))
    @stdout.puts ".fun-ci/ already exists, so init did nothing."
    return 0
  end

  filenames = Dir.children(@project_root)
  detected = ProjectDetector.new(filenames).detect

  if detected == :unknown
    @stdout.puts "Could not detect project type. Create .fun-ci/ manually."
    return 1
  end

  @stdout.puts "Detected: #{detected.to_s.tr("_", " ")}"

  lint_override = detect_maven_linter(detected)
  TemplateWriter.new(detected, @project_root, lint_override: lint_override).write

  @stdout.puts "Created .fun-ci/ with template scripts."
  0
end