pindo 4.8.5 → 4.8.7

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
  SHA256:
3
- metadata.gz: 16ce8b8ae92b406194afa919044296d0f7801fc4146c4d89b27c792414694607
4
- data.tar.gz: '0914b0e1e63700cef9e63d6404b7ea765a34b038777c629ebd6caa254b143b32'
3
+ metadata.gz: 24b5673e6e6b22077a55006939dc549e2b545537d935c6a004bed385dd936014
4
+ data.tar.gz: 699659aa13cff6c29fd5cbf63ba1a16707cb1ba6e8811f913094c968d4fcd09a
5
5
  SHA512:
6
- metadata.gz: 681c6548cab3d378f7962d3f8d2cb67dedb7ad5bc69e5ed128075cf8e0fecf246e8c5a52f6f4fc356d7d03addcb6ff35ee2151f461716c6f9f48af638aa276c8
7
- data.tar.gz: 6712a01b81509487ac6d62f80f870edd1abaf8abe874ebad8228efacd3d1e8a7aa9c2ad53268eae12a99e87563322749a4be7115602fc6a7ee273e98bd7384b3
6
+ metadata.gz: 1ae0851cb8497f852602e3fe26c49f6a1e69e0ba922c44833cf43abe12c186b6d1fec343ac29c3d62c1299c841dda8b0a0782caec8c952885a2fb9c1b0bd4805
7
+ data.tar.gz: 7ba1a294c60d4d1633e0f136a04d24712f7b01aec7c0702e890b8d7325e0261497897a67fbe55e1a9f63faaec566e70e8f98d52081c75c134bfbd3bd6953077a
@@ -119,7 +119,7 @@ module Pindo
119
119
  proj_name = File.basename(project_fullname, ".xcodeproj")
120
120
  project_obj = Xcodeproj::Project.open(project_fullname)
121
121
 
122
- build_platform = project_obj.root_object.build_configuration_list.get_setting("SDKROOT")["Release"]
122
+ project_build_platform = project_obj.root_object.build_configuration_list.get_setting("SDKROOT")["Release"]
123
123
  main_target = project_obj.targets.select { |target| target.product_type.include?(Xcodeproj::Constants::PRODUCT_TYPE_UTI[:application]) }.first
124
124
  provisioning_profile_name = main_target.build_configurations.first.build_settings['PROVISIONING_PROFILE_SPECIFIER'].downcase.split(" ")
125
125
 
@@ -127,23 +127,49 @@ module Pindo
127
127
 
128
128
  build_type = "app-store"
129
129
  icloud_env = "Production"
130
- if provisioning_profile_name.include?("direct") && provisioning_profile_name.include?("macos")
131
- build_type = "developer-id"
132
- icloud_env = "Production"
133
- elsif provisioning_profile_name.include?("development") && provisioning_profile_name.include?("macos")
134
- build_type = "development"
135
- icloud_env = "Development"
136
- elsif provisioning_profile_name.include?("adhoc")
137
- build_type = "ad-hoc"
138
- icloud_env = "Development"
139
- elsif provisioning_profile_name.include?("development")
140
- build_type = "development"
141
- icloud_env = "Development"
130
+
131
+ if !project_build_platform.nil? && project_build_platform.eql?("macosx")
132
+ if provisioning_profile_name.include?("development")
133
+ # Mac development
134
+ build_type = "development"
135
+ icloud_env = "Development"
136
+ elsif provisioning_profile_name.include?("appstore")
137
+ build_type = "mac-application"
138
+ icloud_env = "Production"
139
+ else
140
+ build_type = "developer-id"
141
+ icloud_env = "Production"
142
+ end
142
143
  else
143
- build_type = "app-store"
144
- icloud_env = "Production"
144
+ if provisioning_profile_name.include?("adhoc")
145
+ build_type = "ad-hoc"
146
+ icloud_env = "Development"
147
+ elsif provisioning_profile_name.include?("development")
148
+ build_type = "development"
149
+ icloud_env = "Development"
150
+ else
151
+ build_type = "app-store"
152
+ icloud_env = "Production"
153
+ end
145
154
  end
146
155
 
