cocoapods-flutter-dt 0.2.4 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7d6f48c8b2c30eed6c96640d6fca157ffcd7f3d296a4033d2c28dbc3499cd6b4
4
- data.tar.gz: 3fee21a26991ace46036335b93f4eb07866b55d241086c5923b1b5f96411a619
3
+ metadata.gz: 51c1e6b26f94766910cca087a1697b87106b48e2cc13474960262b6a90c1112e
4
+ data.tar.gz: 82b73cbf5750b86d629d881b049db9969662f1715f0581ac4c4c6ca81676620e
5
5
  SHA512:
6
- metadata.gz: e6465dd51a49d8d1f64efc656b88635fb235b2f451aadc5b7584ec6c08a42e4b112c902896ff832e7dba21ac821dd2c07f029c09079e7e6e690bdecea41033f7
7
- data.tar.gz: 05be1f94f4a991114fb87436b9724f1c318c0f046ce57dad8c5e2be0a33f8ddfdce849c4bdf3e4d1962df309d4cab62152cd67cd5d5661e70e787e2df93ffba8
6
+ metadata.gz: 431372086b26158d86be83052d27fa5d1caee2844e00b056662645a17cfc7f66a0fc2b7f207cd01b165a2295ca5ab3911e340d28d974126e447013e248514aeb
7
+ data.tar.gz: cf5b96dad0f26cd345dfe6a05eaf1db9bebb72d2853d54d2deef3bf49e1a28d141de2618a27420285713e4980d9c045df190e9ab485f429d6c74d40949c35aab
data/README.md CHANGED
@@ -35,13 +35,13 @@ Here is simple [binary server](https://github.com/NicolasKim/binary_server.git)
35
35
 
36
36
  ```shell script
37
37
  $ cd flutter project
38
- $ pod flutter archive package_name 0.0.1 --repo=cocoapods --wrapper=flutterw --sources=https://github.com/private_spec_repo.git,https://github.com/Cocoapods/Specs.git
38
+ $ pod flutter foryou package_name 0.0.1 --repo=cocoapods --wrapper=flutterw --sources=https://github.com/private_spec_repo.git,https://github.com/Cocoapods/Specs.git
39
39
  ```
40
40
 
41
41
 
42
42
  There is more options
43
43
  ```shell script
44
- $ pod flutter archive --help
44
+ $ pod flutter foryou --help
45
45
  --repo podspec repo
46
46
  --sources podspec sources
47
47
  --upgrade pub upgrade
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.version = CocoapodsFlutter::VERSION
9
9
  spec.authors = ['Dreamtracer']
10
10
  spec.email = ['jinqiucheng1006@live.cn']
11
- spec.description = %q{Flutter archive tool}
12
- spec.summary = %q{Simple way to archive and use}
11
+ spec.description = %q{Flutter foryou tool}
12
+ spec.summary = %q{Simple way to foryou and use}
13
13
  spec.homepage = 'https://github.com/NicolasKim/cocoapods-flutter-dt.git'
14
14
  spec.license = 'MIT'
15
15
 
@@ -19,10 +19,11 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ['lib']
20
20
 
21
21
  spec.add_dependency 'parallel'
22
- spec.add_dependency 'cocoapods', '~> 1.4'
22
+ spec.add_dependency 'plist'
23
+ spec.add_dependency 'cocoapods', '~> 1.11.2'
23
24
  spec.add_dependency 'rubyzip', '>= 1.0.0'
24
25
  spec.add_dependency 'rest-client'
25
- spec.add_dependency 'molinillo', '~> 0.6.6'
26
+ spec.add_dependency 'molinillo'
26
27
  spec.add_development_dependency 'bundler', '~> 1.3'
27
28
  spec.add_development_dependency 'rake'
28
29
  end
@@ -4,7 +4,7 @@ module Pod
4
4
  class Command
5
5
  class Flutter < Command
6
6
  class Archive < Flutter
7
- self.summary = 'archive flutter'
7
+ self.summary = 'foryou flutter'
8
8
  self.description = <<-DESC
9
9
  发布二进制组件 / 源码组件
10
10
  DESC
@@ -0,0 +1,43 @@
1
+ require 'cocoapods-flutter/native/archive/archive'
2
+
3
+ module Pod
4
+ class Command
5
+ class Flutter < Command
6
+ class DSYM < Flutter
7
+ self.summary = 'foryou flutter'
8
+ self.description = <<-DESC
9
+ Upload dSYM file to server
10
+ DESC
11
+
12
+ self.arguments = [
13
+ # CLAide::Argument.new([''], false)
14
+ ]
15
+
16
+ def self.options
17
+ [
18
+ ['--version', 'FlutterSDK version'],
19
+ ['--hash', 'FlutterEngine hash see Flutter.frameworks info.plist FlutterEngine value'],
20
+ ['--dsym', 'zip file path, you should download dSYM manually from "https://storage.cloud.google.com/flutter_infra_release/flutter/{engine hash}/ios-release/Flutter.dSYM.zip"']
21
+ ]#.concat(Pod::Command::Repo::Push.options).concat(super).uniq
22
+ end
23
+
24
+ def initialize(argv)
25
+
26
+ @flutter_version = argv.option('version', '1.22.6')
27
+ @hash = argv.option('hash')
28
+ @dsym = argv.option('dsym')
29
+ @working_dir = Dir.pwd
30
+
31
+ super
32
+ end
33
+
34
+ def run
35
+ remote = Remote.new()
36
+ remote.upload_flutter_sdk_dsym @flutter_version, @hash, @dsym
37
+ Pod::UserInterface.info "Upload success"
38
+ end
39
+
40
+ end
41
+ end
42
+ end
43
+ end
@@ -1,4 +1,5 @@
1
1
  require 'cocoapods-flutter/command/flutter/archive'
2
+ require 'cocoapods-flutter/command/flutter/dsym'
2
3
 
3
4
  module Pod
4
5
  class Command
@@ -1,3 +1,3 @@
1
1
  module CocoapodsFlutter
2
- VERSION = "0.2.4"
2
+ VERSION = "0.2.7"
3
3
  end
@@ -4,6 +4,7 @@ require 'zip'
4
4
  require 'cocoapods-flutter/native/archive/zip_tool'
5
5
  require 'cocoapods-flutter/native/archive/remote'
6
6
  require 'molinillo'
7
+ require 'plist'
7
8
 
8
9
  class Archiver
9
10
 
@@ -47,6 +48,11 @@ class Archiver
47
48
  end
48
49
 
49
50
  def archive
51
+ # open('http://127.0.0.1:8080/frameworks/download/Flutter/1.22.6/release/file.zip') do |u|
52
+ # File.open('/Users/dreamtracer/Desktop/flutter.zip', "w+") do |file|
53
+ # file.write u.read.force_encoding("UTF-8")
54
+ # end
55
+ # end
50
56
 
51
57
  @pub_upgrade ? pub_upgrade : pub_get
52
58
  if local_podfile_exists?
@@ -299,9 +305,54 @@ class Archiver
299
305
  end
300
306
 
301
307
  sdk_file = zip_file_dir + "/Flutter.zip"
308
+ home_dir = Dir.home
309
+ cache_dir = home_dir + "/.cocoapods/.cache"
310
+ flutter_sdk_dsym_dir = cache_dir + "/flutter_sdk_dsym"
311
+ #创建dsym缓存文件
312
+ if Dir.exist?(flutter_sdk_dsym_dir) == false
313
+ Dir.mkdir flutter_sdk_dsym_dir
314
+ end
315
+
302
316
  Zip::File.open sdk_file, Zip::File::CREATE do |zipfile|
303
317
  file = File.join(product_dir, "Flutter.framework")
304
- zipfile.add_dir "Flutter.framework", file
318
+ zipfile.add_dir "Flutter/Flutter.framework", file
319
+ #读取Flutter.framework中的info.plist文件中的FlutterEngine的值
320
+ info_plist_path = File.join(file, "Info.plist")
321
+ info_plist = Plist.parse_xml(info_plist_path)
322
+ engine_hash = info_plist["FlutterEngine"]
323
+ dsym_dir = File.join(flutter_sdk_dsym_dir, engine_hash)
324
+ dsym_zip_file_path = File.join(dsym_dir, 'Flutter.framework.dSYM.zip')
325
+ dsym_file_path = File.join(dsym_dir, 'Flutter.framework.dSYM')
326
+ #检查dsym文件缓存
327
+ Pod::UserInterface.info "Checking Flutter.framework.dSYM at #{dsym_dir}"
328
+ if Dir.exist?(dsym_dir) == false
329
+ Pod::UserInterface.info "Flutter.framework.dSYM not found at #{dsym_dir}"
330
+ Dir.mkdir(dsym_dir) unless Dir.exist?(dsym_dir)
331
+ #下载dsym
332
+ remote = Remote.new()
333
+ remote.download_flutter_sdk_dsym @flutter_version, engine_hash, dsym_zip_file_path
334
+ Pod::UserInterface.info "Flutter.framework.dSYM download success"
335
+ Dir.mkdir(dsym_file_path) unless File.exist?(dsym_file_path)
336
+
337
+ Pod::UserInterface.info "Start unzip #{dsym_zip_file_path}"
338
+ Zip::File.open(dsym_zip_file_path) do |zif_file|
339
+ zif_file.each do |entry|
340
+ # 通过下句打印可知,entyr是Zip::ZipEntry的对象
341
+ # puts entry.class
342
+ # 利用File.join构建文件存放的路径,路径为存放目录加上压缩文件的相对路径
343
+ entry.extract(File.join(dsym_dir, entry::name))
344
+ end
345
+ end
346
+ #重命名:如果文件名为Flutter.dSYM,则将Flutter.dSYM重命名为Flutter.framework.dSYM,因为cocoapods只识别Flutter.framework.dSYM
347
+ File.rename( File.join( dsym_dir, 'Flutter.dSYM'), dsym_file_path ) if File.exist? File.join( dsym_dir, 'Flutter.dSYM')
348
+
349
+ Pod::UserInterface.info "Unzip #{dsym_zip_file_path} success"
350
+
351
+ end
352
+
353
+ #向zip中添加dsym文件
354
+ Pod::UserInterface.info "Add Flutter.framework.dSYM to #{sdk_file}"
355
+ zipfile.add_dir "Flutter/Flutter.framework.dSYM", dsym_file_path
305
356
  end
306
357
  [zip_file, sdk_file]
307
358
  end
@@ -322,7 +373,7 @@ end
322
373
  def download(url, dest)
323
374
  open(url) do |u|
324
375
  File.open(dest, "w+") do |file|
325
- file.write u.read
376
+ file.write u.read.force_encoding("UTF-8")
326
377
  end
327
378
  end
328
379
  end
@@ -338,8 +389,8 @@ if Dir.exist?(sdk_dir) == false
338
389
  Dir.mkdir sdk_dir
339
390
  download sdk_url, sdk_file
340
391
  end
341
- if File.exist? "Flutter.framework"
342
- `rm -rf Flutter.framework`
392
+ if Dir.exist? "Flutter"
393
+ `rm -rf Flutter`
343
394
  end
344
395
  `unzip \#{sdk_file} -d \#{Dir.pwd}`
345
396
  CODE
@@ -370,7 +421,6 @@ end
370
421
  if result
371
422
  Pod::UserInterface.info "Flutter_#{@flutter_version}_#{mode.downcase} was found, skip upload"
372
423
  end
373
-
374
424
  end
375
425
 
376
426
  def ignore_dependency?(name)
@@ -414,7 +464,7 @@ end
414
464
  s.prepare_command = "ruby download_sdk.rb #{sdk_download_url}"
415
465
  s.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64 x86_64' }
416
466
  s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64 x86_64' }
417
- vendored_frameworks = ["App.framework", "Flutter.framework", "FlutterPluginRegistrant.framework"]
467
+ vendored_frameworks = ["App.framework", "Flutter/Flutter.framework", "FlutterPluginRegistrant.framework"]
418
468
  @plugins.each do |plugin|
419
469
  vendored_frameworks.append "#{plugin.name}.framework"
420
470
  end
@@ -430,7 +480,7 @@ end
430
480
  File.open spec_file, "w+" do |file|
431
481
  file.write spec.to_pretty_json
432
482
  end
433
-
483
+ Pod::UserInterface.info "podspec file path #{spec_file}"
434
484
  Dir.chdir temp_dir do |dir|
435
485
  Pod::Command::Repo::Push.run([@pod_repo, '--skip-import-validation', '--verbose', '--allow-warnings', "--sources=#{@sources.join(',')}"])
436
486
  File.delete spec_file
@@ -1,4 +1,5 @@
1
1
  require 'rest-client'
2
+ require 'open-uri'
2
3
 
3
4
  class Remote
4
5
 
@@ -42,4 +43,31 @@ class Remote
42
43
  @base_url + json["data"]['download_url']
43
44
  end
44
45
 
46
+ def download_flutter_sdk_dsym(version, hash, des_path)
47
+ uri = URI.join @base_url, "/dsyms/download/flutter/#{version}/#{hash}/file.zip"
48
+ Pod::UserInterface.info "Start download Flutter.framework.dSYM from #{uri.to_s}"
49
+ data = RestClient::Request.execute(:method => :get, :url => uri.to_s, :timeout => 3600, :raw_response => true)
50
+ file = File.new(des_path, 'w+')
51
+ file.write data
52
+ file.close
53
+ end
54
+
55
+ def upload_flutter_sdk_dsym(version, hash, file_path)
56
+ uri = URI.join @base_url, "/dsyms"
57
+ Pod::UserInterface.info "Start upload '#{file_path}' to #{uri.to_s}"
58
+ req = RestClient::Request.new(
59
+ :method => :post,
60
+ :url => uri.to_s,
61
+ :timeout => 3600,
62
+ :payload => {
63
+ :multipart => true,
64
+ :file => File.new(file_path, 'rb'),
65
+ :name => 'flutter',
66
+ :version => version,
67
+ :tag => hash
68
+ }
69
+ )
70
+ req.execute
71
+ end
72
+
45
73
  end
@@ -67,6 +67,7 @@ module Pod
67
67
  end
68
68
  return
69
69
  end
70
+
70
71
  pod "#{flutter_project_name}_#{flutter_project_mode}", flutter_project_version
71
72
 
72
73
  end
@@ -5,4 +5,5 @@ require 'cocoapods-flutter/native/specification/consumer'
5
5
  require 'cocoapods-flutter/native/podfile'
6
6
  require 'cocoapods-flutter/native/pod_source_preparer'
7
7
  require 'cocoapods-flutter/native/archive/archive'
8
+ require 'cocoapods-flutter/native/archive/remote'
8
9
  require 'cocoapods-flutter/native/archive/command_runner'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-flutter-dt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - "\bDreamtracer"
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-18 00:00:00.000000000 Z
11
+ date: 2022-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parallel
@@ -24,20 +24,34 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: plist
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: cocoapods
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: '1.4'
47
+ version: 1.11.2
34
48
  type: :runtime
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: '1.4'
54
+ version: 1.11.2
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rubyzip
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -70,16 +84,16 @@ dependencies:
70
84
  name: molinillo
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - "~>"
87
+ - - ">="
74
88
  - !ruby/object:Gem::Version
75
- version: 0.6.6
89
+ version: '0'
76
90
  type: :runtime
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - "~>"
94
+ - - ">="
81
95
  - !ruby/object:Gem::Version
82
- version: 0.6.6
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: bundler
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -108,7 +122,7 @@ dependencies:
108
122
  - - ">="
109
123
  - !ruby/object:Gem::Version
110
124
  version: '0'
111
- description: Flutter archive tool
125
+ description: Flutter foryou tool
112
126
  email:
113
127
  - jinqiucheng1006@live.cn
114
128
  executables: []
@@ -125,6 +139,7 @@ files:
125
139
  - lib/cocoapods-flutter/command.rb
126
140
  - lib/cocoapods-flutter/command/flutter.rb
127
141
  - lib/cocoapods-flutter/command/flutter/archive.rb
142
+ - lib/cocoapods-flutter/command/flutter/dsym.rb
128
143
  - lib/cocoapods-flutter/gem_version.rb
129
144
  - lib/cocoapods-flutter/native.rb
130
145
  - lib/cocoapods-flutter/native/archive/archive.rb
@@ -164,7 +179,7 @@ requirements: []
164
179
  rubygems_version: 3.0.6
165
180
  signing_key:
166
181
  specification_version: 4
167
- summary: Simple way to archive and use
182
+ summary: Simple way to foryou and use
168
183
  test_files:
169
184
  - spec/command/flutter_spec.rb
170
185
  - spec/spec_helper.rb