fastlane-plugin-apadmi_grout 1.0.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1a9fa2dc6dc2a72cf93887b268e8b4b70e1dc46448ae6c176deff32bc6e4638c
4
- data.tar.gz: 8ac1bfa13931a3a16e84b0f26ed2d1608601e6c0f889a902877f2b549cfd9abe
3
+ metadata.gz: d02eac3252dcc39f75565411836b996092e96e83d7b6cc94fcfa7468205b2d40
4
+ data.tar.gz: 8631889511eaa1bcccf8fc43e3f678117bbb30667eab8e0c86a823f3b2850d83
5
5
  SHA512:
6
- metadata.gz: c2b0c484165f980e30782d00658721585a8230032e14f1b47a69a2c0ab2804a00ce2f65e0053e47dd4b668f63730ccf57bf00491159230c55657f6e5b8f8c7f0
7
- data.tar.gz: '0537160518d0f2b27c0fe3552fe363a7956bd6fcc6943f1ca87ada8ae98e94f92baefe3e9025237f933a87cb869692340ae13e7aa71714c521c9331c3ce590ab'
6
+ metadata.gz: aa0a969899d469ffbca92b37ba597509bf2a4d26d3c80cf5e5da3e72430d9cbe821b96a46caa3014c4246e8a47ca06bff7d7914c8f00af4ac3eab0e5ee1e9faf
7
+ data.tar.gz: 4b5809d27c8b2a35afa5d1f150efc00ae1c6fa1a3c499ba5b314eec54072b4d4010ced6d4fc4c863e85da99c90f554c1bd9c24a92d0f2143569be761797c03fe
data/CHANGELOG.md CHANGED
@@ -1,7 +1,14 @@
1
1
  # Fastlane Plugin Changelog
2
2
 
3
- ## [Unreleased]
3
+ ## [2.0.0] - 2022-05-25
4
+ * Implement ADO support for all relevant existing actions
4
5
 
5
- ## [1.0.0] - 2022-05-09 - Initial release
6
+ ## [1.2.0] - 2022-05-17
7
+ * Automatically save generated release notes to a file on disk.
8
+
9
+ ## [1.1.0] - 2022-05-12
10
+ * Support allowing tickets that aren't assigned to a sprint to be moved.
11
+ * Create action for obtaining iOS deployment target
6
12
 
13
+ ## [1.0.0] - 2022-05-09 - Initial release
7
14
  * Fastlane wrappers for new core functionality