156
+ # if provisioning_profile_name.include?("direct") && provisioning_profile_name.include?("macos")
157
+ # build_type = "developer-id"
158
+ # icloud_env = "Production"
159
+ # elsif provisioning_profile_name.include?("development") && provisioning_profile_name.include?("macos")
160
+ # build_type = "development"
161
+ # icloud_env = "Development"
162
+ # elsif provisioning_profile_name.include?("adhoc")
163
+ # build_type = "ad-hoc"
164
+ # icloud_env = "Development"
165
+ # elsif provisioning_profile_name.include?("development")
166
+ # build_type = "development"
167
+ # icloud_env = "Development"
168
+ # else
169
+ # build_type = "app-store"
170
+ # icloud_env = "Production"
171
+ # end
172
+
147
173
  if build_type.eql?("app-store") || build_type.eql?("ad-hoc")
148
174
  if File.exist?(File.join(project_path, "Unity/Data/Raw/SettingsPluginFlag.txt"))
149
175
  raise Informative, "Unity代码包含测试模板,请重新导出Unity代码"
@@ -166,7 +192,7 @@ module Pindo
166
192
  }
167
193
 
168
194
 
169
- if !build_platform.nil? && build_platform.eql?("macosx")
195
+ if !project_build_platform.nil? && project_build_platform.eql?("macosx")
170
196
  values[:output_name] = nil
171
197
  values[:destination] = "generic/platform=macosx"
172
198
  end
@@ -58,11 +58,6 @@ module Pindo
58
58
  @build_type = "development"
59
59
  end
60
60
 
61
- @args_platform = "ios"
62
- if @args_macos_flag
63
- @args_platform = "macos"
64
- end
65
-
66
61
  end
67
62
 
68
63
  def run
@@ -91,10 +86,6 @@ module Pindo
91
86
  platform_type = "ios"
92
87
  if @args_macos_flag
93
88
  platform_type = "macos"
94
- else
95
- if @config_json && @config_json['project_info'] && @config_json['project_info']['build_type'].include?("MacOS")
96
- platform_type = "macos"
97
- end
98
89
  end
99
90
 
100
91
 
@@ -134,7 +125,7 @@ module Pindo
134
125
  if !new_project_fullname.nil? && File.exist?(new_project_fullname) && !provisioning_info_array.nil? && provisioning_info_array.size > 0
135
126
  new_proj_name = File.basename(new_project_fullname, ".xcodeproj")
136
127
  Funlog.instance.fancyinfo_start("正在给Xcode配置证书...")
137
- config_project_cert(new_proj_name:new_proj_name, new_project_dir:new_project_dir, cert_type:@build_type, team_id_vaule:@team_id_vaule, provisioning_info_array:provisioning_info_array)
128
+ config_project_cert(new_proj_name:new_proj_name, new_project_dir:new_project_dir, cert_type:@build_type, platform_type:platform_type, team_id_vaule:@team_id_vaule, provisioning_info_array:provisioning_info_array)
138
129
  config_infoplist_cert(new_proj_name:new_proj_name, new_project_dir:new_project_dir, icloud_id:@icloud_id, group_id:@group_id, provisioning_info_array:provisioning_info_array)
139
130
  Funlog.instance.fancyinfo_success("Xcode配置证书完成!")
140
131
  end
@@ -164,6 +155,10 @@ module Pindo
164
155
  force_for_new_devices_flag = false
165
156
  end
166
157
 
