class Abt::Providers::Harvest::Services::ProjectPicker

Attributes

cli[R]
project_assignments[R]

Public Class Methods

call(**args) click to toggle source
# File lib/abt/providers/harvest/services/project_picker.rb, line 17
def self.call(**args)
  new(**args).call
end
new(cli:, project_assignments:) click to toggle source
# File lib/abt/providers/harvest/services/project_picker.rb, line 23
def initialize(cli:, project_assignments:)
  @cli = cli
  @project_assignments = project_assignments
end

Public Instance Methods

call() click to toggle source
# File lib/abt/providers/harvest/services/project_picker.rb, line 28
def call
  project = cli.prompt.search("Select a project", searchable_projects)["project"]

  path = Path.from_ids(project_id: project["id"])

  Result.new(project: project, path: path)
end

Private Instance Methods

searchable_projects() click to toggle source
# File lib/abt/providers/harvest/services/project_picker.rb, line 38
def searchable_projects
  @searchable_projects ||= project_assignments.map do |project_assignment|
    client = project_assignment["client"]
    project = project_assignment["project"]

    project_assignment.merge(
      "name" => "#{client['name']} > #{project['name']}",
      "project" => project
    )
  end
end