class Abt::Providers::Devops::Services::WorkItemPicker
Attributes
board[R]
cli[R]
config[R]
path[R]
Public Class Methods
call(**args)
click to toggle source
# File lib/abt/providers/devops/services/work_item_picker.rb, line 17 def self.call(**args) new(**args).call end
new(cli:, path:, config:, board:)
click to toggle source
# File lib/abt/providers/devops/services/work_item_picker.rb, line 23 def initialize(cli:, path:, config:, board:) @cli = cli @config = config @path = path @board = board end
Public Instance Methods
call()
click to toggle source
# File lib/abt/providers/devops/services/work_item_picker.rb, line 30 def call work_item = select_work_item path_with_work_item = Path.from_ids( organization_name: path.organization_name, project_name: path.project_name, team_name: path.team_name, board_name: path.board_name, work_item_id: work_item["id"] ) Result.new(work_item: work_item, path: path_with_work_item) end
columns()
click to toggle source
# File lib/abt/providers/devops/services/work_item_picker.rb, line 82 def columns board["columns"] || api.get("#{path.project_name}/#{path.team_name}/_apis/work/boards/#{path.board_name}")["columns"] end
prompt_work_item(work_items)
click to toggle source
# File lib/abt/providers/devops/services/work_item_picker.rb, line 57 def prompt_work_item(work_items) options = work_items.map do |work_item| { "id" => work_item["id"], "name" => "##{work_item['id']} #{work_item['name']}" } end choice = cli.prompt.choice("Select a work item", options, nil_option: true) choice && work_items.find { |work_item| work_item["id"] == choice["id"] } end
select_work_item()
click to toggle source
# File lib/abt/providers/devops/services/work_item_picker.rb, line 44 def select_work_item column = cli.prompt.choice("Which column in #{board['name']}?", columns) cli.warn("Fetching work items...") work_items = work_items_in_column(column) if work_items.length.zero? cli.warn("Section is empty") select_work_item else prompt_work_item(work_items) || select_work_item end end
work_items_in_column(column)
click to toggle source
# File lib/abt/providers/devops/services/work_item_picker.rb, line 69 def work_items_in_column(column) work_items = api.work_item_query( <<~WIQL SELECT [System.Id] FROM WorkItems WHERE [System.BoardColumn] = '#{column['name']}' ORDER BY [Microsoft.VSTS.Common.BacklogPriority] ASC WIQL ) work_items.map { |work_item| api.sanitize_work_item(work_item) } end
Private Instance Methods
api()
click to toggle source
# File lib/abt/providers/devops/services/work_item_picker.rb, line 89 def api Abt::Providers::Devops::Api.new(organization_name: path.organization_name, username: config.username_for_organization(path.organization_name), access_token: config.access_token_for_organization(path.organization_name), cli: cli) end