@@ -0,0 +1,98 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "fastlane/action"
4
+ require "apadmi_grout"
5
+ require "gym"
6
+ require_relative "../utils/fastlane_logger"
7
+
8
+ # WARNING: Since this is calling out to Gym, this isn't covered at all by tests
9
+ # Be very very careful before making any changes.
10
+ module Fastlane
11
+ module Actions
12
+ # Build an IPA binary
13
+ class BuildIpaAction < Action
14
+ def self.run(params)
15
+ logger = FastLane::FastlaneLogger.new
16
+
17
+ output_name = params[:output_name] || Apadmi::Grout::FilenameUtils.binary_output_filename(
18
+ client_name: params[:client_name],
19
+ product_name: params[:product_name],
20
+ platform: "iOS",
21
+ version: params[:version],
22
+ build_number: params[:build_number],
23
+ suffix: params[:suffix]
24
+ )
25
+
26
+ logger.message("Generating IPA: #{output_name}.ipa")
27
+ new_params = params
28
+ new_params[:output_name] = output_name
29
+
30
+ # Output dir being "." is the gym default, so overwrite this
31
+ if params[:output_directory].empty? || params[:output_directory] == "."
32
+ new_params[:output_directory] = ENV["BITRISE_DEPLOY_DIR"] || "#{Apadmi::Grout::GitUtils.git_root}/build"
33
+ end
34
+
35
+ result = Fastlane::Actions::GymAction.run(new_params)
36
+
37
+ logger.success("Generated #{output_name}.ipa in #{result}")
38
+ result
39
+ end
40
+
41
+ def self.description
42
+ "Builds an IPA"
43
+ end
44
+
45
+ def self.authors
46
+ ["samdc@apadmi.com"]
47
+ end
48
+
49
+ def self.available_options
50
+ [
51
+ FastlaneCore::ConfigItem.new(key: :client_name,
52
+ description: "The name of the ipa's client",
53
+ env_name: "CLIENT_NAME",
54
+ type: String,
55
+ verify_block: proc do |value|
56
+ UI.user_error!("Didn't pass a valid client name") unless value
57
+ end,
58
+ optional: false),
59
+ FastlaneCore::ConfigItem.new(key: :product_name,
60
+ description: "The name of the product",
61
+ env_name: "PRODUCT_NAME",
62
+ type: String,
63
+ verify_block: proc do |value|
64
+ UI.user_error!("Didn't pass a valid product name") unless value
65
+ end,
66
+ optional: false),
67
+ FastlaneCore::ConfigItem.new(key: :version,
68
+ description: "The app version e.g. 0.1.0",
69
+ type: String,
70
+ verify_block: proc do |value|
71
+ UI.user_error!("Didn't pass a valid version name") unless value
72
+ end,
73
+ optional: false),
74
+ FastlaneCore::ConfigItem.new(key: :build_number,
75
+ description: "The app build number e.g. 3948",
76
+ default_value: Apadmi::Grout::GitUtils.number_of_commits,
77
+ type: String,
78
+ verify_block: proc do |value|
79
+ UI.user_error!("Didn't pass a valid build number") unless value
80
+ end,
81
+ optional: false),
82
+ FastlaneCore::ConfigItem.new(key: :suffix,
83
+ description: "Suffix to identify what this output is (e.g. SOURCE, UAT, QA, DEV)",
84
+ type: String,
85
+ default_value: "",
86
+ verify_block: proc do |value|
87
+ UI.user_error!("Didn't pass a valid suffix") unless value
88
+ end,
89
+ optional: false)
90
+ ] + Gym::Options.available_options
91
+ end
92
+
93
+ def self.is_supported?(platform)
94
+ platform == :ios
95
+ end
96
+ end
97
+ end
98
+ end
@@ -12,19 +12,14 @@ module Fastlane
12
12
  logger = FastLane::FastlaneLogger.new
13
13
  logger.message("Finding tickets to move")
14
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
- )
15
+ build_tools = Apadmi::Grout::DIWrapper.di(params, logger)
23
16
 
24
17
  build_tools.find_tickets_to_move_action.run(
25
- params[:jira_component_name],
26
- params[:jira_status_from],
27
- []
18
+ params[:board_component_name],
19
+ params[:board_status_from],
20
+ [],
21
+ params[:custom_flag_messages],
22
+ params[:options]
28
23
  )
29
24
  end
30
25
 
@@ -37,64 +32,33 @@ module Fastlane
37
32
  end
38
33
 
39
34
  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",
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",
61
39
  type: String,
62
40
  verify_block: proc do |value|
63
- UI.user_error!("Didn't pass a valid JIRA project key, e.g PPT") unless value
41
+ UI.user_error!("Didn't pass a valid component") unless value
64
42
  end,
65
43
  optional: false),
66
- FastlaneCore::ConfigItem.new(key: :jira_base_url,
67
- description: "JIRA base url for the organisation",
68
- env_name: "JIRA_BASE_URL",
44
+ FastlaneCore::ConfigItem.new(key: :board_status_from,
45
+ description: "The status to filter by to find tickets",
46
+ env_name: "BOARD_STATUS_FROM",
69
47
  type: String,
70
48
  verify_block: proc do |value|
71
- UI.user_error!("Didn't pass a valid JIRA base url") unless value
49
+ UI.user_error!("Didn't pass a valid status") unless value
72
50
  end,
73
51
  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,
52
+ FastlaneCore::ConfigItem.new(key: :custom_flag_messages,
53
+ description: "Custom messages to use when flagging tickets",
54
+ type: Apadmi::Grout::FlagMessages,
55
+ default_value: nil,
79
56
  optional: true),
80
-
81
- ########## Action Specific ##########
82
- FastlaneCore::ConfigItem.new(key: :jira_component_name,
83
- description: "The JIRA component by which to filter tickets",
84
- env_name: "JIRA_COMPONENT_NAME",
85
- type: String,
86
- verify_block: proc do |value|
87
- UI.user_error!("Didn't pass a valid JIRA component") unless value
88
- end,
89
- optional: false),
90
- FastlaneCore::ConfigItem.new(key: :jira_status_from,
91
- description: "The JIRA status to filter by to find tickets",
92
- env_name: "JIRA_STATUS_FROM",
93
- type: String,
94
- verify_block: proc do |value|
95
- UI.user_error!("Didn't pass a valid JIRA status") unless value
96
- end,
97
- optional: false)
57
+ FastlaneCore::ConfigItem.new(key: :options,
58
+ description: "Additional options to customize search",
59
+ type: Apadmi::Grout::FindTicketsOptions,
60
+ default_value: nil,
61
+ optional: true)
98
62
  ]
99
63
  end
100
64
 
@@ -3,6 +3,7 @@
3
3
  require "fastlane/action"
4
4
  require "apadmi_grout"
5
5
  require_relative "../utils/fastlane_logger"
6
+ require "fileutils"
6
7
 
7
8
  module Fastlane
8
9
  module Actions
@@ -12,14 +13,7 @@ module Fastlane
12
13
  logger = FastLane::FastlaneLogger.new
13
14
  logger.message("Generating Release Notes")
14
15
 
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
- )
16
+ build_tools = Apadmi::Grout::DIWrapper.di(params, logger)
23
17
 
