Module: Rubyists::Linear::CLI::Projects
- Included in:
- Issue::List, WhatFor
- Defined in:
- lib/linear/cli/projects.rb
Overview
The Project module contains support for finding and selecting projects as part of a filter or query
Instance Method Summary collapse
- #ask_for_projects(projects, search: true) ⇒ Object
- #project_for(project = nil, projects: Project.all) ⇒ Object
- #project_scores(projects, search_term) ⇒ Object
Instance Method Details
#ask_for_projects(projects, search: true) ⇒ Object
9 10 11 12 13 14 |
# File 'lib/linear/cli/projects.rb', line 9 def ask_for_projects(projects, search: true) prompt.warn("No project found matching #{search}.") if search return projects.first if projects.size == 1 prompt.select('Project:', projects.to_h { |p| [p.name, p] }) end |
#project_for(project = nil, projects: Project.all) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/linear/cli/projects.rb', line 20 def project_for(project = nil, projects: Project.all) return nil if projects.empty? possibles = project ? project_scores(projects, project) : [] return ask_for_projects(projects, search: project) if possibles.empty? first = possibles.first return first if first.match_score?(project) == 100 selections = possibles + (projects - possibles) prompt.select('Project:', selections.to_h { |p| [p.name, p] }) if possibles.size.positive? end |
#project_scores(projects, search_term) ⇒ Object
16 17 18 |
# File 'lib/linear/cli/projects.rb', line 16 def project_scores(projects, search_term) projects.select { |p| p.match_score?(search_term).positive? }.sort_by { |p| p.match_score?(search_term) } end |