fastlane-plugin-sunny_project 0.1.9 → 0.1.15

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: e5a4314d675651fcc54daa9ad1a652f848e351267b2118c2f4a4a8f2245db66b
4
- data.tar.gz: 22d4dc030288c6cca79205dc2afaad6136fce30e8b511fd2e4c8865875c8d510
3
+ metadata.gz: 6aea270fd928ab346d0584a3e4f38da827b8b3419a708c22ccec6998afcfe367
4
+ data.tar.gz: 30898a2a549a849d9d2c9b9cb62dbb6be17da9a9c6324c09ff70780bb38a18d1
5
5
  SHA512:
6
- metadata.gz: fdcdee64745b5be1d9125fc734493decde7ce7727866268f4114c26a21e5560d7919c790a7932f1ca2cbcf425aec77050d6f43197ac4fb4d4ad93eb337c34824
7
- data.tar.gz: 436546fe121d118181d5c34768ff67797e22b08545d98d7e7d06382beeb21f7981263c86999741f8279fe7dc9cc80fe953611d1bb41f0a3fe1ed2ad9b0e6123b
6
+ metadata.gz: e917e23d4bff8cc4cf7faf4512a1230bd86664a55334e10976e9f14469b291d50ea5432098c5e7ed7135f8814a2a100b65205ed13b11d4c923757f9e4450023a
7
+ data.tar.gz: 46dcab55ca6f875ef076ccf3c7d757633a63f5a1f528a991379b55fb1a20039c31af4a91b19748a66b893eee71097c761464a87c7410f1af8b5b1403d62415cd
@@ -8,14 +8,14 @@ require 'yaml'
8
8
  require_relative '../helper/plugin_options'
9
9
 
10
10
  def resort_keys(input)
11
- resort={}
12
- keys=[]
11
+ resort = {}
12
+ keys = []
13
13
  input.each_key do |key|
14
14
  puts("Key #{key} #{key.class}")
15
15
  keys.push("#{key}")
16
16
  end
17
17
 
18
- keys=keys.sort
18
+ keys = keys.sort
19
19
  puts("Sorted keys: #{keys}")
20
20
  keys.each do |k|
21
21
  resort[k] = input[k]
@@ -48,10 +48,9 @@ module Fastlane
48
48
  dependency_overrides = pubspec["dependency_overrides"]
49
49
 
50
50
  plugins.keys.each do |key|
51
- info = plugins[key]
52
- if info.empty?
53
- info = key
54
- end
51
+
52
+ info = plugins[key] ? plugins[key] : "#{key}"
53
+
55
54
  folder = key
56
55
  branch = nil
57
56
  path = nil
@@ -91,10 +90,10 @@ module Fastlane
91
90
 
92
91
  pyaml = Psych::Visitors::YAMLTree.create
93
92
  pyaml << pubspec
94
- n=StringIO.new
93
+ n = StringIO.new
95
94
  emitter = CustomVisitor.new(n)
96
95
  emitter.accept(pyaml.tree)
97
- final_pubspec=n.string.gsub("---", "")
96
+ final_pubspec = n.string.gsub("---", "")
98
97
  File.write('pubspec.yaml', final_pubspec)
99
98
  print(final_pubspec)
100
99
  end
@@ -136,7 +135,7 @@ module Fastlane
136
135
 
137
136
  def visit_Psych_Nodes_Scalar(o)
138
137
  if o.value.is_a? String
139
- str="#{o.value}"
138
+ str = "#{o.value}"
140
139
  if str.start_with?('^') || str.start_with?('..')
141
140
  @handler.scalar o.value, o.anchor, o.tag, o.plain, o.quoted, 1
142
141
  elsif str.start_with?('https://') || str.start_with?('git@')
@@ -150,7 +149,6 @@ module Fastlane
150
149
  end
151
150
  end
152
151
 
153
-
154
152
  end
155
153
  end
156
154
 
@@ -8,53 +8,7 @@ module Fastlane
8
8
 
9
9
  class ReleaseNotesAction < Action
10
10
  def self.run(options)
11
- changes = Sunny.string(options[:changes])
12
- if Sunny.blank(changes)
13
- if File.file?(Sunny.release_notes_file)
14
- changes = Sunny.string(File.read(Sunny.release_notes_file))
15
11
 
