fastlane_core 0.33.0 → 0.34.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 +4 -4
- data/lib/assets/XMLTemplate.xml.erb +1 -1
- data/lib/fastlane_core.rb +2 -0
- data/lib/fastlane_core/ipa_upload_package_builder.rb +1 -0
- data/lib/fastlane_core/pkg_file_analyser.rb +42 -0
- data/lib/fastlane_core/pkg_upload_package_builder.rb +46 -0
- data/lib/fastlane_core/project.rb +22 -3
- data/lib/fastlane_core/provisioning_profile.rb +1 -1
- data/lib/fastlane_core/ui/interface.rb +4 -0
- data/lib/fastlane_core/version.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6c4e0e0dfd2c77a1169ff2dcb62cf7f353f71938
|
4
|
+
data.tar.gz: 5c439e39a2d28893b40eee0fde61967d11688783
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f3a670a6ab99b201705a0344cdcc589639050213b301acd6611f674960fe0d8d7b148f0777e31337a6d072c8fe60c61e3ad1ce2c2ecd1ca0131ce018e2451c73
|
7
|
+
data.tar.gz: 56c7324933a6ef4f17312a785f353b33d5388ef0bd58a27bfbc54cfea462c7280d1f6a510942cffd1552e2a97c8c0e543d791d3a023edba4a1f8373bdfdf7a51
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
2
|
<package xmlns="http://apple.com/itunes/importer" version="software5.4">
|
3
3
|
<software_assets apple_id="<%= @data[:apple_id] %>" app_platform="<%= @data[:platform] %>">
|
4
|
-
<asset type="
|
4
|
+
<asset type="<%= @data[:archive_type] %>">
|
5
5
|
<data_file>
|
6
6
|
<size><%= @data[:file_size] %></size>
|
7
7
|
<file_name><%= @data[:ipa_path] %></file_name>
|
data/lib/fastlane_core.rb
CHANGED
@@ -10,6 +10,8 @@ require 'fastlane_core/cert_checker'
|
|
10
10
|
require 'fastlane_core/ipa_file_analyser'
|
11
11
|
require 'fastlane_core/itunes_transporter'
|
12
12
|
require 'fastlane_core/provisioning_profile'
|
13
|
+
require 'fastlane_core/pkg_file_analyser'
|
14
|
+
require 'fastlane_core/pkg_upload_package_builder'
|
13
15
|
require 'fastlane_core/command_executor'
|
14
16
|
require 'fastlane_core/ipa_upload_package_builder'
|
15
17
|
require 'fastlane_core/print_table'
|
@@ -20,6 +20,7 @@ module FastlaneCore
|
|
20
20
|
file_size: File.size(ipa_path),
|
21
21
|
ipa_path: File.basename(ipa_path), # this is only the base name as the ipa is inside the package
|
22
22
|
md5: Digest::MD5.hexdigest(File.read(ipa_path)),
|
23
|
+
archive_type: "bundle",
|
23
24
|
platform: (platform || "ios") # pass "appletvos" for Apple TV's IPA
|
24
25
|
}
|
25
26
|
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'rexml/document'
|
2
|
+
|
3
|
+
module FastlaneCore
|
4
|
+
class PkgFileAnalyser
|
5
|
+
def self.fetch_app_identifier(path)
|
6
|
+
xml = self.fetch_distribution_xml_file(path)
|
7
|
+
return xml.elements['installer-gui-script/product'].attributes['id'] if xml
|
8
|
+
return nil
|
9
|
+
end
|
10
|
+
|
11
|
+
# Fetches the app version from the given pkg file.
|
12
|
+
def self.fetch_app_version(path)
|
13
|
+
xml = self.fetch_distribution_xml_file(path)
|
14
|
+
return xml.elements['installer-gui-script/product'].attributes['version'] if xml
|
15
|
+
return nil
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.fetch_distribution_xml_file(path)
|
19
|
+
Dir.mktmpdir do |dir|
|
20
|
+
Helper.backticks("xar -C #{dir} -xf #{path}")
|
21
|
+
|
22
|
+
Dir.foreach(dir) do |file|
|
23
|
+
next unless file.include? 'Distribution'
|
24
|
+
|
25
|
+
begin
|
26
|
+
content = File.open(File.join(dir, file))
|
27
|
+
xml = REXML::Document.new(content)
|
28
|
+
|
29
|
+
if xml.elements['installer-gui-script/product']
|
30
|
+
return xml
|
31
|
+
end
|
32
|
+
rescue => ex
|
33
|
+
Helper.log.error ex
|
34
|
+
Helper.log.error "Error parsing *.pkg distribution xml #{File.join(dir, file)}".red
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
nil
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'digest/md5'
|
2
|
+
|
3
|
+
module FastlaneCore
|
4
|
+
# Builds a package for the pkg ready to be uploaded with the iTunes Transporter
|
5
|
+
class PkgUploadPackageBuilder
|
6
|
+
METADATA_FILE_NAME = 'metadata.xml'
|
7
|
+
|
8
|
+
attr_accessor :package_path
|
9
|
+
|
10
|
+
def generate(app_id: nil, pkg_path: nil, package_path: nil)
|
11
|
+
self.package_path = File.join(package_path, "#{app_id}.itmsp")
|
12
|
+
FileUtils.rm_rf(self.package_path) if File.directory?(self.package_path)
|
13
|
+
FileUtils.mkdir_p self.package_path
|
14
|
+
|
15
|
+
lib_path = Helper.gem_path('fastlane_core')
|
16
|
+
|
17
|
+
pkg_path = copy_pkg(pkg_path)
|
18
|
+
@data = {
|
19
|
+
apple_id: app_id,
|
20
|
+
file_size: File.size(pkg_path),
|
21
|
+
ipa_path: File.basename(pkg_path), # this is only the base name as the ipa is inside the package
|
22
|
+
md5: Digest::MD5.hexdigest(File.read(pkg_path)),
|
23
|
+
archive_type: 'product-archive',
|
24
|
+
platform: 'osx'
|
25
|
+
}
|
26
|
+
|
27
|
+
xml_path = File.join(lib_path, 'lib/assets/XMLTemplate.xml.erb')
|
28
|
+
xml = ERB.new(File.read(xml_path)).result(binding) # http://www.rrn.dk/rubys-erb-templating-system
|
29
|
+
|
30
|
+
File.write(File.join(self.package_path, METADATA_FILE_NAME), xml)
|
31
|
+
Helper.log.info "Wrote XML data to '#{self.package_path}'".green if $verbose
|
32
|
+
|
33
|
+
package_path
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def copy_pkg(pkg_path)
|
39
|
+
ipa_file_name = Digest::MD5.hexdigest(pkg_path)
|
40
|
+
resulting_path = File.join(self.package_path, "#{ipa_file_name}.pkg")
|
41
|
+
FileUtils.cp(pkg_path, resulting_path)
|
42
|
+
|
43
|
+
resulting_path
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -121,6 +121,20 @@ module FastlaneCore
|
|
121
121
|
parsed_info.configurations
|
122
122
|
end
|
123
123
|
|
124
|
+
# Returns bundle_id and sets the scheme for xcrun
|
125
|
+
def default_app_identifier
|
126
|
+
default_build_settings(key: "PRODUCT_BUNDLE_IDENTIFIER")
|
127
|
+
end
|
128
|
+
|
129
|
+
# Returns app name and sets the scheme for xcrun
|
130
|
+
def default_app_name
|
131
|
+
if is_workspace
|
132
|
+
return default_build_settings(key: "PRODUCT_NAME")
|
133
|
+
else
|
134
|
+
return app_name
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
124
138
|
def app_name
|
125
139
|
# WRAPPER_NAME: Example.app
|
126
140
|
# WRAPPER_SUFFIX: .app
|
@@ -163,12 +177,11 @@ module FastlaneCore
|
|
163
177
|
# Get the build settings for our project
|
164
178
|
# this is used to properly get the DerivedData folder
|
165
179
|
# @param [String] The key of which we want the value for (e.g. "PRODUCT_NAME")
|
166
|
-
def build_settings(key: nil, optional: true
|
180
|
+
def build_settings(key: nil, optional: true)
|
167
181
|
unless @build_settings
|
168
182
|
# We also need to pass the workspace and scheme to this command
|
169
183
|
command = "xcrun xcodebuild -showBuildSettings #{xcodebuild_parameters.join(' ')}"
|
170
|
-
Helper.
|
171
|
-
@build_settings = `#{command}`
|
184
|
+
@build_settings = Helper.backticks(command, print: false)
|
172
185
|
end
|
173
186
|
|
174
187
|
begin
|
@@ -184,6 +197,12 @@ module FastlaneCore
|
|
184
197
|
nil
|
185
198
|
end
|
186
199
|
|
200
|
+
# Returns the build settings and sets the default scheme to the options hash
|
201
|
+
def default_build_settings(key: nil, optional: true, silent: false)
|
202
|
+
options[:scheme] = schemes.first if is_workspace
|
203
|
+
build_settings(key: key, optional: optional, silent: silent)
|
204
|
+
end
|
205
|
+
|
187
206
|
def raw_info(silent: false)
|
188
207
|
# Examples:
|
189
208
|
|
@@ -106,6 +106,8 @@ module FastlaneCore
|
|
106
106
|
|
107
107
|
# Pass an exception to this method to exit the program
|
108
108
|
# using the given exception
|
109
|
+
# Use this method instead of user_error! if this error is
|
110
|
+
# unexpected, e.g. an invalid server response that shouldn't happen
|
109
111
|
def crash!(_exception)
|
110
112
|
not_implemented(__method__)
|
111
113
|
end
|
@@ -115,6 +117,8 @@ module FastlaneCore
|
|
115
117
|
# or invalid user credentials
|
116
118
|
# This will show the error message, but doesn't show the full
|
117
119
|
# stack trace
|
120
|
+
# Basically this should be used when you actively catch the error
|
121
|
+
# and want to show a nice error message to the user
|
118
122
|
def user_error!(_error_message)
|
119
123
|
not_implemented(__method__)
|
120
124
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.34.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Krause
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-01-
|
11
|
+
date: 2016-01-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -349,6 +349,8 @@ files:
|
|
349
349
|
- lib/fastlane_core/itunes_search_api.rb
|
350
350
|
- lib/fastlane_core/itunes_transporter.rb
|
351
351
|
- lib/fastlane_core/languages.rb
|
352
|
+
- lib/fastlane_core/pkg_file_analyser.rb
|
353
|
+
- lib/fastlane_core/pkg_upload_package_builder.rb
|
352
354
|
- lib/fastlane_core/print_table.rb
|
353
355
|
- lib/fastlane_core/project.rb
|
354
356
|
- lib/fastlane_core/provisioning_profile.rb
|
@@ -381,7 +383,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
381
383
|
version: '0'
|
382
384
|
requirements: []
|
383
385
|
rubyforge_project:
|
384
|
-
rubygems_version: 2.4.5
|
386
|
+
rubygems_version: 2.4.5
|
385
387
|
signing_key:
|
386
388
|
specification_version: 4
|
387
389
|
summary: Contains all shared code/dependencies of the fastlane.tools
|