fir-cli 1.1.5 → 1.1.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,169 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Parser
4
-
5
- class << self
6
-
7
- def png_bin
8
- @png_bin ||= File.expand_path("../bin/pngcrush", __FILE__)
9
- end
10
-
11
- def uncrush_icon crushed_icon_path, uncrushed_icon_path
12
- system("#{png_bin} -revert-iphone-optimizations #{crushed_icon_path} #{uncrushed_icon_path} &> /dev/null")
13
- end
14
-
15
- def crush_icon uncrushed_icon_path, crushed_icon_path
16
- system("#{png_bin} -iphone #{uncrushed_icon_path} #{crushed_icon_path} &> /dev/null")
17
- end
18
- end
19
-
20
- class IPA
21
-
22
- def initialize(path)
23
- @path = path
24
- end
25
-
26
- def app
27
- @app ||= App.new(app_path)
28
- end
29
-
30
- def app_path
31
- @app_path ||= Dir.glob(File.join(contents, 'Payload', '*.app')).first
32
- end
33
-
34
- def cleanup
35
- return unless @contents
36
- FileUtils.rm_rf(@contents)
37
- @contents = nil
38
- end
39
-
40
- def metadata
41
- return unless has_metadata?
42
- @metadata ||= CFPropertyList.native_types(CFPropertyList::List.new(file: metadata_path).value)
43
- end
44
-
45
- def has_metadata?
46
- File.file? metadata_path
47
- end
48
-
49
- def metadata_path
50
- @metadata_path ||= File.join(@contents, 'iTunesMetadata.plist')
51
- end
52
-
53
- def release_type
54
- has_metadata? ? 'store' : 'adhoc'
55
- end
56
-
57
- private
58
-
59
- def contents
60
- return if @contents
61
- @contents = "fir-cli_tmp/ipa_files-#{Time.now.to_i}"
62
-
63
- Zip::File.open(@path) do |zip_file|
64
- zip_file.each do |f|
65
- f_path = File.join(@contents, f.name)
66
- FileUtils.mkdir_p(File.dirname(f_path))
67
- zip_file.extract(f, f_path) unless File.exist?(f_path)
68
- end
69
- end
70
-
71
- @contents
72
- end
73
- end
74
-
75
- class App
76
-
77
- def initialize(path)
78
- @path = path
79
- end
80
-
81
- def info
82
- @info ||= CFPropertyList.native_types(
83
- CFPropertyList::List.new(file: File.join(@path, 'Info.plist')).value)
84
- end
85
-
86
- def name
87
- info['CFBundleName']
88
- end
89
-
90
- def identifier
91
- info['CFBundleIdentifier']
92
- end
93
-
94
- def display_name
95
- info['CFBundleDisplayName']
96
- end
97
-
98
- def version
99
- info['CFBundleVersion']
100
- end
101
-
102
- def short_version
103
- info['CFBundleShortVersionString']
104
- end
105
-
106
- def icons
107
- @icons ||= begin
108
- icons = []
109
- info['CFBundleIcons']['CFBundlePrimaryIcon']['CFBundleIconFiles'].each do |name|
110
- icons << get_image(name)
111
- icons << get_image("#{name}@2x")
112
- end
113
- icons.delete_if { |i| !i }
114
- rescue NoMethodError
115
- []
116
- end
117
- end
118
-
119
- def mobileprovision
120
- return unless has_mobileprovision?
121
- return @mobileprovision if @mobileprovision
122
-
123
- cmd = "security cms -D -i \"#{mobileprovision_path}\""
124
- begin
125
- @mobileprovision = CFPropertyList.native_types(CFPropertyList::List.new(data: `#{cmd}`).value)
126
- rescue CFFormatError
127
- @mobileprovision = {}
128
- end
129
- end
130
-
131
- def has_mobileprovision?
132
- File.file? mobileprovision_path
133
- end
134
-
135
- def mobileprovision_path
136
- @mobileprovision_path ||= File.join(@path, 'embedded.mobileprovision')
137
- end
138
-
139
- def hide_developer_certificates
140
- mobileprovision.delete('DeveloperCertificates') if has_mobileprovision?
141
- end
142
-
143
- def devices
144
- mobileprovision['ProvisionedDevices'] if has_mobileprovision?
145
- end
146
-
147
- def distribution_name
148
- "#{mobileprovision['Name']} - #{mobileprovision['TeamName']}" if has_mobileprovision?
149
- end
150
-
151
- def release_type
152
- if has_mobileprovision?
153
- if devices
154
- 'adhoc'
155
- else
156
- 'inhouse'
157
- end
158
- end
159
- end
160
-
161
- private
162
-
163
- def get_image name
164
- path = File.join(@path, "#{name}.png")
165
- return nil unless File.exist?(path)
166
- path
167
- end
168
- end
169
- end
data/test/fir_cli_test.rb DELETED
@@ -1,88 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'minitest/autorun'
4
- require 'fir'
5
-
6
- class Minitest::Test
7
-
8
- def default_token
9
- '2dd8a99ef9d19c540bb583624b939960'
10
- end
11
-
12
- def default_email
13
- 'fir-cli_test@fir.im'
14
- end
15
-
16
- def default_apk
17
- File.expand_path('../cases', __FILE__) + '/test_apk.apk'
18
- end
19
-
20
- def default_ipa
21
- File.expand_path('../cases', __FILE__) + '/test_ipa.ipa'
22
- end
23
-
24
- def default_device_udid
25
- "cf8b87e3f469d7b185fd64c057778aecbc2017a6"
26
- end
27
-
28
- def default_distribution_name
29
- 'iOSTeam Provisioning Profile: im.fir.* - Fly It Remotely LLC.'
30
- end
31
- end
32
-
33
- class LoginTest < Minitest::Test
34
-
35
- def test_login
36
- user_info = FIR.fetch_user_info(default_token)
37
-
38
- assert_equal default_email, user_info.fetch(:email, '')
39
- end
40
- end
41
-
42
- class MeTest < Minitest::Test
43
-
44
- def test_me
45
- user_info = FIR.fetch_user_info(default_token)
46
-
47
- FIR.write_config(email: user_info.fetch(:email, ''), token: default_token)
48
- FIR.reload_config
49
-
50
- me_info = FIR.fetch_user_info(FIR.current_token)
51
-
52
- assert_equal default_email, me_info.fetch(:email, '')
53
- end
54
- end
55
-
56
- class InfoTest < Minitest::Test
57
-
58
- def test_apk_info
59
- info = FIR.apk_info(default_apk, true)
60
-
61
- assert_equal 'android', info[:type]
62
- assert_equal 'im.fir.sdk.test', info[:identifier]
63
- assert_equal 'TestCrash', info[:name]
64
- assert_equal '3', info[:build]
65
- assert_equal '3.0', info[:version]
66
-
67
- assert_equal true, File.exist?(info[:icons].first)
68
- end
69
-
70
- def test_ipa_info
71
- info = FIR.ipa_info(default_ipa, true)
72
-
73
- assert_equal 'ios', info[:type]
74
- assert_equal 'im.fir.build-ipa', info[:identifier]
75
- assert_equal 'build_ipa', info[:name]
76
- assert_equal '1', info[:build]
77
- assert_equal '1.0', info[:version]
78
-
79
- # Only for OSX
80
- # assert_equal nil, info[:display_name]
81
- # assert_equal default_device_udid, info[:devices].first
82
- # assert_equal 'adhoc', info[:release_type]
83
- # assert_equal default_distribution_name, info[:distribution_name]
84
-
85
- assert_equal true, info[:plist].is_a?(Hash)
86
- assert_equal true, info[:mobileprovision].is_a?(Hash)
87
- end
88
- end