fastlane-plugin-ipa_info 0.3.3 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2e8c4cf3870e3c816e66cc8eef9b6a405d38e83f
4
- data.tar.gz: f35b16472ecb9e83f296dd08b2be7591c8eca484
3
+ metadata.gz: 7637c1ed34d8ba1fc4c366a6132db01f88324711
4
+ data.tar.gz: 43eff47bf3acb21346831d20f353756b96f2ddf0
5
5
  SHA512:
6
- metadata.gz: 614c7b710bfc52d9afc7446d576fcb71cbaae731554d3fd9c3790464d46d120939cd5d877c4bccd0c986ac63bfeb233792dae29817c7bac924813b13340c6385
7
- data.tar.gz: b724c473358c6d5f8d8881fcb23fce07ecfb426e2c09511d774cb7dd184a255c0b1cf17bd93d3520deffe7e69b921736ae091123f389f96b574a99ec63c508bc
6
+ metadata.gz: d2cfb451c376f36e0eb5d648946f6c9b46a371a2af57095dba9d606f67579e9725fec7992a757c6790e1c44c24ea49b933c11c497e472d770bcbb6a8b77d3daf
7
+ data.tar.gz: cc46175667618806b618a8d7f9eebd9248da9acefb51d42286d47792004705b690c9cc0ad70ebeddd139eb0ff8bf560fb06bcea765f28d1c9a5fb43d107481a8
@@ -1,4 +1,3 @@
1
- require 'ipa_analyzer'
2
1
  require 'json'
3
2
 
4
3
  module Fastlane
@@ -8,28 +7,21 @@ module Fastlane
8
7
  @file = params[:ipa_file]
9
8
  UI.user_error!('You have to set path an ipa file') unless @file
10
9
 
11
- begin
12
- ipa_info = IpaAnalyzer::Analyzer.new(@file)
13
- ipa_info.open!
14
- ipa_info_result = ipa_info.collect_info_plist_info[:content]
15
- provision_info_result = ipa_info.collect_provision_info[:content]
16
- ipa_info.close
17
- rescue e
18
- UI.user_error!(e.message)
19
- end
10
+ # result
11
+ info_result = Helper::IpaAnalyzeHelper.analyze(@file)
20
12
 
21
13
  # show build environment info
22
- rows = Helper::IpaInfoHelper.build_environment_information(ipa_info_result: ipa_info_result)
14
+ rows = Helper::IpaInfoHelper.build_environment_information(ipa_info_result: info_result[:plist_info])
23
15
  summary_table = Helper::IpaInfoHelper.summary_table(title: "Build Environment", rows: rows)
24
16
  puts(summary_table)
25
17
 
26
18
  # show ipa info
27
- rows = Helper::IpaInfoHelper.ipa_information(ipa_info_result: ipa_info_result)
19
+ rows = Helper::IpaInfoHelper.ipa_information(ipa_info_result: info_result[:plist_info])
28
20
  summary_table = Helper::IpaInfoHelper.summary_table(title: "ipa Information", rows: rows)
29
21
  puts(summary_table)
30
22
 
31
23
  # certificate info
32
- rows = Helper::IpaInfoHelper.certificate_information(provision_info_result: provision_info_result)
24
+ rows = Helper::IpaInfoHelper.certificate_information(provision_info_result: info_result[:provisiong_info])
33
25
  summary_table = Helper::IpaInfoHelper.summary_table(title: "Mobile Provision", rows: rows)
34
26
  puts(summary_table)
35
27
  end
@@ -0,0 +1,83 @@
1
+ require 'tempfile'
2
+ require 'zip'
3
+ require 'zip/filesystem'
4
+ require 'plist'
5
+ require 'fastlane_core/ui/ui'
6
+
7
+ module Fastlane
8
+ module Helper
9
+ class IpaAnalyzeHelper
10
+ def self.analyze(ipa_path)
11
+ ipa_zipfile = Zip::File.open(ipa_path)
12
+ app_folder_path = find_app_folder_path_in_ipa(ipa_path)
13
+ ipa_zipfile.close
14
+
15
+ # path
16
+ mobileprovision_entry = ipa_zipfile.find_entry("#{app_folder_path}/embedded.mobileprovision")
17
+ UI.user_error!("mobileprovision not found in #{ipa_path}") unless mobileprovision_entry
18
+ info_plist_entry = ipa_zipfile.find_entry("#{app_folder_path}/Info.plist")
19
+ UI.user_error!("Info.plist not found in #{ipa_path}") unless info_plist_entry
20
+
21
+ return {
22
+ provisiong_info: self.analyze_mobileprovisioning(mobileprovision_entry, ipa_zipfile),
23
+ plist_info: self.analyze_info_plist(info_plist_entry, ipa_zipfile)
24
+ }
25
+ end
26
+
27
+ # Info plist
28
+ def self.analyze_info_plist(info_plist_entry, ipa_zipfile)
29
+ result = {}
30
+
31
+ tempfile = Tempfile.new(::File.basename(info_plist_entry.name))
32
+ begin
33
+ ipa_zipfile.extract(info_plist_entry, tempfile.path) { true }
34
+ UI.user_error!("Failed to convert binary Plist to XML") unless system("plutil -convert xml1 '#{tempfile.path}'")
35
+
36
+ plist = Plist.parse_xml(tempfile.path)
37
+
38
+ plist.each do |key, value|
39
+ parse_value = value.class == Hash || value.class == Array ? value : value.to_s
40
+
41
+ result[key] = parse_value
42
+ end
43
+ rescue StandardError => e
44
+ UI.user_error!(e.message)
45
+ ensure
46
+ tempfile.close && tempfile.unlink
47
+ end
48
+ return result
49
+ end
50
+
51
+ # mobileprovisioning
52
+ def self.analyze_mobileprovisioning(mobileprovision_entry, ipa_zipfile)
53
+ result = {}
54
+
55
+ tempfile = Tempfile.new(::File.basename(mobileprovision_entry.name))
56
+ begin
57
+ ipa_zipfile.extract(mobileprovision_entry, tempfile.path) { true }
58
+ plist = Plist.parse_xml(`security cms -D -i #{tempfile.path}`)
59
+
60
+ plist.each do |key, value|
61
+ next if key == 'DeveloperCertificates'
62
+
63
+ parse_value = value.class == Hash || value.class == Array ? value : value.to_s
64
+
65
+ result[key] = parse_value
66
+ end
67
+ rescue StandardError => e
68
+ UI.user_error!(e.message)
69
+ ensure
70
+ tempfile.close && tempfile.unlink
71
+ end
72
+ return result
73
+ end
74
+
75
+ # return app folder path
76
+ def self.find_app_folder_path_in_ipa(ipa_path)
77
+ return "Payload/#{File.basename(ipa_path, File.extname(ipa_path))}.app"
78
+ end
79
+
80
+ private_class_method :find_app_folder_path_in_ipa
81
+ end
82
+ end
83
+ end
@@ -14,6 +14,7 @@ module Fastlane
14
14
  # add os name and version