158
+ if platform_type.downcase.include?("macos") && build_type.eql?("adhoc")
159
+ build_type = "developer_id"
160
+ end
161
+
167
162
  values = {
168
163
  username:apple_id,
169
164
  app_identifier: bundle_id_array,
@@ -114,13 +114,27 @@ module Pindo
114
114
  args_temp << "--dev"
115
115
  end
116
116
 
117
+ project_fullname = Dir.glob(File.join(project_dir, "/*.xcodeproj")).max_by {|f| File.mtime(f)}
118
+ if !project_fullname.nil?
119
+ project_obj = Xcodeproj::Project.open(project_fullname)
120
+ project_build_platform = project_obj.root_object.build_configuration_list.get_setting("SDKROOT")["Release"]
121
+ if !project_build_platform.nil? && project_build_platform.eql?("macosx")
122
+ @args_macos_flag = true
123
+ end
124
+ end
125
+
126
+ if @args_macos_flag
127
+ args_temp << "--macos"
128
+ end
129
+
117
130
  Pindo::Command::Deploy::Cert::run(args_temp)
118
131
 
119
132
  Dir.chdir(project_dir)
120
133
  Pindo::Command::Deploy::Build::run(args_temp)
121
134
 
135
+
122
136
  pindo_new_project_dir = Dir.pwd
123
- build_path = File.join(pindo_new_project_dir, "build", "*.ipa")
137
+ build_path = File.join(pindo_new_project_dir, "build", "*.{ipa,app}")
124
138
  ipa_file_upload = Dir.glob(build_path).max_by {|f| File.mtime(f)}
125
139
 
126
140
  if !ipa_file_upload.nil? && !app_info_obj.nil?
@@ -58,7 +58,7 @@ module Pindo
58
58
 
59
59
 
60
60
  pindo_new_project_dir = Dir.pwd
61
- build_path = File.join(pindo_new_project_dir, "build", "*.ipa")
61
+ build_path = File.join(pindo_new_project_dir, "build", "*.{ipa,app}")
62
62
  ipa_file_upload = Dir.glob(build_path).max_by {|f| File.mtime(f)}
63
63
 
64
64
  if !ipa_file_upload.nil? && !app_info_obj.nil?
@@ -66,6 +66,17 @@ module Pindo
66
66
  args_temp << "--dev"
67
67
  end
68
68
 
69
+
70
+
71
+ project_fullname = Dir.glob(File.join(project_dir, "/*.xcodeproj")).max_by {|f| File.mtime(f)}
72
+ if !project_fullname.nil?
73
+ project_obj = Xcodeproj::Project.open(project_fullname)
74
+ project_build_platform = project_obj.root_object.build_configuration_list.get_setting("SDKROOT")["Release"]
75
+ if !project_build_platform.nil? && project_build_platform.eql?("macosx")
76
+ @args_macos_flag = true
77
+ end
78
+ end
79
+
69
80
  if @args_macos_flag
70
81
  args_temp << "--macos"
71
82
  end
@@ -80,35 +91,22 @@ module Pindo
80
91
 
81
92
  def self.modify_cert_with_project(project_dir:nil, config_file:nil)
82
93
 
83
-
84
- project_fullname = ""
85
- Dir.foreach(project_dir) do |file|
86
- if file =~ /(.*).xcodeproj/
87
- project_fullname = file
88
- break;
89
- end
90
- end
91
-
94
+ project_fullname = Dir.glob(File.join(project_dir, "/*.xcodeproj")).max_by {|f| File.mtime(f)}
92
95
  if !project_fullname.nil?
93
- proj_name = File.basename(project_fullname, ".xcodeproj")
94
-
95
- entitlements_plist_path = File.join(project_dir, proj_name + ".entitlements")
96
- proj_fullname = File.join(project_dir, proj_name) + ".xcodeproj"
97
- if File.exist?(proj_fullname)
98
- project_obj = Xcodeproj::Project.open(proj_fullname)
99
- project_obj.targets.each do |target|
100
- if target.product_type.to_s.eql?("com.apple.product-type.application") then
101
- temp_entitlements_file = target.build_configurations.first.build_settings['CODE_SIGN_ENTITLEMENTS']
102
- if !temp_entitlements_file.nil? && !temp_entitlements_file.empty?
103
- entitlements_plist_path = File.join(project_dir, temp_entitlements_file)
104
- end
96
+
97
+ entitlements_plist_path = nil
98
+ project_obj = Xcodeproj::Project.open(project_fullname)
99
+ project_obj.targets.each do |target|
100
+ if target.product_type.to_s.eql?("com.apple.product-type.application") then
101
+ temp_entitlements_file = target.build_configurations.first.build_settings['CODE_SIGN_ENTITLEMENTS']
102
+ if !temp_entitlements_file.nil? && !temp_entitlements_file.empty?
103
+ entitlements_plist_path = File.join(project_dir, temp_entitlements_file)
105
104
  end
106
105
  end
107
106
  end
108
107
 
109
108
  # puts entitlements_plist_path
110
- if File.exist?(entitlements_plist_path)
111
-
109
+ if !entitlements_plist_path.nil? && File.exist?(entitlements_plist_path)
112
110
  config_json = nil
113
111
  if File.exist?(config_file)
114
112
  config_json = JSON.parse(File.read(config_file))
@@ -122,7 +120,6 @@ module Pindo
122
120
  end
123
121
  end
124
122
 
125
-
126
123
  if entitlements_plist_dict["com.apple.security.application-groups"].nil?
127
124
  if !config_json.nil? && !config_json["app_info"]['app_group_id'].nil?
128
125
  config_json["app_info"].delete('app_group_id')
@@ -86,12 +86,13 @@ module Pindo
86
86
 
87
87
  current_project_dir = Dir.pwd
88
88
  if @args_ipa_file.nil? || !File.exist?(@args_ipa_file)
89
- build_path = File.join(current_project_dir, "build", "*.ipa")
89
+ build_path = File.join(current_project_dir, "build", "*.{ipa,app}")
90
90
  @args_ipa_file = Dir.glob(build_path).max_by {|f| File.mtime(f)}
91
91
  if @args_ipa_file.nil?
92
92
  build_path = File.join(current_project_dir, "*.ipa")
93
93
  @args_ipa_file = Dir.glob(build_path).max_by {|f| File.mtime(f)}
94
94
  end
95
+
95
96
  if !@args_ipa_file.nil?
96
97
  answer = agree("需要上传的ipa文件是: #{@args_ipa_file} ?(Y/n)")
97
98
  if !answer
@@ -66,10 +66,12 @@ module Pindo
66
66
 
67
67
  cert_git_dir = cert_type.downcase
68
68
  if platform_type.downcase.eql?("macos")
69
- if !cert_type.downcase.include?("development")
70
- cert_git_dir = "developer_id_application"
71
- else
69
+ if cert_type.downcase.include?("development")
72
70
  cert_git_dir = "development"
71
+ elsif cert_type.downcase.eql?("appstore")
72
+ cert_git_dir = "distribution"
73
+ else
74
+ cert_git_dir = "developer_id_application"
73
75
  end
74
76
  else
75
77
  if !cert_type.downcase.include?("development")
@@ -133,16 +135,22 @@ module Pindo
133
135
  cert_sub_dir = cert_type.downcase
134
136
  provision_start_name = "Development"
135
137
  provision_extension_name = ".mobileprovision"
138
+
136
139
  if platform_type.downcase.include?("macos")
137
140
  provision_extension_name = ".provisionprofile"
141
+
138
142
  if cert_type.downcase.include?("development")
139
143
  provision_start_name = "Development"
140
144
  cert_sub_dir = cert_type.downcase
145
+ elsif cert_type.downcase.eql?("appstore")
146
+ provision_start_name = "AppStore"
147
+ cert_sub_dir = "appstore"
141
148
  else
142
149
  provision_start_name = "Direct"
143
150
  cert_sub_dir = "developer_id"
144
151
  end
145
152
  else
153
+ provision_extension_name = ".mobileprovision"
146
154
  if cert_type.downcase.include?("development")
147
155
  provision_start_name = "Development"
148
156
  cert_sub_dir = cert_type.downcase
@@ -34,22 +34,30 @@ module Pindo
34
34
  provisioning_info = {}
35
35
  provisioning_info['type'] = type
36
36
  provisioning_info['bundle_id'] = bundle_id_temp
37
- name_temp = Match::Utils.environment_variable_name_profile_name(app_identifier: bundle_id_temp, type: build_type, platform:platform_type)
37
+
38
+
39
+ match_build_type = build_type
40
+ if platform_type.downcase.include?("macos") && match_build_type.downcase.include?("adhoc")
41
+ match_build_type = "developer_id"
42
+ end
43
+
44
+ name_temp = Match::Utils.environment_variable_name_profile_name(app_identifier: bundle_id_temp, type: match_build_type, platform:platform_type)
38
45
  provisioning_info['profile_name'] = ENV[name_temp]
39
- path_temp = Match::Utils.environment_variable_name_profile_path(app_identifier:bundle_id_temp,type: build_type, platform:platform_type)
46
+ path_temp = Match::Utils.environment_variable_name_profile_path(app_identifier:bundle_id_temp,type: match_build_type, platform:platform_type)
40
47
  provisioning_info['profile_path'] = ENV[path_temp]
41
- signing_identity_key=Match::Utils.environment_variable_name_certificate_name(app_identifier: bundle_id_temp,type: build_type, platform:platform_type)
48
+ signing_identity_key=Match::Utils.environment_variable_name_certificate_name(app_identifier: bundle_id_temp,type: match_build_type, platform:platform_type)
42
49
  provisioning_info["signing_identity"] = ENV[signing_identity_key]
43
- team_id_key = Match::Utils.environment_variable_name_team_id(app_identifier: bundle_id_temp,type:build_type, platform:platform_type)
50
+ team_id_key = Match::Utils.environment_variable_name_team_id(app_identifier: bundle_id_temp,type:match_build_type, platform:platform_type)
44
51
  provisioning_info["team_id"] = ENV[team_id_key]
45
52
  provisioning_info_array << provisioning_info
53
+
46
54
  end
47
55
 
48
56
 
49
57
  return provisioning_info_array
50
58
  end
51
59
 
52
- def config_project_cert(new_proj_name:nil, new_project_dir:nil, cert_type:nil, team_id_vaule:nil, provisioning_info_array:nil)
60
+ def config_project_cert(new_proj_name:nil, new_project_dir:nil, cert_type:nil, platform_type:nil, team_id_vaule:nil, provisioning_info_array:nil)
53
61
 
54
62
 
55
63
  new_proj_fullname = File.join(new_project_dir, new_proj_name) + ".xcodeproj"
@@ -58,11 +66,36 @@ module Pindo
58
66
  new_project_obj.root_object.build_configuration_list.set_setting('CODE_SIGN_IDENTITY[sdk=iphoneos*]', "Apple Distribution")
59
67
  new_project_obj.root_object.build_configuration_list.set_setting('CODE_SIGN_IDENTITY*', "Apple Distribution")
60
68
 
61
- if cert_type == "development"
62
- new_project_obj.root_object.build_configuration_list.set_setting('CODE_SIGN_IDENTITY[sdk=iphoneos*]', "Apple Development")
63
- new_project_obj.root_object.build_configuration_list.set_setting('CODE_SIGN_IDENTITY*', "Apple Development")
69
+ if !platform_type.nil? && platform_type.downcase.eql?("macos")
70
+ # new_project_obj.root_object.build_configuration_list.set_setting('CODE_SIGN_IDENTITY[sdk=iphoneos*]', nil)
71
+ new_project_obj.root_object.build_configuration_list.build_configurations.each do |config|
72
+ config.build_settings.delete('CODE_SIGN_IDENTITY[sdk=iphoneos*]') if config.build_settings.key?('CODE_SIGN_IDENTITY[sdk=iphoneos*]')
73
+ end
74
+
75
+ if cert_type.downcase.eql?("development")
76
+ new_project_obj.root_object.build_configuration_list.set_setting('CODE_SIGN_IDENTITY[sdk=macosx*]', "Apple Development")
77
+ new_project_obj.root_object.build_configuration_list.set_setting('CODE_SIGN_IDENTITY*', "Apple Development")
78
+ elsif cert_type.downcase.eql?("appstore")
79
+ new_project_obj.root_object.build_configuration_list.set_setting('CODE_SIGN_IDENTITY[sdk=macosx*]', "Apple Distribution")
80
+ new_project_obj.root_object.build_configuration_list.set_setting('CODE_SIGN_IDENTITY*', "Apple Distribution")
81
+ else
82
+ new_project_obj.root_object.build_configuration_list.set_setting('CODE_SIGN_IDENTITY[sdk=macosx*]', "Developer ID Application")
83
+ new_project_obj.root_object.build_configuration_list.set_setting('CODE_SIGN_IDENTITY*', "Developer ID Application")
84
+ end
85
+ else
86
+ new_project_obj.root_object.build_configuration_list.build_configurations.each do |config|
87
+ config.build_settings.delete('CODE_SIGN_IDENTITY[sdk=macosx*]') if config.build_settings.key?('CODE_SIGN_IDENTITY[sdk=macosx*]')
88
+ end
89
+ if cert_type.downcase.eql?("development")
90
+ new_project_obj.root_object.build_configuration_list.set_setting('CODE_SIGN_IDENTITY[sdk=iphoneos*]', "Apple Development")
91
+ new_project_obj.root_object.build_configuration_list.set_setting('CODE_SIGN_IDENTITY*', "Apple Development")
92
+ else
93
+ new_project_obj.root_object.build_configuration_list.set_setting('CODE_SIGN_IDENTITY[sdk=iphoneos*]', "Apple Distribution")
94
+ new_project_obj.root_object.build_configuration_list.set_setting('CODE_SIGN_IDENTITY*', "Apple Distribution")
95
+ end
64
96
  end
65
97
 
98
+
66
99
  new_project_obj.root_object.attributes['TargetAttributes'] = new_project_obj.root_object.attributes['TargetAttributes'] || {}
67
100
  target_atts_obj = new_project_obj.root_object.attributes['TargetAttributes']
68
101
 
@@ -97,22 +130,64 @@ module Pindo
97
130
  target_atts_obj[target.uuid]['DevelopmentTeam'] = team_id_vaule
98
131
  target_atts_obj[target.uuid]['ProvisioningStyle'] = "Manual"
99
132
  config.build_settings['DEVELOPMENT_TEAM'] = team_id_vaule
100
- config.build_settings['DEVELOPMENT_TEAM[sdk=iphoneos*]'] = team_id_vaule
101
133
  config.build_settings['CODE_SIGN_STYLE'] = "Manual"
102
134
 
103
135
  config.build_settings['CODE_SIGN_IDENTITY'] = "Apple Distribution"
104
136
  config.build_settings['CODE_SIGN_IDENTITY[sdk=iphoneos*]'] = "Apple Distribution"
105
-
106
- if cert_type == "development"
107
- config.build_settings['CODE_SIGN_IDENTITY'] = "Apple Development"
108
- config.build_settings['CODE_SIGN_IDENTITY[sdk=iphoneos*]'] = "Apple Development"
109
- end
110
137
 
111
- if !provisioning_info.nil?
112
- config.build_settings['PRODUCT_BUNDLE_IDENTIFIER'] = provisioning_info["bundle_id"]
113
- config.build_settings['PROVISIONING_PROFILE_SPECIFIER'] = provisioning_info['profile_name']
114
- config.build_settings['PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]'] = provisioning_info['profile_name']
138
+ if !platform_type.nil? && platform_type.downcase.eql?("macos")
139
+
140
+ config.build_settings['DEVELOPMENT_TEAM[sdk=macosx*]'] = team_id_vaule
141
+ # config.build_settings['DEVELOPMENT_TEAM[sdk=iphoneos*]'] = nil
142
+ # config.build_settings['CODE_SIGN_IDENTITY[sdk=iphoneos*]'] = nil
143
+ # config.build_settings['PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]'] = nil
144
+
145
+ config.build_settings.delete('DEVELOPMENT_TEAM[sdk=iphoneos*]') if config.build_settings.key?('DEVELOPMENT_TEAM[sdk=iphoneos*]')
146
+ config.build_settings.delete('CODE_SIGN_IDENTITY[sdk=iphoneos*]') if config.build_settings.key?('CODE_SIGN_IDENTITY[sdk=iphoneos*]')
147
+ config.build_settings.delete('PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]') if config.build_settings.key?('PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]')
148
+
115
149
 
150
+
151
+ if cert_type.downcase.eql?("development")
152
+ config.build_settings['CODE_SIGN_IDENTITY'] = "Apple Development"
153
+ config.build_settings['CODE_SIGN_IDENTITY[sdk=macosx*]'] = "Apple Development"
154
+ elsif cert_type.downcase.eql?("appstore")
155
+ config.build_settings['CODE_SIGN_IDENTITY'] = "Apple Distribution"
156
+ config.build_settings['CODE_SIGN_IDENTITY[sdk=macosx*]'] = "Apple Distribution"
157
+ else
158
+ config.build_settings['CODE_SIGN_IDENTITY'] = "Developer ID Application"
159
+ config.build_settings['CODE_SIGN_IDENTITY[sdk=macosx*]'] = "Developer ID Application"
160
+ end
161
+
162
+ if !provisioning_info.nil?
163
+ config.build_settings['PRODUCT_BUNDLE_IDENTIFIER'] = provisioning_info["bundle_id"]
164
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER'] = provisioning_info['profile_name']
165
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]'] = provisioning_info['profile_name']
166
+ end
167
+
168
+ else
169
+ config.build_settings['DEVELOPMENT_TEAM[sdk=iphoneos*]'] = team_id_vaule
170
+ # config.build_settings['DEVELOPMENT_TEAM[sdk=macosx*]'] = ""
171
+ # config.build_settings['CODE_SIGN_IDENTITY[sdk=macosx*]'] = ""
172
+ # config.build_settings['PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]'] = ""
173
+
174
+ config.build_settings.delete('DEVELOPMENT_TEAM[sdk=macosx*]') if config.build_settings.key?('DEVELOPMENT_TEAM[sdk=macosx*]')
175
+ config.build_settings.delete('CODE_SIGN_IDENTITY[sdk=macosx*]') if config.build_settings.key?('CODE_SIGN_IDENTITY[sdk=macosx*]')
176
+ config.build_settings.delete('PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]') if config.build_settings.key?('PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]')
177
+
178
+
179
+ if cert_type.downcase.eql?("development")
180
+ config.build_settings['CODE_SIGN_IDENTITY'] = "Apple Development"
181
+ config.build_settings['CODE_SIGN_IDENTITY[sdk=iphoneos*]'] = "Apple Development"
182
+ else
183
+ config.build_settings['CODE_SIGN_IDENTITY'] = "Apple Distribution"
184
+ config.build_settings['CODE_SIGN_IDENTITY[sdk=iphoneos*]'] = "Apple Distribution"
185
+ end
186
+ if !provisioning_info.nil?
187
+ config.build_settings['PRODUCT_BUNDLE_IDENTIFIER'] = provisioning_info["bundle_id"]
188
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER'] = provisioning_info['profile_name']
189
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]'] = provisioning_info['profile_name']
190
+ end
116
191
  end
