cocoapods-flutter-dt 0.2.6 → 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: f4f441456f0ceed7cd009d900e7632d4fb7ab1e00ab96f332889f4b892f34643
4
- data.tar.gz: e4110bb5ed9e4b86c00619409624d5eb1af1107517576a1c6bf93cd3e1a21183
3
+ metadata.gz: 51c1e6b26f94766910cca087a1697b87106b48e2cc13474960262b6a90c1112e
4
+ data.tar.gz: 82b73cbf5750b86d629d881b049db9969662f1715f0581ac4c4c6ca81676620e
5
5
  SHA512:
6
- metadata.gz: 911ec5af72653faa562f8da3e84fe425dc93fb0c3e3f9ebca7ff66ede5dd386f20e1a65372425db3363cc342b1e8073651b17338aad4635a32e28c89f559663d
7
- data.tar.gz: 66194aac9fb054042c13037aca0450bf903fc4e3b92486f2853d91b4f825f2719d7bbe2436dc50469234b5df83ded1594b7e0ba38fe5d3e91dd430236216d153
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,6 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ['lib']
20
20
 
21
21
  spec.add_dependency 'parallel'
22
+ spec.add_dependency 'plist'
22
23
  spec.add_dependency 'cocoapods', '~> 1.11.2'
23
24
  spec.add_dependency 'rubyzip', '>= 1.0.0'
24
25
  spec.add_dependency 'rest-client'
@@ -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.6"
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.6
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,6 +24,20 @@ 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
@@ -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