16
- UI.message "Found release notes: \n#####################################################\n\n#{changes}\n\n#####################################################\n"
17
- sleep(5)
18
- return changes
19
- end
20
- unless File.file?(Sunny.release_notes_file)
21
- changes = Sunny.string(Fastlane::Actions::ChangelogFromGitCommitsAction.run(
22
- path: "./",
23
- pretty: "%B",
24
- ancestry_path: false,
25
- match_lightweight_tag: true,
26
- quiet: false,
27
- merge_commit_filtering: ":exclude_merges"
28
- ))
29
-
30
- if Sunny.blank(changes)
31
- changes = Sunny.string(Fastlane::Actions::PromptAction.run(
32
- text: "Please Enter a description of what changed.\nWhen you are finished, type END\n Changelog: ",
33
- multi_line_end_keyword: 'END'))
34
- end
35
- end
36
- unless Sunny.blank(changes)
37
- File.open(Sunny.release_notes_file, 'w') { |file|
38
- file.write(changes)
39
- }
40
- end
41
- if File.file?(Sunny.release_notes_file)
42
- changes = Sunny.string(File.read(Sunny.release_notes_file))
43
- end
44
- end
45
-
46
- if File.file?("CHANGELOG.md")
47
- f = File.open("CHANGELOG.md", "r+")
48
- lines = f.readlines
49
- f.close
50
- v = Sunny.current_semver
51
- lines = ["## [#{v}]\n", " * #{changes}\n", "\n"] + lines
52
-
53
- output = File.new("CHANGELOG.md", "w")
54
- lines.each { |line| output.write line }
55
- output.close
56
- end
57
- changes
58
12
  end
59
13
 
60
14
  def self.description