117
192
  end
118
193
  end
@@ -232,13 +307,16 @@ module Pindo
232
307
  if !File.exist?(cert_dest_dir)
233
308
  FileUtils.mkdir_p(cert_dest_dir)
234
309
  end
235
-
310
+ cert_type_temp = cert_type
236
311
  cert_sub_dir = cert_type.downcase
237
312
  if platform_type.downcase.eql?("macos")
238
- if !cert_type.downcase.include?("development")
239
- cert_sub_dir = "developer_id_application"
240
- else
313
+ if cert_type.downcase.include?("development")
241
314
  cert_sub_dir = "development"
315
+ elsif cert_type.downcase.eql?("appstore")
316
+ cert_sub_dir = "distribution"
317
+ else
318
+ cert_type_temp = "developer_id"
319
+ cert_sub_dir = "developer_id_application"
242
320
  end
243
321
  else
244
322
  if !cert_type.downcase.include?("development")
@@ -263,7 +341,7 @@ module Pindo
263
341
  raise Informative, "证书解析失败,密码错误!"
264
342
  end
265
343
 
266
- FileUtils.copy(key_path, File.join(cert_dest_dir, "#{cert_type}.p12"))
344
+ FileUtils.copy(key_path, File.join(cert_dest_dir, "#{cert_type_temp}.p12"))
267
345
 