24
18
  logger.message("Finding changelog between #{params[:oldest_ref]} and #{params[:latest_ref]}")
25
19
  changelog = Fastlane::Actions::ChangelogFromGitCommitsAction.run(
@@ -43,7 +37,14 @@ module Fastlane
43
37
  )
44
38
 
45
39
  logger.message("Generating Release Notes")
46
- build_tools.generate_release_notes_action.run(config)
40
+ release_notes = build_tools.generate_release_notes_action.run(config)
41
+
42
+ FileUtils.mkdir_p(params[:output_dir])
43
+ file_name = "#{params[:output_dir]}/#{params[:release_notes_title]}-#{params[:app_version]}.md"
44
+
45
+ File.write(file_name, release_notes)
46
+ logger.success("Saved Release Notes to #{file_name}")
47
+ [release_notes, file_name]
47
48
  end
48
49
 
49
50
  def self.description
@@ -55,54 +56,13 @@ module Fastlane
55
56
  end
56
57
 
57
58
  def self.return_value
58
- "The full release notes generated as one String"
59
+ "Array of two items: [release_notes_as_string, path_to_file_on_disk]"
59
60
  end
60
61
 
61
62
  def self.available_options
62
- [
63
- ########## JIRA Auth ##########
64
- FastlaneCore::ConfigItem.new(key: :jira_username,
65
- description: "JIRA username for authentication with JIRA",
66
- env_name: "JIRA_USERNAME",
67
- type: String,
68
- verify_block: proc do |value|
69
- UI.user_error!("Didn't pass a valid JIRA username") unless value
70
- end,
71
- optional: false),
72
- FastlaneCore::ConfigItem.new(key: :jira_api_token,
73
- description: "JIRA api token for authentication with JIRA",
74
- env_name: "JIRA_API_TOKEN",
75
- type: String,
76
- verify_block: proc do |value|
77
- UI.user_error!("Didn't pass a valid JIRA api token") unless value
78
- end,
79
- optional: false),
80
- FastlaneCore::ConfigItem.new(key: :jira_project_key,
81
- description: "JIRA project key",
82
- env_name: "JIRA_PROJECT_KEY",
83
- type: String,
84
- verify_block: proc do |value|
85
- UI.user_error!("Didn't pass a valid JIRA project key, e.g PPT") unless value
86
- end,
87
- optional: false),
88
- FastlaneCore::ConfigItem.new(key: :jira_base_url,
89
- description: "JIRA base url for the organisation",
90
- env_name: "JIRA_BASE_URL",
91
- type: String,
92
- verify_block: proc do |value|
93
- UI.user_error!("Didn't pass a valid JIRA base url") unless value
94
- end,
95
- optional: false),
96
- FastlaneCore::ConfigItem.new(key: :jira_context_path,
97
- description: "JIRA context path whatever that is ¯\\_(ツ)_/¯",
98
- env_name: "JIRA_CONTEXT_PATH",
99
- default_value: "",
100
- type: String,
101
- optional: true),
102
-
103
- ########## Action Specific ##########
63
+ Apadmi::Grout::CommonOptions.board_options + [
104
64
  FastlaneCore::ConfigItem.new(key: :tickets_moved_by_build,
105
- description: "Any JIRA tickets who's state was moved by this build",
65
+ description: "Any tickets who's state was moved by this build",
106
66
  default_value: [],
107
67
  type: Array,
108
68
  optional: true),
@@ -163,7 +123,11 @@ module Fastlane
163
123
  FastlaneCore::ConfigItem.new(key: :templates,
164
124
  description: "Release notes templates",
165
125
  default_value: Apadmi::Grout::Templates.default,
166
- type: Apadmi::Grout::Templates)
126
+ type: Apadmi::Grout::Templates),
127
+ FastlaneCore::ConfigItem.new(key: :output_dir,
128
+ description: "Directory in which to save the release notes file",
129
+ default_value: ENV["BITRISE_DEPLOY_DIR"] || "#{Apadmi::Grout::GitUtils.git_root}/build",
130
+ type: String)
167
131
  ]
