fastlane-plugin-figure_release 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: e5506f2172f30349c63f4f6fb38e8d121f82aeaace44853224fcd63494dc55de
4
+ data.tar.gz: a2343fa4f95881ff7c7dbe0e8b91fdb71b4ee2dfca2ffa254a29f305a7c3ef1f
5
+ SHA512:
6
+ metadata.gz: 4da024aed47651e7b75420836dea636d1d31cca5389cfa688a77091a6d419418c8a360aab6f282e49e5818aed274b9b8932265032f0fca07cf008f7bb4a4fe89
7
+ data.tar.gz: 23d0ed85c345c0712784f8191f3246421806e2012b0b6507fc6f73798c66eed1b5a68f908e7aa0af8389e13f7dd8c59b7c5f1028e2eef88c43a67750450f025e
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2023 David Lang <David.lang398@gmail.com>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,52 @@
1
+ # figure_release plugin
2
+
3
+ [![fastlane Plugin Badge](https://rawcdn.githack.com/fastlane/fastlane/master/fastlane/assets/plugin-badge.svg)](https://rubygems.org/gems/fastlane-plugin-figure_release)
4
+
5
+ ## Getting Started
6
+
7
+ This project is a [_fastlane_](https://github.com/fastlane/fastlane) plugin. To get started with `fastlane-plugin-figure_release`, add it to your project by running:
8
+
9
+ ```bash
10
+ fastlane add_plugin figure_release
11
+ ```
12
+
13
+ ## About figure_release
14
+
15
+ Fastlane plugin for publishing React Native applications.
16
+
17
+ **Note to author:** Add a more detailed description about this plugin here. If your plugin contains multiple actions, make sure to mention them here.
18
+
19
+ ## Example
20
+
21
+ Check out the [example `Fastfile`](figure/dev-tool-configuration/fastlane-plugin-figure_release/fastlane/Fastfile) to see how to use this plugin. Try it by cloning the repo, running `fastlane install_plugins` and `bundle exec fastlane test`.
22
+
23
+ **Note to author:** Please set up a sample project to make it easy for users to explore what your plugin does. Provide everything that is necessary to try out the plugin in this project (including a sample Xcode/Android project if necessary)
24
+
25
+ ## Run tests for this plugin
26
+
27
+ To run both the tests, and code style validation, run
28
+
29
+ ```
30
+ rake
31
+ ```
32
+
33
+ To automatically fix many of the styling issues, use
34
+ ```
35
+ rubocop -a
36
+ ```
37
+
38
+ ## Issues and Feedback
39
+
40
+ For any other issues and feedback about this plugin, please submit it to this repository.
41
+
42
+ ## Troubleshooting
43
+
44
+ If you have trouble using plugins, check out the [Plugins Troubleshooting](https://docs.fastlane.tools/plugins/plugins-troubleshooting/) guide.
45
+
46
+ ## Using _fastlane_ Plugins
47
+
48
+ For more information about how the `fastlane` plugin system works, check out the [Plugins documentation](https://docs.fastlane.tools/plugins/create-plugin/).
49
+
50
+ ## About _fastlane_
51
+
52
+ _fastlane_ is the easiest way to automate beta deployments and releases for your iOS and Android apps. To learn more, check out [fastlane.tools](https://fastlane.tools).
@@ -0,0 +1,159 @@
1
+ require 'fastlane/action'
2
+ require_relative '../helper/figure_release_helper'
3
+
4
+ module Fastlane
5
+ module Actions
6
+ class FigurePrepareNativeReleaseAction < Action
7
+ def self.run(params)
8
+ version = params[:app_version]
9
+ self.js(params, version.dup)
10
+ notes = params[:release_notes].split(";", -1)
11
+ release_string = self.prepare_release_string(version, notes)
12
+ UI.message("Prepared release notes:" + "\n" + release_string)
13
+ platforms = params[:platform].split(",", -1)
14
+ platforms.each do |platform|
15
+ if platform == "ios"
16
+ self.ios(params, release_string.dup, version.dup)
17
+ end
18
+ if platform == "android"
19
+ self.android(params, release_string.dup, version.dup)
20
+ end
21
+ end
22
+ UI.message("Done!")
23
+ return false
24
+ end
25
+
26
+ def self.js(params, version)
27
+ self.file_replace(params[:package_json], /"version": "\d+.\d+.\d+",/, "\"version\": \"#{version}\",")
28
+ end
29
+
30
+ def self.ios(params, release_string, version)
31
+ UI.message("iOS")
32
+ UI.message("Updating version...")
33
+ other_action.increment_version_number(
34
+ xcodeproj: params[:ios_xcodeproj],
35
+ version_number: version,
36
+ )
37
+
38
+ UI.message("Writing iOS...")
39
+ self.file_prepend(params[:ios_path], release_string)
40
+ end
41
+
42
+ def self.android(params, release_string, version)
43
+ UI.message("Android")
44
+ UI.message("Updating version...")
45
+ other_action.increment_version_name(
46
+ gradle_file_path: params[:android_build_gradle],
47
+ version_name: version,
48
+ )
49
+
50
+ UI.message("Accessing Play Store...")
51
+ other_action.validate_play_store_json_key(
52
+ json_key: params[:android_key_path]
53
+ )
54
+
55
+ UI.message("Getting current version code...")
56
+ version_code = other_action.google_play_track_version_codes(
57
+ package_name: params[:app_id],
58
+ track: "production",
59
+ json_key: params[:android_key_path],
60
+ )
61
+ version_code_play_store = version_code[0].to_i
62
+ updated_version_code = version_code_play_store + 1
63
+ UI.message("Writing Android...")
64
+ file = params[:android_path] << "/" << updated_version_code.to_s << ".txt"
65
+ File.open(file, 'w') do |fd|
66
+ fd.write(release_string)
67
+ end
68
+ end
69
+
70
+ def self.prepare_release_string(version, notes)
71
+ result = version.strip + "\n"
72
+ notes.each do |note|
73
+ parsed = note.strip
74
+ unless parsed.empty?
75
+ result = result + "• " + parsed + "\n"
76
+ end
77
+ end
78
+ return result
79
+ end
80
+
81
+ def self.file_prepend(file, str)
82
+ new_contents = ""
83
+ File.open(file, 'r') do |fd|
84
+ contents = fd.read
85
+ new_contents = str << "\n" << contents
86
+ end
87
+ # Overwrite file but now with prepended string on it
88
+ File.open(file, 'w') do |fd|
89
+ fd.write(new_contents)
90
+ end
91
+ end
92
+
93
+ def self.file_replace(file_name, regex, replacement)
94
+ text = File.read(file_name)
95
+ new_contents = text.gsub(regex, replacement)
96
+ # To write changes to the file, use:
97
+ File.open(file_name, "w") { |file| file.puts new_contents }
98
+ end
99
+
100
+ def self.available_options
101
+ [
102
+ FastlaneCore::ConfigItem.new(key: :app_version,
103
+ description: "Version of the app",
104
+ optional: false,
105
+ type: String),
106
+ FastlaneCore::ConfigItem.new(key: :release_notes,
107
+ description: "Release notes (separated by ;)",
108
+ optional: false,
109
+ type: String),
110
+ FastlaneCore::ConfigItem.new(key: :platform,
111
+ description: "Platforms",
112
+ optional: true,
113
+ default_value: "ios,android",
114
+ type: String),
115
+ FastlaneCore::ConfigItem.new(key: :package_json,
116
+ description: "Path to package.json",
117
+ optional: true,
118
+ default_value: "./package.json",
119
+ type: String),
120
+ FastlaneCore::ConfigItem.new(key: :android_build_gradle,
121
+ description: "Path to build.gradle",
122
+ optional: true,
123
+ default_value: "./android/app/build.gradle",
124
+ type: String),
125
+ FastlaneCore::ConfigItem.new(key: :ios_xcodeproj,
126
+ description: "Path to .xcodeproj",
127
+ optional: false,
128
+ type: String),
129
+ FastlaneCore::ConfigItem.new(key: :ios_path,
130
+ description: "Path to iOS changelog",
131
+ optional: true,
132
+ default_value: "./fastlane/metadata/en-US/release_notes.txt",
133
+ type: String),
134
+ FastlaneCore::ConfigItem.new(key: :android_path,
135
+ description: "Path to android changelog folder",
136
+ optional: true,
137
+ default_value: "./fastlane/metadata/android/en-US/changelogs",
138
+ type: String),
139
+ FastlaneCore::ConfigItem.new(key: :android_key_path,
140
+ description: "Path to Android key",
141
+ optional: true,
142
+ default_value: "./fastlane/android_key.json",
143
+ type: String),
144
+ FastlaneCore::ConfigItem.new(key: :app_id,
145
+ description: "App ID",
146
+ optional: false ,
147
+ type: String),
148
+ ]
149
+ end
150
+
151
+ def self.is_supported?(platform)
152
+ # Adjust this if your plugin only works for a particular platform (iOS vs. Android, for example)
153
+ # See: https://docs.fastlane.tools/advanced/#control-configuration-by-lane-and-by-platform
154
+ [:ios, :android].include?(platform)
155
+ true
156
+ end
157
+ end
158
+ end
159
+ end
@@ -0,0 +1,143 @@
1
+ require 'fastlane/action'
2
+ require_relative '../helper/figure_release_helper'
3
+
4
+ module Fastlane
5
+ module Actions
6
+ class FigureReleaseDevelopmentAction < Action
7
+ def self.run(params)
8
+ platform = lane_context[:PLATFORM_NAME]
9
+ app = params[:app_name]
10
+ UI.message("Starting development release...")
11
+ UI.message("App: " + app)
12
+
13
+ if platform == :android
14
+ UI.message("Platform: Android")
15
+ self.info("CLEAN")
16
+ other_action.gradle(
17
+ task: 'clean',
18
+ project_dir: 'android',
19
+ )
20
+ self.info("ASSEMBLE")
21
+ other_action.gradle(
22
+ task: 'assemble',
23
+ project_dir: 'android',
24
+ build_type: 'Release',
25
+ flavor: 'development',
26
+ )
27
+
28
+ self.info("APP CENTER UPLOAD")
29
+ other_action.appcenter_upload(
30
+ api_token: params[:app_center_api_token],
31
+ owner_name: "Figure",
32
+ app_name: app,
33
+ file: "./android/app/build/outputs/apk/development/release/app-development-release.apk",
34
+ )
35
+
36
+ self.info("BUGSNAG NOTIFICATION")
37
+ other_action.send_build_to_bugsnag(
38
+ release_stage: "development",
39
+ api_key: params[:bugsnag_api_key],
40
+ config_file: params[:config_file],
41
+ )
42
+ else
43
+ UI.message("Platform: iOS")
44
+ file = "App Development.ipa"
45
+ self.info("MATCH")
46
+ other_action.match(
47
+ type: "adhoc",
48
+ app_identifier: params[:app_id],
49
+ s3_access_key: params[:s3_access_key],
50
+ s3_secret_access_key: params[:s3_secret_access_key],
51
+ force_for_new_devices: true,
52
+ )
53
+
54
+ self.info("BUILD")
55
+ other_action.build_app(
56
+ scheme: params[:ios_scheme],
57
+ output_directory: ".",
58
+ workspace: params[:ios_workspace],
59
+ output_name: file,
60
+ export_method: "ad-hoc",
61
+ xcargs: "-UseModernBuildSystem=YES",
62
+ )
63
+
64
+ self.info("APP CENTER UPLOAD")
65
+ other_action.appcenter_upload(
66
+ api_token: params[:app_center_api_token],
67
+ owner_name: "Figure",
68
+ app_name: app,
69
+ ipa: "./" + file,
70
+ )
71
+
72
+ self.info("BUGSNAG NOTIFICATION")
73
+ other_action.send_build_to_bugsnag(
74
+ release_stage: "development",
75
+ api_key: params[:bugsnag_api_key],
76
+ config_file: params[:config_file],
77
+ )
78
+
79
+ self.info("BUGSNAG DSYM UPLOAD")
80
+ other_action.upload_symbols_to_bugsnag(
81
+ api_key: params[:bugsnag_api_key],
82
+ config_file: params[:config_file],
83
+ )
84
+ end
85
+ UI.message("SUCCESS!")
86
+ end
87
+
88
+ def self.info(name)
89
+ UI.message("---------------------------------")
90
+ UI.message(name)
91
+ UI.message("---------------------------------")
92
+ end
93
+
94
+ def self.available_options
95
+ [
96
+ FastlaneCore::ConfigItem.new(key: :app_name,
97
+ description: "Name of the app in App Center",
98
+ optional: false,
99
+ type: String),
100
+ FastlaneCore::ConfigItem.new(key: :app_id,
101
+ description: "ID of the app",
102
+ optional: false,
103
+ type: String),
104
+ FastlaneCore::ConfigItem.new(key: :app_center_api_token,
105
+ description: "App Center API token",
106
+ optional: false,
107
+ type: String),
108
+ FastlaneCore::ConfigItem.new(key: :bugsnag_api_key,
109
+ description: "Bugsnag API key",
110
+ optional: false,
111
+ type: String),
112
+ FastlaneCore::ConfigItem.new(key: :s3_access_key,
113
+ description: "S3 Access key",
114
+ optional: false,
115
+ type: String),
116
+ FastlaneCore::ConfigItem.new(key: :s3_secret_access_key,
117
+ description: "S3 Secret access key",
118
+ optional: false,
119
+ type: String),
120
+ FastlaneCore::ConfigItem.new(key: :ios_scheme,
121
+ description: "Name of iOS scheme",
122
+ optional: false,
123
+ type: String),
124
+ FastlaneCore::ConfigItem.new(key: :ios_workspace,
125
+ description: "Name of iOS workspace",
126
+ optional: false,
127
+ type: String),
128
+ FastlaneCore::ConfigItem.new(key: :config_file,
129
+ description: "AndroidManifest.xml/Info.plist location",
130
+ optional: true,
131
+ type: String,),
132
+ ]
133
+ end
134
+
135
+ def self.is_supported?(platform)
136
+ # Adjust this if your plugin only works for a particular platform (iOS vs. Android, for example)
137
+ # See: https://docs.fastlane.tools/advanced/#control-configuration-by-lane-and-by-platform
138
+ [:ios, :android].include?(platform)
139
+ true
140
+ end
141
+ end
142
+ end
143
+ end
@@ -0,0 +1,169 @@
1
+ require 'fastlane/action'
2
+ require_relative '../helper/figure_release_helper'
3
+
4
+ module Fastlane
5
+ module Actions
6
+ class FigureReleaseProductionAction < Action
7
+ def self.run(params)
8
+ platform = lane_context[:PLATFORM_NAME]
9
+ app = params[:app_name]
10
+ UI.message("Starting production release...")
11
+ UI.message("App: " + app)
12
+
13
+ if platform == :android
14
+ UI.message("Platform: Android")
15
+ json_key = './android/key.json'
16
+ package_name = params[:app_id]
17
+
18
+ self.info("PLAY STORE CONNECT")
19
+ other_action.validate_play_store_json_key(
20
+ json_key: json_key
21
+ )
22
+
23
+ self.info("GET VERSION CODE")
24
+ version_code = other_action.google_play_track_version_codes(
25
+ package_name: package_name,
26
+ track: "production",
27
+ json_key: json_key,
28
+ )
29
+
30
+ version_code_play_store = version_code[0].to_i
31
+ update_version_code = version_code_play_store + 1
32
+
33
+ self.info("INCREMENT VERSION CODE")
34
+ other_action.increment_version_code(
35
+ gradle_file_path: "./android/app/build.gradle",
36
+ version_code: update_version_code.to_i,
37
+ )
38
+
39
+ self.info("CLEAN")
40
+ other_action.gradle(
41
+ task: 'clean',
42
+ project_dir: 'android',
43
+ )
44
+
45
+ self.info("ASSEMBLE")
46
+ other_action.gradle(
47
+ task: 'bundle',
48
+ project_dir: 'android',
49
+ build_type: 'Release',
50
+ flavor: 'production',
51
+ )
52
+
53
+ self.info("PLAY STORE UPLOAD")
54
+ other_action.upload_to_play_store(
55
+ package_name: package_name,
56
+ release_status: 'completed',
57
+ json_key: json_key,
58
+ aab: './android/app/build/outputs/bundle/productionRelease/app-production-release.aab',
59
+ skip_upload_apk: true,
60
+ skip_upload_changelogs: true,
61
+ )
62
+
63
+ self.info("BUGSNAG NOTIFICATION")
64
+ other_action.send_build_to_bugsnag(
65
+ release_stage: "production",
66
+ api_key: params[:bugsnag_api_key],
67
+ config_file: params[:config_file],
68
+ )
69
+ else
70
+ UI.message("Platform: iOS")
71
+ file = "App Production.ipa"
72
+ self.info("MATCH")
73
+ other_action.match(
74
+ type: "appstore",
75
+ app_identifier: params[:app_id],
76
+ s3_access_key: params[:s3_access_key],
77
+ s3_secret_access_key: params[:s3_secret_access_key],
78
+ )
79
+
80
+ self.info("APP STORE CONNECT")
81
+ other_action.app_store_connect_api_key
82
+
83
+ self.info("BUILD")
84
+ other_action.build_app(
85
+ scheme: params[:ios_scheme],
86
+ output_directory: ".",
87
+ workspace: params[:ios_workspace],
88
+ output_name: file,
89
+ export_method: "app-store",
90
+ xcargs: "-UseModernBuildSystem=YES",
91
+ )
92
+
93
+ self.info("APP STORE UPLOAD")
94
+ other_action.upload_to_app_store(
95
+ force: true,
96
+ app_identifier: params[:app_id],
97
+ skip_screenshots: true,
98
+ precheck_include_in_app_purchases: false,
99
+ )
100
+
101
+ self.info("BUGSNAG NOTIFICATION")
102
+ other_action.send_build_to_bugsnag(
103
+ release_stage: "production",
104
+ api_key: params[:bugsnag_api_key],
105
+ config_file: params[:config_file],
106
+ )
107
+
108
+ self.info("BUGSNAG DSYM UPLOAD")
109
+ other_action.upload_symbols_to_bugsnag(
110
+ api_key: params[:bugsnag_api_key],
111
+ config_file: params[:config_file],
112
+ )
113
+ end
114
+ UI.message("SUCCESS!")
115
+ end
116
+
117
+
118
+ def self.info(name)
119
+ UI.message("---------------------------------")
120
+ UI.message(name)
121
+ UI.message("---------------------------------")
122
+ end
123
+
124
+ def self.available_options
125
+ [
126
+ FastlaneCore::ConfigItem.new(key: :app_name,
127
+ description: "Name of the app in App Center",
128
+ optional: false,
129
+ type: String),
130
+ FastlaneCore::ConfigItem.new(key: :app_id,
131
+ description: "ID of the app",
132
+ optional: false,
133
+ type: String),
134
+ FastlaneCore::ConfigItem.new(key: :bugsnag_api_key,
135
+ description: "Bugsnag API key",
136
+ optional: false,
137
+ type: String),
138
+ FastlaneCore::ConfigItem.new(key: :s3_access_key,
139
+ description: "S3 Access key",
140
+ optional: false,
141
+ type: String),
142
+ FastlaneCore::ConfigItem.new(key: :s3_secret_access_key,
143
+ description: "S3 Secret access key",
144
+ optional: false,
145
+ type: String),
146
+ FastlaneCore::ConfigItem.new(key: :ios_scheme,
147
+ description: "Name of iOS scheme",
148
+ optional: false,
149
+ type: String),
150
+ FastlaneCore::ConfigItem.new(key: :ios_workspace,
151
+ description: "Name of iOS workspace",
152
+ optional: false,
153
+ type: String),
154
+ FastlaneCore::ConfigItem.new(key: :config_file,
155
+ description: "AndroidManifest.xml/Info.plist location",
156
+ optional: true,
157
+ type: String,),
158
+ ]
159
+ end
160
+
161
+ def self.is_supported?(platform)
162
+ # Adjust this if your plugin only works for a particular platform (iOS vs. Android, for example)
163
+ # See: https://docs.fastlane.tools/advanced/#control-configuration-by-lane-and-by-platform
164
+ [:ios, :android].include?(platform)
165
+ true
166
+ end
167
+ end
168
+ end
169
+ end
@@ -0,0 +1,16 @@
1
+ require 'fastlane_core/ui/ui'
2
+
3
+ module Fastlane
4
+ UI = FastlaneCore::UI unless Fastlane.const_defined?("UI")
5
+
6
+ module Helper
7
+ class FigureReleaseHelper
8
+ # class methods that you define here become available in your action
9
+ # as `Helper::FigureReleaseHelper.your_method`
10
+ #
11
+ def self.show_message
12
+ UI.message("Hello from the figure_release plugin helper!")
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,5 @@
1
+ module Fastlane
2
+ module FigureRelease
3
+ VERSION = "0.6.0"
4
+ end
5
+ end
@@ -0,0 +1,16 @@
1
+ require 'fastlane/plugin/figure_release/version'
2
+
3
+ module Fastlane
4
+ module FigureRelease
5
+ # Return all .rb files inside the "actions" and "helper" directory
6
+ def self.all_classes
7
+ Dir[File.expand_path('**/{actions,helper}/*.rb', File.dirname(__FILE__))]
8
+ end
9
+ end
10
+ end
11
+
12
+ # By default we want to import all available actions and helpers
13
+ # A plugin can contain any number of actions and plugins
14
+ Fastlane::FigureRelease.all_classes.each do |current|
15
+ require current
16
+ end
metadata ADDED
@@ -0,0 +1,190 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fastlane-plugin-figure_release
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.6.0
5
+ platform: ruby
6
+ authors:
7
+ - David Lang
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-05-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: fastlane
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 2.208.0
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 2.208.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec_junit_formatter
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '='
102
+ - !ruby/object:Gem::Version
103
+ version: 1.12.1
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '='
109
+ - !ruby/object:Gem::Version
110
+ version: 1.12.1
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop-performance
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rubocop-require_tools
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: simplecov
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ description:
154
+ email: david.lang@figure.dev
155
+ executables: []
156
+ extensions: []
157
+ extra_rdoc_files: []
158
+ files:
159
+ - LICENSE
160
+ - README.md
161
+ - lib/fastlane/plugin/figure_release.rb
162
+ - lib/fastlane/plugin/figure_release/actions/figure_prepare_native_release_action.rb
163
+ - lib/fastlane/plugin/figure_release/actions/figure_release_development_action.rb
164
+ - lib/fastlane/plugin/figure_release/actions/figure_release_production_action.rb
165
+ - lib/fastlane/plugin/figure_release/helper/figure_release_helper.rb
166
+ - lib/fastlane/plugin/figure_release/version.rb
167
+ homepage: https://github.com/FigurePOS/dev-tool-configuration
168
+ licenses:
169
+ - MIT
170
+ metadata: {}
171
+ post_install_message:
172
+ rdoc_options: []
173
+ require_paths:
174
+ - lib
175
+ required_ruby_version: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: '2.6'
180
+ required_rubygems_version: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - ">="
183
+ - !ruby/object:Gem::Version
184
+ version: '0'
185
+ requirements: []
186
+ rubygems_version: 3.1.6
187
+ signing_key:
188
+ specification_version: 4
189
+ summary: Fastlane plugin for publishing React Native applications.
190
+ test_files: []