268
346
  end
269
347
 
@@ -312,18 +390,15 @@ module Pindo
312
390
  account_cert_set["certs"].delete_if { |x| x["cert_id"].eql?(bundle_id_signing_identity)}
313
391
  end
314
392
 
315
- cert_item["cert_id"] = cert_item["cert_id"] || bundle_id_signing_identity
316
- cert_item["password"] = "goodcert1"
317
- cert_item["cert_file"] = "#{cert_type}.p12"
318
- cert_item["cert_type"] = cert_type
319
- cert_item["cert_provisioning_group"] = cert_item["cert_provisioning_group"] || []
320
-
321
-
322
393
  provision_start_name = "Development"
394
+ cert_type_temp = cert_type
323
395
  if platform_type.downcase.include?("macos")
324
396
  if cert_type.downcase.include?("development")
325
397
  provision_start_name = "development"
398
+ elsif cert_type.downcase.eql?("appstore")
399
+ provision_start_name = "appstore"
326
400
  else
401
+ cert_type_temp = "developer_id"
327
402
  provision_start_name = "direct"
328
403
  end
329
404
  else
@@ -336,8 +411,17 @@ module Pindo
336
411
  end
337
412
  end
338
413
 
414
+ cert_item["cert_id"] = cert_item["cert_id"] || bundle_id_signing_identity
415
+ cert_item["password"] = "goodcert1"
416
+ cert_item["cert_file"] = "#{cert_type_temp}.p12"
417
+ cert_item["cert_type"] = cert_type_temp
418
+ cert_item["cert_provisioning_group"] = cert_item["cert_provisioning_group"] || []
419
+
420
+
421
+
422
+
339
423
  cert_provisioning_group_item = {}