@@ -0,0 +1,304 @@
1
+ require_relative '../helper/sunny_project_helper'
2
+ require 'semantic'
3
+ require 'yaml'
4
+
5
+ require_relative '../helper/plugin_options'
6
+
7
+ def resort_keys(input)
8
+ resort = {}
9
+ keys = []
10
+ input.each_key do |key|
11
+ puts("Key #{key} #{key.class}")
12
+ keys.push("#{key}")
13
+ end
14
+
15
+ keys = keys.sort
16
+ puts("Sorted keys: #{keys}")
17
+ keys.each do |k|
18
+ resort[k] = input[k]
19
+ end
20
+ resort
21
+ end
22
+
23
+ module Fastlane
24
+ UI = FastlaneCore::UI unless Fastlane.const_defined?("UI")
25
+ module Actions
26
+ class SunnyReleaseAction < Action
27
+ def self.run(options)
28
+ unless options[:skip_dirty_check]
29
+ Sunny.run_action(EnsureGitStatusCleanAction)
30
+ end
31
+
32
+
33
+ sunny_file = Sunny.config(SunnyProject::Options.available_options, {})
34
+ sunny_file.load_configuration_file("Sunnyfile")
35
+
36
+ app_file = CredentialsManager::AppfileConfig
37
+ firebase_app_id=sunny_file[:firebase_app_id]
38
+ unless firebase_app_id
39
+ UI.user_error!("Missing firebase_app_id. Set this in Sunnyfile")
40
+ end
41
+
42
+ old_version = Sunny.current_semver
43
+ build_number = ''
44
+ ## If we're not going to build, we don't need to update
45
+ # version numbers.
46
+ if options[:build] and not options[:no_bump]
47
+ if options[:release]
48
+ build_number = Sunny.do_increase_version(build: true, patch: true)
49
+ else
50
+ build_number = Sunny.do_increase_version(build: true)
51
+ end
52
+
53
+ unless build_number
54
+ UI.user_error!("Version incrementing failed")
55
+ return
56
+ end
57
+ end
58
+
59
+ # Whatever happened with the incrementing, this is the build number we're
60
+ # going with
61
+ version = Sunny.current_semver
62
+ UI.command_output("Build Version: #{version}")
63
+ changes = Sunny.release_notes(options)
64
+ UI.important('--------------- CHANGELOG ------------------')
65
+ UI.important(changes)
66
+ UI.important('--------------------------------------------')
67
+
68
+ # TRY to execute a build. if it fails, revert the version number changes
69
+ begin
70
+ if options[:build]
71
+ if options[:skip_flutter_build]
72
+ UI.important "Skipping Flutter Build"
73
+ else
74
+ UI.header "Run Flutter Build"
75
+ Sunny.build_ios(build_number)
76
+ end
77
+ require 'match'
78
+ build_opts = options[:build_options]
79
+
80
+ # Load match parameters. The paths get hosed somehow
81
+ match_opts = Sunny.config(Match::Options.available_options, {
82
+ type: build_opts[0]
83
+ })
84
+
85
+ match_opts.load_configuration_file("Matchfile")
86
+
87
+ UI.header "Read Appfile info"
88
+ # Read the app identifier from Appfile
89
+ app_identifier = app_file.try_fetch_value(:app_identifier)
90
+ UI.command_output "App: #{app_identifier}"
91
+ unless app_identifier
92
+ UI.user_error!("No app_identifier could be found")
93
+ end
94
+
95
+ MatchAction.run(match_opts)
96
+ UI.header "Run Xcode Build"
97
+ Sunny.run_action(BuildAppAction, workspace: "ios/Runner.xcworkspace",
98
+ scheme: "Runner",
99
+ export_method: build_opts[1],
100
+ silent: options[:verbose] != true,
101
+ suppress_xcode_output: options[:verbose] != true,
102
+ clean: options[:clean],
103
+ export_options: {
104
+ provisioningProfiles: {
105
+ "#{app_identifier}" => "match #{build_opts[2]} #{app_identifier}",
106
+ }
107
+ },
108
+ output_directory: "build/ios")
109
+
110
+ end
111
+ rescue StandardError => e
112
+ # Put the version back like it was
113
+ UI.important("Restoring old version: #{old_version}")
114
+ Sunny.override_version(version: old_version)
115
+ UI.user_error!(">> build ios failed #{e} << \n #{e.backtrace.join("\n")}")
116
+ return
117
+ end
118
+
119
+ app_name = options[:app_name]
120
+ # Commits the version number, deletes changelog file
121
+ if options[:build] or options[:post_build]
122
+ unless options[:skip_symbols]
123
+ UI.header "Upload Symbols to Crashlytics"
124
+ Sunny.run_action(UploadSymbolsToCrashlyticsAction, dsym_path: "./build/ios/#{app_name}.app.dSYM.zip",
125
+ binary_path: "./ios/Pods/FirebaseCrashlytics/upload-symbols")
126
+ end
127
+
128
+ UI.header "Commit pubspec.yaml, Info.plist for version updates"
129
+ # If we got this far, let's commit the build number and update the git tags. If the rest of the pro
130
+ # process fails, we should revert this because it will mess up our commit logs
131
+ Sunny.run_action(GitCommitAction, path: %w[./pubspec.yaml ./pubspec.lock ./Gemfile.lock ./ios/Runner/Info.plist],
132
+ message: "Version bump to: #{version.major}.#{version.minor}.#{version.patch}#800#{version.build}")
133
+ UI.header "Tagging repo v#{version.build}"
134
+ Sunny.run_action(AddGitTagAction,
135
+ grouping: "sunny-builds",
136
+ prefix: "v",
137
+ force: true,
138
+ build_number: version.build
139
+ )
140
+ Sunny.run_action(PushGitTagsAction, force: false)
141
+ end
142
+
143
+ unless options[:no_upload]
144
+
145
+ # platform :ios do
146
+ release_target = options[:release_target]
147
+ if release_target == "firebase"
148
+ UI.header "Firebase: uploading build/ios/#{app_name}.ipa"
149
+ #require 'fastlane-plugin-firebase_app_distribution'
150
+
151
+ Sunny.run_action(FirebaseAppDistributionAction,
152
+ app: firebase_app_id,
153
+ ipa_path: "build/ios/#{app_name}.ipa",
154
+ release_notes: changes,
155
+ debug: true
156
+ )
157
+ elsif release_target == "testflight"
158
+ UI.header "Testflight: uploading build/ios/#{app_name}.ipa"
159
+ Sunny.run_action(UploadToTestflightAction,
160
+ ipa: "build/ios/#{app_name}.ipa",
161
+ localized_build_info: {
162
+ default: {
163
+ whats_new: changes
164
+ }
165
+ }
166
+ )
167
+ else
168
+ UI.user_error!("No release target specified. Must be 'testflight' or 'firebase'")
169
+ return
170
+ end
171
+ # end
172
+
173
+ end
174
+ UI.command_output("Removing release notes file")
175
+ File.delete(Sunny.release_notes_file) if File.exist?(Sunny.release_notes_file)
176
+ end
177
+
178
+ def self.description
179
+ "Modify pubspec for local or git development"
180
+ end
181
+
182
+ def self.authors
183
+ ["ericmartineau"]
184
+ end
185
+
186
+ def self.return_value
187
+ # If your method provides a return value, you can describe here what it does
188
+ end
189
+
190
+ def self.details
191
+ # Optional:
192
+ ""
193
+ end
194
+
195
+ def self.available_options
196
+ [
197
+ FastlaneCore::ConfigItem.new(key: :no_bump,
198
+ env_name: "SUNNY_NO_BUMP",
199
+ description: "Whether to skip a bump",
200
+ optional: true, type: Object),
201
+ FastlaneCore::ConfigItem.new(key: :build,
202
+ env_name: "SUNNY_BUILD",
203
+ description: "Whether to perform a complete build",
204
+ optional: true, type: Object),
205
+ FastlaneCore::ConfigItem.new(key: :post_build,
206
+ env_name: "SUNNY_POST_BUILD",
207
+ description: "Whether to execute actions after building",
208
+ optional: true, type: Object),
209
+ FastlaneCore::ConfigItem.new(key: :skip_dirty_check,
210
+ env_name: "SUNNY_SKIP_DIRTY_CHECK",
211
+ description: "Whether to skip dirty repo check",
212
+ optional: true, type: Object),
213
+ FastlaneCore::ConfigItem.new(key: :clean,
214
+ env_name: "SUNNY_CLEAN",
215
+ description: "Whether to do a clean build",
216
+ optional: true, type: Object),
217
+ FastlaneCore::ConfigItem.new(key: :release,
218
+ env_name: "SUNNY_RELEASE",
219
+ description: "Whether to make a release vs patch build",
220
+ optional: true, type: Object),
221
+ FastlaneCore::ConfigItem.new(key: :changelog,
222
+ env_name: "SUNNY_CHANGELOG",
223
+ description: "Changelog",
224
+ optional: true),
225
+
226
+ FastlaneCore::ConfigItem.new(key: :no_upload,
227
+ env_name: "SUNNY_NO_UPLOAD",
228
+ description: "Whether to skip uploading the build",
229
+ optional: true, type: Object),
230
+
231
+ FastlaneCore::ConfigItem.new(key: :flutter,
232
+ env_name: "SUNNY_FLUTTER",
233
+ description: "Override path to flutter",
234
+ optional: true),
235
+
236
+ FastlaneCore::ConfigItem.new(key: :release_target,
237
+ env_name: "SUNNY_RELEASE_TARGET",
238
+ description: "Where we're releasing to",
239
+ optional: false,
240
+ type: String),
241
+
242
+ FastlaneCore::ConfigItem.new(key: :skip_flutter_build,
243
+ env_name: "SKIP FLUTTER BUILD",
244
+ description: "Skip the initial flutter build",
245
+ optional: true,
246
+ type: Object),
247
+ FastlaneCore::ConfigItem.new(key: :verbose,
248
+ env_name: "SUNNY_VERBOSE",
249
+ description: "Verbose",
250
+ optional: true,
251
+ type: Object),
252
+
253
+ FastlaneCore::ConfigItem.new(key: :app_name,
254
+ env_name: "SUNNY_APP_NAME",
255
+ description: "The name of the ios release target",
256
+ optional: false,
257
+ type: String),
258
+
259
+ FastlaneCore::ConfigItem.new(key: :skip_symbols,
260
+ env_name: "SUNNY_SKIP_SYMBOLS",
261
+ description: "Skip uploading symbols to firebase",
262
+ optional: true, type: Object),
263
+ FastlaneCore::ConfigItem.new(key: :build_options,
264
+ env_name: "SUNNY_BUILD_OPTIONS",
265
+ description: "A Hash of build options",
266
+ optional: false,
267
+ type: Array),
268
+
269
+ ]
270
+ end
271
+
272
+ def self.is_supported?(platform)
273
+ # Adjust this if your plugin only works for a particular platform (iOS vs. Android, for example)
274
+ # See: https://docs.fastlane.tools/advanced/#control-configuration-by-lane-and-by-platform
275
+ #
276
+ # [:ios, :mac, :android].include?(platform)
277
+ true
278
+ end
279
+ end
280
+
281
+ class CustomVisitor < Psych::Visitors::Emitter
282
+ def initialize(io)
283
+ super(io)
284
+ end
285
+
286
+ def visit_Psych_Nodes_Scalar(o)
287
+ if o.value.is_a?(String)
288
+ str = "#{o.value}"
289
+ if str.start_with?('^') || str.start_with?('..')
290
+ @handler.scalar(o.value, o.anchor, o.tag, o.plain, o.quoted, 1)
291
+ elsif str.start_with?('https://') || str.start_with?('git@')
292
+ @handler.scalar(o.value, o.anchor, o.tag, o.plain, o.quoted, 3)
293
+ else
294
+ @handler.scalar(o.value, o.anchor, o.tag, o.plain, o.quoted, o.style)
295
+ end
296
+ return
297
+ end
298
+ @handler.scalar(o.value, o.anchor, o.tag, o.plain, o.quoted, o.style)
299
+ end
300
+ end
301
+
302
+ end
303
+ end
304
+
@@ -17,6 +17,16 @@ module Fastlane
17
17
  description: "The plugins",
