fastlane-plugin-apadmi_grout 1.2.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/lib/fastlane/plugin/apadmi_grout/actions/find_tickets_to_move_action.rb +12 -60
- data/lib/fastlane/plugin/apadmi_grout/actions/generate_release_notes_action.rb +4 -52
- data/lib/fastlane/plugin/apadmi_grout/actions/move_tickets_action.rb +64 -0
- data/lib/fastlane/plugin/apadmi_grout/utils/common_options.rb +70 -0
- data/lib/fastlane/plugin/apadmi_grout/utils/di_wrapper.rb +36 -0
- data/lib/fastlane/plugin/apadmi_grout/version.rb +1 -1
- metadata +5 -3
- data/lib/fastlane/plugin/apadmi_grout/actions/move_jira_tickets_action.rb +0 -112
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d02eac3252dcc39f75565411836b996092e96e83d7b6cc94fcfa7468205b2d40
|
4
|
+
data.tar.gz: 8631889511eaa1bcccf8fc43e3f678117bbb30667eab8e0c86a823f3b2850d83
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aa0a969899d469ffbca92b37ba597509bf2a4d26d3c80cf5e5da3e72430d9cbe821b96a46caa3014c4246e8a47ca06bff7d7914c8f00af4ac3eab0e5ee1e9faf
|
7
|
+
data.tar.gz: 4b5809d27c8b2a35afa5d1f150efc00ae1c6fa1a3c499ba5b314eec54072b4d4010ced6d4fc4c863e85da99c90f554c1bd9c24a92d0f2143569be761797c03fe
|
data/CHANGELOG.md
CHANGED
@@ -12,18 +12,11 @@ module Fastlane
|
|
12
12
|
logger = FastLane::FastlaneLogger.new
|
13
13
|
logger.message("Finding tickets to move")
|
14
14
|
|
15
|
-
build_tools = Apadmi::Grout::
|
16
|
-
params[:jira_username],
|
17
|
-
params[:jira_api_token],
|
18
|
-
params[:jira_base_url],
|
19
|
-
params[:jira_context_path],
|
20
|
-
params[:jira_project_key],
|
21
|
-
logger
|
22
|
-
)
|
15
|
+
build_tools = Apadmi::Grout::DIWrapper.di(params, logger)
|
23
16
|
|
24
17
|
build_tools.find_tickets_to_move_action.run(
|
25
|
-
params[:
|
26
|
-
params[:
|
18
|
+
params[:board_component_name],
|
19
|
+
params[:board_status_from],
|
27
20
|
[],
|
28
21
|
params[:custom_flag_messages],
|
29
22
|
params[:options]
|
@@ -39,62 +32,21 @@ module Fastlane
|
|
39
32
|
end
|
40
33
|
|
41
34
|
def self.available_options
|
42
|
-
[
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
env_name: "JIRA_USERNAME",
|
47
|
-
type: String,
|
48
|
-
verify_block: proc do |value|
|
49
|
-
UI.user_error!("Didn't pass a valid JIRA username") unless value
|
50
|
-
end,
|
51
|
-
optional: false),
|
52
|
-
FastlaneCore::ConfigItem.new(key: :jira_api_token,
|
53
|
-
description: "JIRA api token for authentication with JIRA",
|
54
|
-
env_name: "JIRA_API_TOKEN",
|
55
|
-
type: String,
|
56
|
-
verify_block: proc do |value|
|
57
|
-
UI.user_error!("Didn't pass a valid JIRA api token") unless value
|
58
|
-
end,
|
59
|
-
optional: false),
|
60
|
-
FastlaneCore::ConfigItem.new(key: :jira_project_key,
|
61
|
-
description: "JIRA project key",
|
62
|
-
env_name: "JIRA_PROJECT_KEY",
|
63
|
-
type: String,
|
64
|
-
verify_block: proc do |value|
|
65
|
-
UI.user_error!("Didn't pass a valid JIRA project key, e.g PPT") unless value
|
66
|
-
end,
|
67
|
-
optional: false),
|
68
|
-
FastlaneCore::ConfigItem.new(key: :jira_base_url,
|
69
|
-
description: "JIRA base url for the organisation",
|
70
|
-
env_name: "JIRA_BASE_URL",
|
71
|
-
type: String,
|
72
|
-
verify_block: proc do |value|
|
73
|
-
UI.user_error!("Didn't pass a valid JIRA base url") unless value
|
74
|
-
end,
|
75
|
-
optional: false),
|
76
|
-
FastlaneCore::ConfigItem.new(key: :jira_context_path,
|
77
|
-
description: "JIRA context path whatever that is ¯\\_(ツ)_/¯",
|
78
|
-
env_name: "JIRA_CONTEXT_PATH",
|
79
|
-
default_value: "",
|
80
|
-
type: String,
|
81
|
-
optional: true),
|
82
|
-
|
83
|
-
########## Action Specific ##########
|
84
|
-
FastlaneCore::ConfigItem.new(key: :jira_component_name,
|
85
|
-
description: "The JIRA component by which to filter tickets",
|
86
|
-
env_name: "JIRA_COMPONENT_NAME",
|
35
|
+
Apadmi::Grout::CommonOptions.board_options + [
|
36
|
+
FastlaneCore::ConfigItem.new(key: :board_component_name,
|
37
|
+
description: "The component by which to filter tickets",
|
38
|
+
env_name: "BOARD_COMPONENT_NAME",
|
87
39
|
type: String,
|
88
40
|
verify_block: proc do |value|
|
89
|
-
UI.user_error!("Didn't pass a valid
|
41
|
+
UI.user_error!("Didn't pass a valid component") unless value
|
90
42
|
end,
|
91
43
|
optional: false),
|
92
|
-
FastlaneCore::ConfigItem.new(key: :
|
93
|
-
description: "The
|
94
|
-
env_name: "
|
44
|
+
FastlaneCore::ConfigItem.new(key: :board_status_from,
|
45
|
+
description: "The status to filter by to find tickets",
|
46
|
+
env_name: "BOARD_STATUS_FROM",
|
95
47
|
type: String,
|
96
48
|
verify_block: proc do |value|
|
97
|
-
UI.user_error!("Didn't pass a valid
|
49
|
+
UI.user_error!("Didn't pass a valid status") unless value
|
98
50
|
end,
|
99
51
|
optional: false),
|
100
52
|
FastlaneCore::ConfigItem.new(key: :custom_flag_messages,
|
@@ -13,14 +13,7 @@ module Fastlane
|
|
13
13
|
logger = FastLane::FastlaneLogger.new
|
14
14
|
logger.message("Generating Release Notes")
|
15
15
|
|
16
|
-
build_tools = Apadmi::Grout::
|
17
|
-
params[:jira_username],
|
18
|
-
params[:jira_api_token],
|
19
|
-
params[:jira_base_url],
|
20
|
-
params[:jira_context_path],
|
21
|
-
params[:jira_project_key],
|
22
|
-
logger
|
23
|
-
)
|
16
|
+
build_tools = Apadmi::Grout::DIWrapper.di(params, logger)
|
24
17
|
|
25
18
|
logger.message("Finding changelog between #{params[:oldest_ref]} and #{params[:latest_ref]}")
|
26
19
|
changelog = Fastlane::Actions::ChangelogFromGitCommitsAction.run(
|
@@ -63,54 +56,13 @@ module Fastlane
|
|
63
56
|
end
|
64
57
|
|
65
58
|
def self.return_value
|
66
|
-
"
|
59
|
+
"Array of two items: [release_notes_as_string, path_to_file_on_disk]"
|
67
60
|
end
|
68
61
|
|
69
62
|
def self.available_options
|
70
|
-
[
|
71
|
-
########## JIRA Auth ##########
|
72
|
-
FastlaneCore::ConfigItem.new(key: :jira_username,
|
73
|
-
description: "JIRA username for authentication with JIRA",
|
74
|
-
env_name: "JIRA_USERNAME",
|
75
|
-
type: String,
|
76
|
-
verify_block: proc do |value|
|
77
|
-
UI.user_error!("Didn't pass a valid JIRA username") unless value
|
78
|
-
end,
|
79
|
-
optional: false),
|
80
|
-
FastlaneCore::ConfigItem.new(key: :jira_api_token,
|
81
|
-
description: "JIRA api token for authentication with JIRA",
|
82
|
-
env_name: "JIRA_API_TOKEN",
|
83
|
-
type: String,
|
84
|
-
verify_block: proc do |value|
|
85
|
-
UI.user_error!("Didn't pass a valid JIRA api token") unless value
|
86
|
-
end,
|
87
|
-
optional: false),
|
88
|
-
FastlaneCore::ConfigItem.new(key: :jira_project_key,
|
89
|
-
description: "JIRA project key",
|
90
|
-
env_name: "JIRA_PROJECT_KEY",
|
91
|
-
type: String,
|
92
|
-
verify_block: proc do |value|
|
93
|
-
UI.user_error!("Didn't pass a valid JIRA project key, e.g PPT") unless value
|
94
|
-
end,
|
95
|
-
optional: false),
|
96
|
-
FastlaneCore::ConfigItem.new(key: :jira_base_url,
|
97
|
-
description: "JIRA base url for the organisation",
|
98
|
-
env_name: "JIRA_BASE_URL",
|
99
|
-
type: String,
|
100
|
-
verify_block: proc do |value|
|
101
|
-
UI.user_error!("Didn't pass a valid JIRA base url") unless value
|
102
|
-
end,
|
103
|
-
optional: false),
|
104
|
-
FastlaneCore::ConfigItem.new(key: :jira_context_path,
|
105
|
-
description: "JIRA context path whatever that is ¯\\_(ツ)_/¯",
|
106
|
-
env_name: "JIRA_CONTEXT_PATH",
|
107
|
-
default_value: "",
|
108
|
-
type: String,
|
109
|
-
optional: true),
|
110
|
-
|
111
|
-
########## Action Specific ##########
|
63
|
+
Apadmi::Grout::CommonOptions.board_options + [
|
112
64
|
FastlaneCore::ConfigItem.new(key: :tickets_moved_by_build,
|
113
|
-
description: "Any
|
65
|
+
description: "Any tickets who's state was moved by this build",
|
114
66
|
default_value: [],
|
115
67
|
type: Array,
|
116
68
|
optional: true),
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "fastlane/action"
|
4
|
+
require "apadmi_grout"
|
5
|
+
require_relative "../utils/fastlane_logger"
|
6
|
+
|
7
|
+
module Fastlane
|
8
|
+
module Actions
|
9
|
+
# Move JIRA tickets and generate release notes
|
10
|
+
class MoveTicketsAction < Action
|
11
|
+
def self.run(params)
|
12
|
+
logger = FastLane::FastlaneLogger.new
|
13
|
+
logger.message("Moving #{params[:board_provider]} tickets")
|
14
|
+
|
15
|
+
build_tools = Apadmi::Grout::DIWrapper.di(params, logger)
|
16
|
+
|
17
|
+
build_tools.move_tickets_action.run(
|
18
|
+
params[:versions],
|
19
|
+
params[:issues],
|
20
|
+
params[:board_status_to]
|
21
|
+
)
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.description
|
25
|
+
"Convenience lane that moves all supplied jira tickets to new status and assigns versions."
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.authors
|
29
|
+
["samdc@apadmi.com"]
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.available_options
|
33
|
+
Apadmi::Grout::CommonOptions.board_options + [
|
34
|
+
FastlaneCore::ConfigItem.new(key: :board_status_to,
|
35
|
+
description: "The JIRA status to move the tickets to",
|
36
|
+
env_name: "BOARD_STATUS_TO",
|
37
|
+
type: String,
|
38
|
+
verify_block: proc do |value|
|
39
|
+
UI.user_error!("Didn't pass a valid JIRA status") unless value
|
40
|
+
end,
|
41
|
+
optional: false),
|
42
|
+
FastlaneCore::ConfigItem.new(key: :versions,
|
43
|
+
description: "The versions to add to the jira ticket",
|
44
|
+
type: Array,
|
45
|
+
verify_block: proc do |value|
|
46
|
+
UI.user_error!("Didn't pass a valid array of versions") unless value || value.empty
|
47
|
+
end,
|
48
|
+
optional: false),
|
49
|
+
FastlaneCore::ConfigItem.new(key: :issues,
|
50
|
+
description: "The issues to be moved",
|
51
|
+
type: Array,
|
52
|
+
verify_block: proc do |value|
|
53
|
+
UI.user_error!("Didn't pass a valid array of issues") unless value
|
54
|
+
end,
|
55
|
+
optional: false)
|
56
|
+
]
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.is_supported?(_platform)
|
60
|
+
true
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Apadmi
|
4
|
+
module Grout
|
5
|
+
# Common options used to setup ADO and JIRA integration
|
6
|
+
class CommonOptions
|
7
|
+
def self.board_options
|
8
|
+
[
|
9
|
+
FastlaneCore::ConfigItem.new(key: :board_base_url,
|
10
|
+
description: "Base url for the organisation",
|
11
|
+
env_name: "BOARD_BASE_URL",
|
12
|
+
type: String,
|
13
|
+
verify_block: proc do |value|
|
14
|
+
UI.user_error!("Didn't pass a valid base url") unless value
|
15
|
+
end,
|
16
|
+
optional: false),
|
17
|
+
FastlaneCore::ConfigItem.new(key: :board_provider,
|
18
|
+
description: "The board provider, valid values: ADO|JIRA",
|
19
|
+
env_name: "BOARD_PROVIDER",
|
20
|
+
type: String,
|
21
|
+
default_value: "JIRA",
|
22
|
+
verify_block: proc do |value|
|
23
|
+
UI.user_error!("Didn't pass a valid board provider") unless value
|
24
|
+
end,
|
25
|
+
optional: false)
|
26
|
+
] + ado_options + jira_options
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.ado_options
|
30
|
+
[
|
31
|
+
FastlaneCore::ConfigItem.new(key: :ado_pat,
|
32
|
+
description: "ADO personal access token for authentication",
|
33
|
+
env_name: "ADO_PAT",
|
34
|
+
type: String,
|
35
|
+
verify_block: proc do |value|
|
36
|
+
UI.user_error!("Didn't pass a valid personal access token") unless value
|
37
|
+
end,
|
38
|
+
optional: true)
|
39
|
+
]
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.jira_options
|
43
|
+
[
|
44
|
+
FastlaneCore::ConfigItem.new(key: :jira_username,
|
45
|
+
description: "JIRA username for authentication with JIRA",
|
46
|
+
env_name: "JIRA_USERNAME",
|
47
|
+
type: String,
|
48
|
+
optional: true),
|
49
|
+
FastlaneCore::ConfigItem.new(key: :jira_api_token,
|
50
|
+
description: "JIRA api token for authentication with JIRA",
|
51
|
+
env_name: "JIRA_API_TOKEN",
|
52
|
+
type: String,
|
53
|
+
optional: true),
|
54
|
+
FastlaneCore::ConfigItem.new(key: :jira_project_key,
|
55
|
+
description: "JIRA project key",
|
56
|
+
env_name: "JIRA_PROJECT_KEY",
|
57
|
+
type: String,
|
58
|
+
optional: true),
|
59
|
+
|
60
|
+
FastlaneCore::ConfigItem.new(key: :jira_context_path,
|
61
|
+
description: "JIRA context path whatever that is ¯\\_(ツ)_/¯",
|
62
|
+
env_name: "JIRA_CONTEXT_PATH",
|
63
|
+
default_value: "",
|
64
|
+
type: String,
|
65
|
+
optional: true)
|
66
|
+
]
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Apadmi
|
4
|
+
module Grout
|
5
|
+
# Helper function for constructing the DI from params
|
6
|
+
class DIWrapper
|
7
|
+
def self.di(params, logger)
|
8
|
+
case params[:board_provider]
|
9
|
+
when "ADO"
|
10
|
+
raise "Invalid ADO personal access token" if params[:ado_pat].blank?
|
11
|
+
|
12
|
+
Apadmi::Grout::DependencyInjector.init_for_ado(
|
13
|
+
params[:ado_pat],
|
14
|
+
params[:board_base_url],
|
15
|
+
logger
|
16
|
+
)
|
17
|
+
when "JIRA"
|
18
|
+
raise "Invalid jira username" if params[:jira_username].blank?
|
19
|
+
raise "Invalid jira_api_token" if params[:jira_api_token].blank?
|
20
|
+
raise "Invalid jira_project_key" if params[:jira_project_key].blank?
|
21
|
+
|
22
|
+
Apadmi::Grout::DependencyInjector.init_for_jira(
|
23
|
+
params[:jira_username],
|
24
|
+
params[:jira_api_token],
|
25
|
+
params[:board_base_url],
|
26
|
+
params[:jira_context_path],
|
27
|
+
params[:jira_project_key],
|
28
|
+
logger
|
29
|
+
)
|
30
|
+
else
|
31
|
+
raise "Unsupported board provider: #{params[:board_provider]}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-apadmi_grout
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Apadmi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-05-
|
11
|
+
date: 2022-05-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: apadmi_grout
|
@@ -164,7 +164,9 @@ files:
|
|
164
164
|
- lib/fastlane/plugin/apadmi_grout/actions/find_tickets_to_move_action.rb
|
165
165
|
- lib/fastlane/plugin/apadmi_grout/actions/generate_release_notes_action.rb
|
166
166
|
- lib/fastlane/plugin/apadmi_grout/actions/get_deployment_target_action.rb
|
167
|
-
- lib/fastlane/plugin/apadmi_grout/actions/
|
167
|
+
- lib/fastlane/plugin/apadmi_grout/actions/move_tickets_action.rb
|
168
|
+
- lib/fastlane/plugin/apadmi_grout/utils/common_options.rb
|
169
|
+
- lib/fastlane/plugin/apadmi_grout/utils/di_wrapper.rb
|
168
170
|
- lib/fastlane/plugin/apadmi_grout/utils/fastlane_logger.rb
|
169
171
|
- lib/fastlane/plugin/apadmi_grout/version.rb
|
170
172
|
homepage: https://bitbucket.org/apadmi/apadmi-grout-ruby/
|
@@ -1,112 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "fastlane/action"
|
4
|
-
require "apadmi_grout"
|
5
|
-
require_relative "../utils/fastlane_logger"
|
6
|
-
|
7
|
-
module Fastlane
|
8
|
-
module Actions
|
9
|
-
# Move JIRA tickets and generate release notes
|
10
|
-
class MoveJiraTicketsAction < Action
|
11
|
-
def self.run(params)
|
12
|
-
logger = FastLane::FastlaneLogger.new
|
13
|
-
logger.message("Moving Jira tickets")
|
14
|
-
|
15
|
-
build_tools = Apadmi::Grout::DependencyInjector.new(
|
16
|
-
params[:jira_username],
|
17
|
-
params[:jira_api_token],
|
18
|
-
params[:jira_base_url],
|
19
|
-
params[:jira_context_path],
|
20
|
-
params[:jira_project_key],
|
21
|
-
logger
|
22
|
-
)
|
23
|
-
|
24
|
-
build_tools.move_jira_tickets_action.run(
|
25
|
-
params[:versions],
|
26
|
-
params[:issues],
|
27
|
-
params[:jira_status_to]
|
28
|
-
)
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.description
|
32
|
-
"Convenience lane that moves all supplied jira tickets to new status and assigns versions."
|
33
|
-
end
|
34
|
-
|
35
|
-
def self.authors
|
36
|
-
["samdc@apadmi.com"]
|
37
|
-
end
|
38
|
-
|
39
|
-
def self.available_options
|
40
|
-
[
|
41
|
-
########## JIRA Auth ##########
|
42
|
-
FastlaneCore::ConfigItem.new(key: :jira_username,
|
43
|
-
description: "JIRA username for authentication with JIRA",
|
44
|
-
env_name: "JIRA_USERNAME",
|
45
|
-
type: String,
|
46
|
-
verify_block: proc do |value|
|
47
|
-
UI.user_error!("Didn't pass a valid JIRA username") unless value
|
48
|
-
end,
|
49
|
-
optional: false),
|
50
|
-
FastlaneCore::ConfigItem.new(key: :jira_api_token,
|
51
|
-
description: "JIRA api token for authentication with JIRA",
|
52
|
-
env_name: "JIRA_API_TOKEN",
|
53
|
-
type: String,
|
54
|
-
verify_block: proc do |value|
|
55
|
-
UI.user_error!("Didn't pass a valid JIRA api token") unless value
|
56
|
-
end,
|
57
|
-
optional: false),
|
58
|
-
FastlaneCore::ConfigItem.new(key: :jira_project_key,
|
59
|
-
description: "JIRA project key",
|
60
|
-
env_name: "JIRA_PROJECT_KEY",
|
61
|
-
type: String,
|
62
|
-
verify_block: proc do |value|
|
63
|
-
UI.user_error!("Didn't pass a valid JIRA project key, e.g PPT") unless value
|
64
|
-
end,
|
65
|
-
optional: false),
|
66
|
-
FastlaneCore::ConfigItem.new(key: :jira_base_url,
|
67
|
-
description: "JIRA base url for the organisation",
|
68
|
-
env_name: "JIRA_BASE_URL",
|
69
|
-
type: String,
|
70
|
-
verify_block: proc do |value|
|
71
|
-
UI.user_error!("Didn't pass a valid JIRA base url") unless value
|
72
|
-
end,
|
73
|
-
optional: false),
|
74
|
-
FastlaneCore::ConfigItem.new(key: :jira_context_path,
|
75
|
-
description: "JIRA context path whatever that is ¯\\_(ツ)_/¯",
|
76
|
-
env_name: "JIRA_CONTEXT_PATH",
|
77
|
-
default_value: "",
|
78
|
-
type: String,
|
79
|
-
optional: true),
|
80
|
-
|
81
|
-
########## Action Specific ##########
|
82
|
-
FastlaneCore::ConfigItem.new(key: :jira_status_to,
|
83
|
-
description: "The JIRA status to move the tickets to",
|
84
|
-
env_name: "JIRA_STATUS_TO",
|
85
|
-
type: String,
|
86
|
-
verify_block: proc do |value|
|
87
|
-
UI.user_error!("Didn't pass a valid JIRA status") unless value
|
88
|
-
end,
|
89
|
-
optional: false),
|
90
|
-
FastlaneCore::ConfigItem.new(key: :versions,
|
91
|
-
description: "The versions to add to the jira ticket",
|
92
|
-
type: Array,
|
93
|
-
verify_block: proc do |value|
|
94
|
-
UI.user_error!("Didn't pass a valid array of versions") unless value || value.empty
|
95
|
-
end,
|
96
|
-
optional: false),
|
97
|
-
FastlaneCore::ConfigItem.new(key: :issues,
|
98
|
-
description: "The issues to be moved",
|
99
|
-
type: Array,
|
100
|
-
verify_block: proc do |value|
|
101
|
-
UI.user_error!("Didn't pass a valid array of issues") unless value
|
102
|
-
end,
|
103
|
-
optional: false)
|
104
|
-
]
|
105
|
-
end
|
106
|
-
|
107
|
-
def self.is_supported?(_platform)
|
108
|
-
true
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|