168
132
  end
169
133
 
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "fastlane/action"
4
+ require "apadmi_grout"
5
+ require_relative "../utils/fastlane_logger"
6
+
7
+ # WARNING: Since this is calling out to Gym, this isn't covered at all by tests
8
+ # Be very very careful before making any changes.
9
+ module Fastlane
10
+ module Actions
11
+ # Build an IPA binary
12
+ class GetDeploymentTargetAction < Action
13
+ def self.run(params)
14
+ logger = FastLane::FastlaneLogger.new
15
+
16
+ configuration = params[:configuration]
17
+ project = Fastlane::Actions::GetVersionNumberAction.get_project!(
18
+ params[:xcodeproj_path_or_dir]
19
+ )
20
+
21
+ logger.message("Searching for target #{params[:target]} in #{params[:xcodeproj_path_or_dir]}")
22
+ target = Fastlane::Actions::GetVersionNumberAction.get_target!(
23
+ project,
24
+ params[:target]
25
+ )
26
+
27
+ target.build_configurations.each do |config|
28
+ next unless configuration.nil? || config.name == configuration
29
+
30
+ value = config.resolve_build_setting("IPHONEOS_DEPLOYMENT_TARGET")
31
+ return value unless value.blank?
32
+ end
33
+
34
+ raise "Could not find deployment target for #{params[:xcodeproj_path_or_dir]} and #{params[:target]}"
35
+ end
36
+
37
+ def self.description
38
+ "Pulls the deployment target from the XCode project"
39
+ end
40
+
41
+ def self.authors
42
+ ["samdc@apadmi.com"]
43
+ end
44
+
45
+ def self.available_options
46
+ [
47
+ FastlaneCore::ConfigItem.new(key: :xcodeproj_path_or_dir,
48
+ description: "Path to, or directory of xcode project file",
49
+ type: String,
50
+ default_value: ".",
51
+ optional: false),
52
+ FastlaneCore::ConfigItem.new(key: :target,
53
+ description: "The target who's deployment target you want",
54
+ type: String,
55
+ default_value: "app",
56
+ optional: false),
57
+ FastlaneCore::ConfigItem.new(key: :configuration,
58
+ description: "The configuration who's target you want",
59
+ type: String,
60
+ optional: true)
61
+ ]
62
+ end
63
+
64
+ def self.is_supported?(platform)
65
+ platform == :ios
66
+ end
67
+ end
68
+ end
69
+ end
@@ -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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Fastlane
4
4
  module ApadmiGrout
5
- VERSION = "1.0.0"
5
+ VERSION = "2.0.0"
6
6
  end
7
7
  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: 1.0.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
- - Sam
7
+ - Apadmi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-09 00:00:00.000000000 Z
11
+ date: 2022-05-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: apadmi_grout
@@ -160,9 +160,13 @@ files:
160
160
  - CHANGELOG.md
161
161
  - LICENSE
162
162
  - lib/fastlane/plugin/apadmi_grout.rb
163
+ - lib/fastlane/plugin/apadmi_grout/actions/build_ipa_action.rb
163
164
  - lib/fastlane/plugin/apadmi_grout/actions/find_tickets_to_move_action.rb
164
165
  - lib/fastlane/plugin/apadmi_grout/actions/generate_release_notes_action.rb
165
- - lib/fastlane/plugin/apadmi_grout/actions/move_jira_tickets_action.rb
166
+ - lib/fastlane/plugin/apadmi_grout/actions/get_deployment_target_action.rb
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
166
170
  - lib/fastlane/plugin/apadmi_grout/utils/fastlane_logger.rb
167
171
  - lib/fastlane/plugin/apadmi_grout/version.rb
168
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