18
18
  type: Hash,
19
19
  optional: true,),
20
+ FastlaneCore::ConfigItem.new(key: :firebase_app_id,
21
+ env_name: "SUNNY_FIREBASE_APP_ID",
22
+ description: "Firebase app id",
23
+ type: String,
24
+ optional: true,),
25
+ FastlaneCore::ConfigItem.new(key: :firebase_cli_path,
26
+ env_name: "SUNNY_FIREBASE_CLI_PATH",
27
+ description: "Firebase cli path",
28
+ type: String,
29
+ optional: true,),
20
30
  FastlaneCore::ConfigItem.new(key: :sunny_plugin_folder,
21
31
  env_name: "SUNNY_PLUGIN_FOLDER",
22
32
  description: "Folder that contains the packages",
@@ -21,9 +21,16 @@ module Fastlane
21
21
  end
22
22
  end
23
23
 
24
+ def self.config(available_options, options)
25
+ FastlaneCore::Configuration.create(available_options, options)
26
+ end
27
+
28
+ def self.run_action(action, **options)
29
+ action.run(self.config(action.available_options, options))
30
+ end
24
31
 
25
32
  def self.do_increase_version(options)
26
- command = "pubver bump #{options[:type]} "
33
+ command = "pubver #{options[:type]} "
27
34
  if options[:type] == 'patch'
28
35
  command += "-b"
29
36
  end
@@ -45,6 +52,7 @@ module Fastlane
45
52
  else
46
53
  if args[:cmd_out]
47
54
  UI.command_output name
55
+ elsif args[:quiet]
48
56
  else
49
57
  UI.command name
50
58
  end
@@ -64,6 +72,84 @@ module Fastlane
64
72
  Semantic::Version.new current_version_string
65
73
  end
66
74
 
75
+ def self.release_notes(options)
76
+ changes = Sunny.string(options[:changelog])
77
+ if Sunny.blank(changes)
78
+ if File.file?(Sunny.release_notes_file)
79
+ changes = Sunny.string(File.read(Sunny.release_notes_file))
80
+ return changes
81
+ end
82
+ unless File.file?(Sunny.release_notes_file)
83
+ changes = Sunny.string(Fastlane::Actions::ChangelogFromGitCommitsAction.run(
84
+ path: "./",
85
+ pretty: "%B",
86
+ ancestry_path: false,
87
+ match_lightweight_tag: true,
88
+ quiet: false,
89
+ merge_commit_filtering: ":exclude_merges"
90
+ ))
91
+
92
+ if Sunny.blank(changes)
93
+ changes = Sunny.string(Fastlane::Actions::PromptAction.run(
94
+ text: "Please Enter a description of what changed.\nWhen you are finished, type END\n Changelog: ",
95
+ multi_line_end_keyword: 'END'))
96
+ end
97
+ end
98
+ unless Sunny.blank(changes)
99
+ File.open(Sunny.release_notes_file, 'w') { |file|
100
+ file.write(changes)
101
+ }
102
+ end
103
+ if File.file?(Sunny.release_notes_file)
104
+ changes = Sunny.string(File.read(Sunny.release_notes_file))
105
+ end
106
+ end
107
+
108
+ if File.file?("CHANGELOG.md")
109
+ f = File.open("CHANGELOG.md", "r+")
110
+ lines = f.readlines
111
+ f.close
112
+ v = Sunny.current_semver
113
+ lines = ["## [#{v}]\n", " * #{changes}\n", "\n"] + lines
114
+
115
+ output = File.new("CHANGELOG.md", "w")
116
+ lines.each { |line| output.write line }
117
+ output.close
118
+ end
119
+ changes
120
+ end
121
+
122
+ def self.get_flutter(provided = nil)
123
+ provided || ".fvm/flutter_sdk/bin/flutter"
124
+ end
125
+
126
+ def self.override_version(**options)
127
+ semver = options[:version]
128
+ unless semver
129
+ UI.user_error! "No version parameter found"
130
+ return
131
+ end
132
+ self.exec_cmd("set_version", "pubver set #{semver}", quiet: true)
133
+ self.sync_version_number(semver)
134
+ end
135
+
136
+ def self.sync_version_number(version)
137
+ if version
138
+ self.run_action(Fastlane::Actions::IncrementVersionNumberAction,
139
+ version_number: "#{version.major}.#{version.minor}.#{version.patch}",
140
+ xcodeproj: "ios/Runner.xcodeproj"
141
+ )
142
+ else
143
+ UI.user_error! "No version found"
144
+ end
145
+
146
+ end
147
+
148
+ def self.build_ios(build_num, **options)
149
+ flutter = get_flutter(options[:flutter])
150
+ self.exec_cmd("build flutter ios release #{build_num}", "#{flutter} build ios --release --no-tree-shake-icons --no-codesign --build-number=#{build_num}")
151
+ end
152
+
67
153
  ### Reads the latest version from pubspec.yaml
68
154
  def self.current_semver_path
69
155
  version = nil
@@ -79,7 +165,7 @@ module Fastlane
79
165
 
80
166
  ## Retrieves the current semver based on git tags
81
167
  def self.current_version_string
82
- self.exec_cmd("get version", "pubver get")
168
+ self.exec_cmd("get version", "pubver get", quiet: true)
83
169
  end
84
170
 
85
171
  # lane :ximg do |options|
@@ -108,10 +194,10 @@ module Fastlane
108
194
 
109
195
  def self.underscore(str)
110
196
  str.gsub(/::/, '/').
111
- gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
112
- gsub(/([a-z\d])([A-Z])/, '\1_\2').
113
- tr("-", "_").
114
- downcase
197
+ gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
198
+ gsub(/([a-z\d])([A-Z])/, '\1_\2').
199
+ tr("-", "_").
200
+ downcase
115
201
  end
116
202
  end
117
203
  end
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module SunnyProject
3
- VERSION = "0.1.9"
3
+ VERSION = "0.1.15"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-sunny_project
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - ericmartineau
@@ -10,20 +10,6 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2020-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: ci
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: pry
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -142,14 +128,14 @@ dependencies:
142
128
  requirements:
143
129
  - - ">="
144
130
  - !ruby/object:Gem::Version
145
- version: 2.168.0
131
+ version: 2.169.0
146
132
  type: :development
147
133
  prerelease: false
148
134
  version_requirements: !ruby/object:Gem::Requirement
149
135
  requirements:
150
136
  - - ">="
151
137
  - !ruby/object:Gem::Version
152
- version: 2.168.0
138
+ version: 2.169.0
153
139
  description:
154
140
  email: smartytime@gmail.com
155
141
  executables: []
@@ -168,6 +154,7 @@ files:
168
154
  - lib/fastlane/plugin/sunny_project/actions/pubspec_doctor_action.rb
169
155
  - lib/fastlane/plugin/sunny_project/actions/release_notes_action.rb
170
156
  - lib/fastlane/plugin/sunny_project/actions/rename_assets_action.rb
157
+ - lib/fastlane/plugin/sunny_project/actions/sunny_release_action.rb
171
158
  - lib/fastlane/plugin/sunny_project/helper/plugin_options.rb
172
159
  - lib/fastlane/plugin/sunny_project/helper/sunny_project_helper.rb
173
160
  - lib/fastlane/plugin/sunny_project/version.rb