15
15
  [%w[BuildMachineOSBuild MacOS]].each do |key, name|
16
16
  mac_os_build = ipa_info_result[key]
17
+
17
18
  mac_os_version = self.macos_build_to_macos_version(build: mac_os_build)
18
19
  mac_os_name = self.macos_version_to_os_name(version: mac_os_version)
19
20
  rows << [name, "#{mac_os_name} #{mac_os_version} (#{mac_os_build})"]
@@ -55,18 +56,28 @@ module Fastlane
55
56
  end
56
57
 
57
58
  # macOS build number to macOS version
58
- # @return macOS version(Sierra, High Sierra only)
59
+ # @return macOS version(High Sierra or higher)
59
60
  def self.macos_build_to_macos_version(build:)
60
- # reference https://support.apple.com/ja-jp/HT201260
61
61
  case build
62
- #macOS Mojave
63
- when "18E226" then
62
+ # macOS Catalina
63
+ when "19C57" then
64
+ "10.15.2"
65
+ when "19B88" then
66
+ "10.15.1"
67
+ when "19A583", "19A602" then
68
+ "10.15"
69
+ # macOS Mojave
70
+ when "18G84", "18G103", "18G1012" then
71
+ "10.14.6"
72
+ when "18F132", "18F203" then
73
+ "10.14.5"
74
+ when "18E226", "18E227" then
64
75
  "10.14.4"
65
- when "18D42", "18D109" then
76
+ when "18D42", "18D43", "18D109" then
66
77
  "10.14.3"
67
78
  when "18C54" then
68
79
  "10.14.2"
69
- when "18B75" then
80
+ when "18B75", "18B2107", "18B3094" then
70
81
  "10.14.1"
71
82
  when "18A391" then
72
83
  "10.14"
@@ -85,21 +96,6 @@ module Fastlane
85
96
  "10.13.1"
86
97
  when "17A365", "17A405" then
87
98
  "10.13"
88
- # macOS Sierra
89
- when "16G29", "16G1036", "16G1114", "16G1212" then
90
- "10.12.6"
91
- when "16F73" then
92
- "10.12.5"
93
- when "16E195" then
94
- "10.12.4"
95
- when "16D32" then
96
- "10.12.3"
97
- when "16C67" then
98
- "10.12.2"
99
- when "16B2555", "16B2557" then
100
- "10.12.1"
101
- when "16A323" then
102
- "10.12.1"
103
99
  else
104
100
  "UnKnown"
105
101
  end
@@ -109,6 +105,8 @@ module Fastlane
109
105
  minor_version = version.split(".")[1].to_i
110
106
  # reference https://support.apple.com/ja-jp/HT201260
111
107
  case minor_version
108
+ when 15
109
+ "macOS Catalina"
112
110
  when 14
113
111
  "macOS Mojave"
114
112
  when 13
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module IpaInfo
3
- VERSION = "0.3.3"
3
+ VERSION = "0.4.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,29 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-ipa_info
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - tarappo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-07 00:00:00.000000000 Z
11
+ date: 2020-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: ipa_analyzer
14
+ name: plist
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.1'
17
20
  - - ">="
18
21
  - !ruby/object:Gem::Version
19
- version: '0'
22
+ version: 3.1.0
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '3.1'
24
30
  - - ">="
25
31
  - !ruby/object:Gem::Version
26
- version: '0'
32
+ version: 3.1.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: rubyzip
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.1'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 1.1.7
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '1.1'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 1.1.7
27
53
  - !ruby/object:Gem::Dependency
28
54
  name: pry
29
55
  requirement: !ruby/object:Gem::Requirement
@@ -160,6 +186,7 @@ files:
160
186
  - README.md
161
187
  - lib/fastlane/plugin/ipa_info.rb
162
188
  - lib/fastlane/plugin/ipa_info/actions/ipa_info_action.rb
189
+ - lib/fastlane/plugin/ipa_info/helper/ipa_analyze_helper.rb
163
190
  - lib/fastlane/plugin/ipa_info/helper/ipa_info_helper.rb
164
191
  - lib/fastlane/plugin/ipa_info/version.rb
165
192
  homepage: https://github.com/tarappo/fastlane-plugin-ipa_info