Class: Fastlane::Actions::GetJiraVersionAction

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

Documentation collapse

Class Method Summary collapse

Class Method Details

.authorsObject



154
155
156
# File 'lib/fastlane/plugin/jira_util/actions/get_jira_version.rb', line 154

def self.authors
  [ "https://github.com/alexeyn-martynov" ]
end

.available_optionsObject



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# File 'lib/fastlane/plugin/jira_util/actions/get_jira_version.rb', line 73

def self.available_options
  [
    FastlaneCore::ConfigItem.new(key: :url,
                                env_name: "FL_JIRA_UTIL_SITE",
                                description: "URL for Jira instance",
                                type: String,
                                verify_block: proc do |value|
                                  UI.user_error!("No url for Jira given, pass using `url: 'url'`") unless value and !value.empty?
                                end),
    FastlaneCore::ConfigItem.new(key: :username,
                                 env_name: "FL_JIRA_UTIL_USERNAME",
                                 description: "Username for JIRA instance",
                                 type: String,
                                 verify_block: proc do |value|
                                   UI.user_error!("No username given, pass using `username: 'jira_user'`") unless value and !value.empty?
                                 end),
    FastlaneCore::ConfigItem.new(key: :password,
                                 env_name: "FL_JIRA_UTIL_PASSWORD",
                                 description: "Password for Jira",
                                 type: String,
                                 verify_block: proc do |value|
                                   UI.user_error!("No password given, pass using `password: 'T0PS3CR3T'`") unless value and !value.empty?
                                 end),
    FastlaneCore::ConfigItem.new(key: :project_name,
                                 env_name: "FL_JIRA_UTIL_PROJECT_NAME",
                                 description: "Project ID for the JIRA project. E.g. the short abbreviation in the JIRA ticket tags",
                                 type: String,
                                 optional: true,
                                 conflicting_options: [:project_id],
                                 conflict_block: proc do |value|
                                   UI.user_error!("You can't use 'project_name' and '#{project_id}' options in one run")
                                 end,
                                 verify_block: proc do |value|
                                   UI.user_error!("No Project ID given, pass using `project_id: 'PROJID'`") unless value and !value.empty?
                                 end),
    FastlaneCore::ConfigItem.new(key: :project_id,
                                 env_name: "FL_JIRA_UTIL_PROJECT_ID",
                                 description: "Project ID for the JIRA project. E.g. the short abbreviation in the JIRA ticket tags",
                                 type: String,
                                 optional: true,
                                 conflicting_options: [:project_name],
                                 conflict_block: proc do |value|
                                   UI.user_error!("You can't use 'project_id' and '#{project_name}' options in one run")
                                 end,
                                 verify_block: proc do |value|
                                   UI.user_error!("No Project ID given, pass using `project_id: 'PROJID'`") unless value and !value.empty?
                                 end),
    FastlaneCore::ConfigItem.new(key: :id,
                                 description: "JIRA version id. E.g. 123456",
                                 optional: true,
                                 conflicting_options: [ :name ],
                                 conflict_block: proc do |value|
                                   UI.user_error!("You can't use 'id' and 'name' options in one run")
                                 end,
                                 verify_block: proc do |value|
                                   UI.user_error!("Empty verison id") unless !value.nil? and !value.empty?
                                 end),
    FastlaneCore::ConfigItem.new(key: :name,
                                 description: "JIRA version name",
                                 is_string: false,
                                 optional: true,
                                 conflicting_options: [:id],
                                 conflict_block: proc do |value|
                                    UI.user_error!("You can't use 'id' and 'name' options in one run")
                                 end,
                                 verify_block: proc do |value|
                                    UI.user_error!("Empty verison name") unless !value.nil? and !value.empty?
                                 end)
  ]
end

.descriptionObject



65
66
67
# File 'lib/fastlane/plugin/jira_util/actions/get_jira_version.rb', line 65

def self.description
  "Finds project version in your JIRA project by id or by name"
end

.detailsObject



69
70
71
# File 'lib/fastlane/plugin/jira_util/actions/get_jira_version.rb', line 69

def self.details
  "Use this action to find a version in JIRA"
end

.is_supported?(platform) ⇒ Boolean

Returns:

  • (Boolean)


158
159
160
# File 'lib/fastlane/plugin/jira_util/actions/get_jira_version.rb', line 158

def self.is_supported?(platform)
  true
end

.outputObject



144
145
146
147
148
# File 'lib/fastlane/plugin/jira_util/actions/get_jira_version.rb', line 144

def self.output
  [
    ['JIRA_UTIL_GET_JIRA_VERSION_RESULT', 'Hash containing all version attributes']
  ]
end

.return_valueObject



150
151
152
# File 'lib/fastlane/plugin/jira_util/actions/get_jira_version.rb', line 150

def self.return_value
  'Hash containing all version attributes'
end

.run(params) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/fastlane/plugin/jira_util/actions/get_jira_version.rb', line 8

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

  site         = params[:url]
  context_path = ""
  auth_type    = :basic
  username     = params[:username]
  password     = params[:password]
  project_name = params[:project_name]
  project_id   = params[:project_id]
  released     = true

  options = {
    username:     username,
    password:     password,
    site:         site,
    context_path: context_path,
    auth_type:    auth_type,
    read_timeout: 120
  }

  client = JIRA::Client.new(options)

  unless project_name.nil?
    project = client.Project.find(project_name)
    project_id = project.id
  end
  raise ArgumentError.new("Project not found.") if project_id.nil?

  version = nil
  if !params[:id].nil?
    version = project.versions.find { |version| version.id == params[:id] }
  elsif !params[:name].nil?
    version = project.versions.find { |version| version.name == params[:name] }
  end

  version_attrs = if !version.nil? then
    Helper::JiraUtilHelper.transform_keys_to_symbols(version.attrs)
  else
    nil
  end

  Actions.lane_context[SharedValues::JIRA_UTIL_GET_JIRA_VERSION_RESULT] = version_attrs
  version_attrs
rescue RuntimeError
  UI.user_error!("#{$!}")
  nil
rescue JIRA::HTTPError
  UI.user_error!("Failed to find JIRA version: #{$!.response.body}")
  nil
end