340
- provisioning_group_id = [provision_start_name, platform_type, bundle_id].join("_")
424
+ provisioning_group_id = [cert_type_temp, platform_type, bundle_id].join("_")
341
425
 
342
426
  provisioning_group_result = cert_item["cert_provisioning_group"].select { |x| x["provisioning_group_id"].eql?(provisioning_group_id)}.first
343
427
  if provisioning_group_result.nil?
@@ -361,6 +445,7 @@ module Pindo
361
445
  bundle_id_temp = provisioning_info['bundle_id']
362
446
  provisioning_id = [provision_start_name, bundle_id_temp].join("_")
363
447
  real_path = provisioning_info["profile_path"]
448
+
364
449
  extname = File.extname(real_path)
365
450
  cert_provisioning_group_item["provisioning_items"] << {
366
451
  "bundle_id" => bundle_id_temp,
@@ -145,7 +145,29 @@ module Pindo
145
145
  end
146
146
 
147
147
  def start_upload(app_info_obj:nil, ipa_file_upload:nil, description:nil)
148
+ if !ipa_file_upload.nil? && File.extname(ipa_file_upload).eql?(".app")
149
+ mac_app_path = ipa_file_upload
150
+ ipa_base_dir = File.dirname(ipa_file_upload)
151
+ ipa_base_name = File.basename(ipa_file_upload, File.extname(ipa_file_upload))
152
+ ipa_file_upload = File.join(ipa_base_dir, ipa_base_name + ".zip")
153
+ if File.exist?(ipa_file_upload)
154
+ FileUtils.rm_rf(ipa_file_upload)
155
+ end
156
+
157
+ current_dir = Dir.pwd
158
+ if File.exist?(ipa_base_dir)
159
+ Dir.chdir(ipa_base_dir)
160
+ base_name = File.basename(mac_app_path)
161
+ command = "zip -qry \"#{ipa_file_upload}\" \"#{base_name}\""
162
+ puts command
163
+ system command
164
+ Dir.chdir(current_dir)
165
+ end
166
+ end
148
167
 
168
+ unless !ipa_file_upload.nil? && File.exist?(ipa_file_upload)
169
+ return
170
+ end
149
171
  args_ipa_file_dir = File.expand_path(File::dirname(ipa_file_upload))
150
172
  ipa_file_upload=File.join(args_ipa_file_dir, File.basename(ipa_file_upload))
151
173
  current_project_dir = Dir.pwd
@@ -203,7 +225,7 @@ module Pindo
203
225
  # aws_client = AWSS3Client.new
204
226
  aws_client = PgyerUploadClient.new
205
227
  upload_res = aws_client.upload_file(binary_file:ipa_file_upload)
206
-
228
+ puts upload_res
207
229
  attach_key_url = nil
208
230
  attachFileUrls = []
209
231
 
data/lib/pindo/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Pindo
2
2
 
3
- VERSION = "4.8.5"
3
+ VERSION = "4.8.7"
4
4
 
5
5
  class VersionCheck
6
6
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pindo
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.8.5
4
+ version: 4.8.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - wade
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-11-24 00:00:00.000000000 Z
11
+ date: 2024-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: claide