fastlane-plugin-incloud_xamarin_build 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []