class Mvnizer::Mvnize

Mvnize is the main entry point into Mvnizer.

Attributes

out[W]

Public Class Methods

new(coordinate_parser = Mvnizer::CoordinateParser.new) click to toggle source
# File lib/mvnizer/mvnize.rb, line 8
def initialize(coordinate_parser = Mvnizer::CoordinateParser.new)
  @coordinate_parser = coordinate_parser
end

Public Instance Methods

out() click to toggle source
# File lib/mvnizer/mvnize.rb, line 12
def out
  @out ||= $stdout
end
run(options) click to toggle source

Execute the right command depending on the :command parameter passed in options. If the command does not exit, throw an error.

# File lib/mvnizer/mvnize.rb, line 19
def run(options)
  raise ArgumentError, 'Please give a name to the project.' unless options[:name]

  case options[:command]
  when 'new'
    project_details = define_project(options)

    project_command = Mvnizer::Command::ProjectFactory.create(project_details.type)
    project_command.run(project_details)
    out.puts("Project #{project_details.artifact_id} created successfully.")
  when 'search'
    search_command = Command::SearchArtefact.new
    search_command.run(options)
  when 'add'
    add_command = Command::AddDependency.new
    add_command.run(options)
  else
    raise ArgumentError, "#{options[:command]} is not a valid command."
  end
end

Private Instance Methods

define_project(options) click to toggle source

Creates an instance of Project class populated with the coordinates set with the user’s definition, or default values if not set.

# File lib/mvnizer/mvnize.rb, line 43
def define_project(options)
  # Get coordinates provided by the user on the CLI.
  coordinates = options[:name]
  # Retrieve default options
  options = conf(options)

  # Parse user coordinates, and found values override options
  project = @coordinate_parser.parse(coordinates)
  return_project = Project.new(project.group_id || options[:group_id],
                               project.artifact_id,
                               project.version || options[:version],
                               project.type || options[:type],
                               [], nil, [],
                               options[:main],
                               options[:docker] || false)


  # Get default dependencies, and add them after having parsed their coords.
  dependencies = options[:dependencies]
  dependencies&.each do |d|
    return_project.add_dependency(@coordinate_parser.parse_scoped_coordinates(d))
  end

  # If logger is true, add logging dependencies.
  options[:logging_deps]&.each do |d|
    return_project.add_dependency(@coordinate_parser.parse_scoped_coordinates(d))
  end

  plugins = options[:plugins]
  plugins&.each do |p|
    return_project.add_plugin(@coordinate_parser.parse_scoped_coordinates(p))
  end

  return_project
end