Class: Fastlane::Actions::JiraTransitionsAction

Inherits:
Action
  • Object
show all
Defined in:
lib/fastlane/plugin/jira_transitions/actions/jira_transitions_action.rb

Class Method Summary collapse

Class Method Details

.authorsObject



37
38
39
# File 'lib/fastlane/plugin/jira_transitions/actions/jira_transitions_action.rb', line 37

def self.authors
  ["Ostap Taran"]
end

.available_optionsObject



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/fastlane/plugin/jira_transitions/actions/jira_transitions_action.rb', line 50

def self.available_options
  [
    FastlaneCore::ConfigItem.new(key: :client,
                        description: "JIRA::Client from 'jira-ruby' gem",
                          is_string: false,
                          optional: false,
                          type: JIRA::Client),
    FastlaneCore::ConfigItem.new(key: :ticket_id,
                         description: "ID of ticket",
                            optional: false,
                                type: String),
    FastlaneCore::ConfigItem.new(key: :transition_id,
                         description: "ID of transition to perform",
                            optional: true,
                                type: String,
                        verify_block: proc do |value|
                                        UI.user_error!("Invalid transition_id") if value.to_s.length == 0
                                    end),
    FastlaneCore::ConfigItem.new(key: :transition_name,
                         description: "Name of transition to perform",
                            optional: true,
                                type: String,
                        verify_block: proc do |value|
                                        UI.user_error!("Invalid transition_name") if value.to_s.length == 0
                                    end),
    FastlaneCore::ConfigItem.new(key: :matching,
                         description: "Block for custom transition matching options.
                         Transition that is passed to block is 'transition' from jira-ruby gem",
                            optional: true,
                           is_string: false),
    FastlaneCore::ConfigItem.new(key: :fail_if_no_matching,
                         description: "Whether plugin should crash if there is no matching transition",
                            optional: true,
                           is_string: false)
  ]
end

.descriptionObject



33
34
35
# File 'lib/fastlane/plugin/jira_transitions/actions/jira_transitions_action.rb', line 33

def self.description
  "Runs transitions for specified JIRA tickets"
end

.detailsObject



45
46
47
48
# File 'lib/fastlane/plugin/jira_transitions/actions/jira_transitions_action.rb', line 45

def self.details
  # Optional:
  "Helps to run transitions for specified JIRA tickets (matching by transition name or id)"
end

.is_supported?(platform) ⇒ Boolean

Returns:

  • (Boolean)


87
88
89
# File 'lib/fastlane/plugin/jira_transitions/actions/jira_transitions_action.rb', line 87

def self.is_supported?(platform)
  true
end

.return_valueObject



41
42
43
# File 'lib/fastlane/plugin/jira_transitions/actions/jira_transitions_action.rb', line 41

def self.return_value
  # If your method provides a return value, you can describe here what it does
end

.run(params) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/fastlane/plugin/jira_transitions/actions/jira_transitions_action.rb', line 7

def self.run(params)
  Actions.verify_gem!('jira-ruby')

  client = params[:client]
  issue = client.Issue.find(params[:ticket_id])
  issue_transitions = issue.transitions.all
  transition_builder = issue.transitions.build

  if params[:transition_id] 
    transition_builder.save!('transition' => {'id' => params[:transition_id]})
  else 
    transition = issue_transitions.select { |transition|
      if params[:matching]
        params[:matching].call(transition)
      else 
        transition.name == params[:transition_name]
      end
    }.first
    if !transition.nil? && !transition.id.nil?
     transition_builder.save('transition' => {'id' => transition.id })
    elsif params[:fail_if_no_matching] == true 
      UI.crash!("0 matching transitions")
    end
  end
end