fastlane-plugin-incloud_xamarin_build 0.4.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: 6c30b94cd55414e9293ae6f6a3ecd9ae8fd0d2db20642773fd23daa1f1394dcf
4
+ data.tar.gz: 422c102090e2172743851e9db10c873d0ba535c3a364a79e5846670a2b1af7cf
5
+ SHA512:
6
+ metadata.gz: ad74da638f05dd5511617634629aeb54ef242b3909f409069c69b9e5eaa00d1ab35c00e5ba254b0a2633f66ec1042033fb38fc657a6c796df081e8f44fd7514b
7
+ data.tar.gz: a96166aa4e9f329ef5246fab7101afb7e26e9a11604b6e261c465fcec2b95995dff1002022e0152fa4eae7b17ae02e8adeebb704f6cd70bdf434a94f610c2a6e
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2018 Incloud Engineering GmbH <torben.carstens@incloud.de>
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,61 @@
1
+ #incloud_xamarin_build plugin
2
+
3
+ [![fastlane Plugin Badge](https://rawcdn.githack.com/fastlane/fastlane/master/fastlane/assets/plugin-badge.svg)](https://rubygems.org/gems/fastlane-plugin-incloud_xamarin_build)
4
+
5
+ ## Getting Started
6
+
7
+ This project is a [fastlane](https://github.com/fastlane/fastlane) plugin. To get started with `fastlane-plugin-incloud_xamarin_build`, add it to your project by running:
8
+
9
+ ```bash
10
+ fastlane add_plugin incloud_xamarin_build
11
+ ```
12
+
13
+ ## About incloud_xamarin_build
14
+
15
+ Small plugin to build and configure xamarin android\ios projects
16
+ Fork of https://github.com/punksta/fastlane-plugin_xamarin_build
17
+
18
+ ## Actions
19
+ ### extract_certificate
20
+ extract signing certificate from provision profile
21
+
22
+ ###incloud_xamarin_build
23
+ build xamarin project specific platform(iPhone, iPhoneSimulator) and target(Release, Debug)
24
+
25
+ ### xamarin_update_configuration
26
+ update property of specific configuration in xamarin c# project config file
27
+
28
+
29
+ ## Example
30
+
31
+ Check out the [example `Fastfile`](fastlane/Fastfile) to see how to use this plugin.
32
+
33
+
34
+ ## Run tests for this plugin
35
+
36
+ To run both the tests, and code style validation, run
37
+
38
+ ```
39
+ rake
40
+ ```
41
+
42
+ To automatically fix many of the styling issues, use
43
+ ```
44
+ rubocop -a
45
+ ```
46
+
47
+ ## Issues and Feedback
48
+
49
+ For any other issues and feedback about this plugin, please submit it to this repository.
50
+
51
+ ## Troubleshooting
52
+
53
+ If you have trouble using plugins, check out the [Plugins Troubleshooting](https://github.com/fastlane/fastlane/blob/master/fastlane/docs/PluginsTroubleshooting.md) doc in the main `fastlane` repo.
54
+
55
+ ## Using `fastlane` Plugins
56
+
57
+ For more information about how the `fastlane` plugin system works, check out the [Plugins documentation](https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Plugins.md).
58
+
59
+ ## About `fastlane`
60
+
61
+ `fastlane` is the easiest way to automate building and releasing your iOS and Android apps. To learn more, check out [fastlane.tools](https://fastlane.tools).
@@ -0,0 +1,16 @@
1
+ require 'fastlane/plugin/incloud_xamarin_build/version'
2
+
3
+ module Fastlane
4
+ module XamarinBuild
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::XamarinBuild.all_classes.each do |current|
15
+ require current
16
+ end
@@ -0,0 +1,318 @@
1
+ require 'logging'
2
+
3
+ module Fastlane
4
+ module Actions
5
+ class XamarinBuildAction < Action
6
+ VSTOOL = '/Applications/Visual\ Studio.app/Contents/MacOS/vstool'.freeze
7
+ MDTOOL = '/Applications/Xamarin\ Studio.app/Contents/MacOS/mdtool'.freeze
8
+ XBUILD = '/Library/Frameworks/Mono.framework/Commands/xbuild'.freeze
9
+ MSBUILD = '/Library/Frameworks/Mono.framework/Versions/Current/Commands/msbuild'.freeze
10
+ @logger = Logging.logger['fastlane-plugin-incloud_xamarin_build']
11
+
12
+ def self.run(params)
13
+ if params[:print_all]
14
+ @logger.level = :debug
15
+ else
16
+ @logger.level = :warn
17
+ end
18
+
19
+ if params[:file_log]
20
+ @logger.add_appenders Logging.appenders.file('fastlane-plugin-incloud_xamarin_build.log')
21
+ end
22
+
23
+ @logger.debug "Runincloud_xamarin_build with #{params}"
24
+ platform = params[:platform]
25
+ project = params[:project]
26
+
27
+ projects = (params[:projects] or '').split(',').select do |item|
28
+ item.size > 0
29
+ end
30
+
31
+ projects << project unless project.nil?
32
+ @logger.debug "Following projects were found: #{projects}"
33
+ projects = projects.uniq
34
+ @logger.debug "Following unique projects were found: #{projects}"
35
+
36
+ @logger.debug "Using #{params[:build_util]} to build #{projects}"
37
+ if params[:build_util] == 'vstool'
38
+ vstool_build_projects(params, projects)
39
+ elsif params[:build_util] == 'mdtool'
40
+ mdtool_build_projects(params, projects)
41
+ elsif params[:build_util] == 'msbuild'
42
+ msbuild_build_projects(params, projects)
43
+ else
44
+ if projects.size > 0
45
+ @logger.error "not supported yet"
46
+ else
47
+ xbuild_build_solution(params)
48
+ end
49
+ end
50
+
51
+ build_type = params[:build_type]
52
+ solution = params[:solution]
53
+ get_build_path(platform, build_type, solution)
54
+ end
55
+
56
+ def self.vstool_build_projects(params, projects)
57
+ options_str = create_option_string(params)
58
+ @logger.debug "Using following options: #{options_str}"
59
+ build_projects(VSTOOL, options_str, params, projects)
60
+ end
61
+
62
+ def self.mdtool_build_projects(params, projects)
63
+ options_str = create_option_string(params)
64
+ @logger.debug "Using following options: #{options_str}"
65
+ build_projects(MDTOOL, options_str, params, projects)
66
+ end
67
+
68
+ def self.msbuild_build_projects(params, projects)
69
+ platform = params[:platform]
70
+ build_type = params[:build_type]
71
+ target = params[:target]
72
+ solution = params[:solution]
73
+
74
+ options = [MSBUILD]
75
+ options.push "\"/t:#{target}\"" unless target.nil?
76
+ options.push "\"/p:Platform=#{platform}\"" unless platform.nil?
77
+ options.push "\"/p:Configuration=#{build_type}\"" unless build_type.nil?
78
+ if params[:android_keystore]
79
+ options.push "\"/p:AndroidKeyStore=#{params[:android_keystore]}\""
80
+ options.push "\"/p:AndroidSigningKeyAlias=#{params[:android_signing_key_alias]}\""
81
+ options.push "\"/p:AndroidSigningKeyPass=#{params[:android_signing_key_pass]}\""
82
+ options.push "\"/p:AndroidSigningKeyStore=#{params[:android_signing_keystore]}\""
83
+ options.push "\"/p:AndroidSigningStorePass=#{params[:android_signing_store_pass]}\""
84
+ end
85
+ options.push solution
86
+ command = options.join " "
87
+
88
+ build_project(command, params)
89
+ end
90
+
91
+ def self.create_option_string(params)
92
+ platform = params[:platform]
93
+ build_type = params[:build_type]
94
+ target = params[:target]
95
+ solution = params[:solution]
96
+
97
+ configuration = "--configuration:#{build_type}|#{platform}"
98
+ return "build -t:#{target} #{solution} \"#{configuration}\""
99
+ end
100
+
101
+ def self.build_projects(tool, options_str, params, projects)
102
+ command = "#{tool} #{options_str}"
103
+ if projects.size.zero?
104
+ @logger.debug "Building single project"
105
+ build_project(command, params)
106
+ end
107
+
108
+ projects.each do |project|
109
+ @logger.debug "Building project #{project}"
110
+ if (tool == MDTOOL || tool == VSTOOL) && projects.size > 0
111
+ @logger.debug "Pass project flag to #{tool}: #{project}"
112
+ command << " -p:#{project}"
113
+ end
114
+
115
+ build_project(command, params)
116
+ end
117
+ end
118
+
119
+ def self.build_project(command, params)
120
+ @logger.debug "Start XamarinBuildHelper"
121
+ Helper::XamarinBuildHelper.bash(command, !params[:print_all], params[:file_log])
122
+ end
123
+
124
+ def self.xbuild_build_solution(params)
125
+ platform = params[:platform]
126
+ build_type = params[:build_type]
127
+ target = params[:target]
128
+ solution = params[:solution]
129
+
130
+ command = "#{XBUILD} "
131
+ command << "/target:#{target} " unless target.nil?
132
+ command << "/p:Platform=#{platform} " unless platform.nil?
133
+ command << "/p:Configuration=#{build_type} " unless build_type.nil?
134
+ command << solution
135
+
136
+ build_project(command, params)
137
+ end
138
+
139
+ # Returns bin path for given platform and build_type or nil
140
+ def self.get_build_path(platform, build_type, solution)
141
+ root = File.dirname(solution)
142
+
143
+ if platform.nil?
144
+ platform = "*"
145
+ end
146
+
147
+ builds = Dir.glob(File.join(root, "*/bin/#{platform}/#{build_type}/"))
148
+
149
+ if builds.size > 0
150
+ build = builds[0]
151
+ @logger.debug "build artifact path #{build}".blue
152
+ return build
153
+ else
154
+ return nil
155
+ end
156
+ end
157
+
158
+ def self.build_artifacts(platform, build_type, solution)
159
+ build_path = get_build_path(platform, build_type, solution)
160
+
161
+ if build_path and !platform.nil?
162
+ extension = ".ipa"
163
+ if platform.casecmp("android").zero?
164
+ extension = ".apk"
165
+ end
166
+
167
+ return Dir.glob(File.join(build_path, "*#{extension}"))
168
+ end
169
+
170
+ return nil
171
+ end
172
+
173
+ def self.description
174
+ 'Build xamarin android and ios projects'
175
+ end
176
+
177
+ def self.authors
178
+ ['punksta', 'Torben Carstens']
179
+ end
180
+
181
+ BUILD_TYPES = %w[Release Debug].freeze
182
+ PRINT_ALL = [true, false].freeze
183
+ BUILD_UTIL = %w[xbuild vstool mdtool msbuild].freeze
184
+
185
+ def self.available_options
186
+ [
187
+ FastlaneCore::ConfigItem.new(
188
+ key: :solution,
189
+ env_name: 'FL_XAMARIN_BUILD_SOLUTION',
190
+ description: 'path to Xamarin .sln/.csproj file',
191
+ verify_block: proc do |value|
192
+ UI.user_error!("File #{value} not found from #{Dir.pwd}".red) unless File.file? value
193
+ end
194
+ ),
195
+
196
+ FastlaneCore::ConfigItem.new(
197
+ key: :platform,
198
+ env_name: 'FL_XAMARIN_BUILD_PLATFORM',
199
+ description: 'build platform',
200
+ type: String,
201
+ optional: true
202
+ ),
203
+
204
+ FastlaneCore::ConfigItem.new(
205
+ key: :build_type,
206
+ env_name: 'FL_XAMARIN_BUILD_TYPE',
207
+ description: 'Release or Debug',
208
+ type: String
209
+ ),
210
+
211
+ FastlaneCore::ConfigItem.new(
212
+ key: :target,
213
+ env_name: 'FL_XAMARIN_BUILD_TARGET',
214
+ description: 'Target build type (Debug|Release|Clean|SignAndroidPackage)',
215
+ type: String
216
+ ),
217
+
218
+ FastlaneCore::ConfigItem.new(
219
+ key: :print_all,
220
+ env_name: 'FL_XAMARIN_BUILD_PRINT_ALL',
221
+ description: 'Print std out',
222
+ default_value: false,
223
+ is_string: false,
224
+ optional: true,
225
+ verify_block: proc do |value|
226
+ UI.user_error!("Unsupported value! Use one of #{PRINT_ALL.join '\' '}".red) unless PRINT_ALL.include? value
227
+ end
228
+ ),
229
+
230
+ FastlaneCore::ConfigItem.new(
231
+ key: :build_util,
232
+ env_name: 'FL_XAMARIN_BUILD_BUILD_UTIL',
233
+ description: 'Build util which use to build project. vstool',
234
+ default_value: 'vstool',
235
+ is_string: false,
236
+ optional: true,
237
+ verify_block: proc do |value|
238
+ UI.user_error!("Unsupported build util (#{value})!\n\t Accepted utils: #{BUILD_UTIL.join '/'}".red) unless BUILD_UTIL.include? value
239
+ end
240
+ ),
241
+
242
+ FastlaneCore::ConfigItem.new(
243
+ key: :project,
244
+ env_name: 'FL_XAMARIN_BUILD_PROJECT',
245
+ description: 'Project to build or clean',
246
+ is_string: true,
247
+ optional: true
248
+ ),
249
+
250
+ FastlaneCore::ConfigItem.new(
251
+ key: :projects,
252
+ env_name: 'FL_XAMARIN_BUILD_PROJECTS',
253
+ description: 'Projects to build or clean, separated by ,',
254
+ is_string: true,
255
+ optional: true
256
+ ),
257
+
258
+ FastlaneCore::ConfigItem.new(
259
+ key: :file_log,
260
+ env_name: 'FL_XAMARIN_BUILD_FILE_LOG',
261
+ description: 'Log toincloud_xamarin_build_*.log file in the current directory',
262
+ default_value: true,
263
+ is_string: false,
264
+ optional: true
265
+ ),
266
+
267
+ FastlaneCore::ConfigItem.new(
268
+ key: :android_keystore,
269
+ env_name: 'FL_XAMARIN_BUILD_ANDROID_KEYSTORE',
270
+ description: '',
271
+ default_value: false,
272
+ is_string: false,
273
+ optional: true
274
+ ),
275
+
276
+ FastlaneCore::ConfigItem.new(
277
+ key: :android_signing_key_alias,
278
+ env_name: 'FL_XAMARIN_BUILD_ANDROID_SIGNING_ALIAS_KEY',
279
+ description: '',
280
+ is_string: true,
281
+ optional: true
282
+ ),
283
+
284
+ FastlaneCore::ConfigItem.new(
285
+ key: :android_signing_key_pass,
286
+ env_name: 'FL_XAMARIN_BUILD_ANDROID_SIGNING_KEY_PASS',
287
+ description: '',
288
+ is_string: true,
289
+ optional: true
290
+ ),
291
+
292
+ FastlaneCore::ConfigItem.new(
293
+ key: :android_signing_keystore,
294
+ env_name: 'FL_XAMARIN_BUILD_ANDROID_SIGNING_KEYSTORE',
295
+ description: '',
296
+ default_value: true,
297
+ is_string: false,
298
+ optional: true
299
+ ),
300
+
301
+ FastlaneCore::ConfigItem.new(
302
+ key: :android_signing_store_pass,
303
+ env_name: 'FL_XAMARIN_BUILD_ANDROID_SIGNING_STORE_PASS',
304
+ description: 'Log toincloud_xamarin_build_*.log file in the current directory',
305
+ default_value: true,
306
+ is_string: false,
307
+ optional: true
308
+ )
309
+ ]
310
+ end
311
+
312
+ def self.is_supported?(platform)
313
+ # android not tested
314
+ %i[ios android].include?(platform)
315
+ end
316
+ end
317
+ end
318
+ end
@@ -0,0 +1,47 @@
1
+ require 'open3'
2
+ require 'securerandom'
3
+
4
+ module Fastlane
5
+ module Helper
6
+ class XamarinBuildHelper
7
+ def self.bash(command, disable_log, file_log)
8
+ @logger = Logging.logger['fastlane-plugin-incloud_xamarin_build']
9
+
10
+ @logger.debug "starting bash process with command: #{command}"
11
+ UI.message "#{command}"
12
+
13
+ if disable_log
14
+ if file_log
15
+ filename = incloud_xamarin_build_#{SecureRandom.urlsafe_base64}.log"
16
+ @logger.debug "Logging to #{filename}"
17
+ stderr_str, exit_status = Open3.capture2("#{command} > #{filename}")
18
+ else
19
+ stderr_str, exit_status = Open3.capture2("#{command} > /dev/null")
20
+ end
21
+
22
+ if exit_status != 0
23
+ UI.error(stderr_str)
24
+ raise "None 0 result for #{command}: #{exit_status}"
25
+ end
26
+ else
27
+ Open3.popen3(command) do |_stdin, stdout, stderr, wait_thr|
28
+ error = []
29
+ t1 = Thread.start do
30
+ stdout.each { |line| UI.command_output(line) }
31
+ end
32
+ t2 = Thread.start do
33
+ stderr.each { |line| error << line }
34
+ end
35
+ exit_status = wait_thr.value
36
+ t1.join
37
+ t2.join
38
+ if exit_status != 0
39
+ error.each { |e| @logger.error(e) }
40
+ raise "None 0 result for #{command}: #{exit_status}"
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,5 @@
1
+ module Fastlane
2
+ module XamarinBuild
3
+ VERSION = "0.4.0"
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,190 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fastlane-plugin-incloud_xamarin_build
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.0
5
+ platform: ruby
6
+ authors:
7
+ - punksta
8
+ - torben.carstens@incloud.de
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2018-08-17 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: nokogiri
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: plist
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: provision_util
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: 0.1.0
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: 0.1.0
56
+ - !ruby/object:Gem::Dependency
57
+ name: logging
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: bundler
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: fastlane
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: 1.96.0
91
+ type: :runtime
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: 1.96.0
98
+ - !ruby/object:Gem::Dependency
99
+ name: pry
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: rake
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: rspec
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ - !ruby/object:Gem::Dependency
141
+ name: rubocop
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ description:
155
+ email: torben.carstens@incloud.de
156
+ executables: []
157
+ extensions: []
158
+ extra_rdoc_files: []
159
+ files:
160
+ - LICENSE
161
+ - README.md
162
+ - lib/fastlane/plugin/incloud_xamarin_build.rb
163
+ - lib/fastlane/plugin/incloud_xamarin_build/actions/incloud_xamarin_build_action.rb
164
+ - lib/fastlane/plugin/incloud_xamarin_build/helper/xamarin_build_helper.rb
165
+ - lib/fastlane/plugin/incloud_xamarin_build/version.rb
166
+ homepage: ''
167
+ licenses:
168
+ - MIT
169
+ metadata: {}
170
+ post_install_message:
171
+ rdoc_options: []
172
+ require_paths:
173
+ - lib
174
+ required_ruby_version: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ version: '0'
179
+ required_rubygems_version: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - ">="
182
+ - !ruby/object:Gem::Version
183
+ version: '0'
184
+ requirements: []
185
+ rubyforge_project:
186
+ rubygems_version: 2.7.7
187
+ signing_key:
188
+ specification_version: 4
189
+ summary: Build xamarin android\ios projects
190
+ test_files: []