podsorz 0.0.2 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +16 -13
  3. data/lib/podsorz.rb +12 -2
  4. data/lib/podsorz/command/binary.rb +150 -0
  5. data/lib/podsorz/command/commit.rb +2 -2
  6. data/lib/podsorz/command/install.rb +9 -3
  7. data/lib/podsorz/command/publish.rb +7 -3
  8. data/lib/podsorz/command/setup.rb +1 -1
  9. data/lib/podsorz/command/switch.rb +2 -2
  10. data/lib/podsorz/command/sync.rb +2 -2
  11. data/lib/podsorz/core/Binary/binary_builder.rb +312 -0
  12. data/lib/podsorz/core/Binary/binary_manager.rb +173 -0
  13. data/lib/podsorz/core/Binary/binary_repo.rb +178 -0
  14. data/lib/podsorz/core/Binary/binary_server.rb +21 -0
  15. data/lib/podsorz/core/Config/orz_config_templet.rb +31 -0
  16. data/lib/podsorz/core/{orz_env_detector.rb → Config/orz_env_detector.rb} +1 -1
  17. data/lib/podsorz/core/{pod_orzconfig_parse.rb → Config/pod_orzconfig_parse.rb} +15 -1
  18. data/lib/podsorz/core/{podfile_io.rb → PodFile/podfile_io.rb} +143 -4
  19. data/lib/podsorz/core/{podfile_model.rb → PodFile/podfile_model.rb} +26 -1
  20. data/lib/podsorz/core/{pods_detector.rb → PodsOrz/pods_detector.rb} +1 -1
  21. data/lib/podsorz/core/{pods_git_manager.rb → PodsOrz/pods_git_manager.rb} +22 -12
  22. data/lib/podsorz/core/{pods_git_operator.rb → PodsOrz/pods_git_operator.rb} +134 -37
  23. data/lib/podsorz/core/{pods_repo.rb → PodsOrz/pods_repo.rb} +44 -11
  24. data/lib/podsorz/core/{pods_version.rb → PodsOrz/pods_version.rb} +4 -1
  25. data/lib/podsorz/core/Specs/podspec_model.rb +45 -0
  26. data/lib/podsorz/util/git_operator.rb +47 -0
  27. data/lib/podsorz/version.rb +1 -1
  28. data/podsorz.gemspec +11 -1
  29. metadata +35 -15
  30. data/Note +0 -3
  31. data/lib/podsorz/core/orz_config_templet.rb +0 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c960d70973147909a6a1898da3101b1655a2a08426a90ae9c39cfbb7a838ffcd
4
- data.tar.gz: fa464fe262693347b34eef283f83200571376124b60039c69ded9f688daf6575
3
+ metadata.gz: 5a44111361a02ff1c1a71d7085d25bc8ac4ae3835085913ac796c09a86cda8f9
4
+ data.tar.gz: e130cd226bdb7072e8db2ee84ca2fad1a09d0d5cbb6b56a7b23e5ed2c206e190
5
5
  SHA512:
6
- metadata.gz: 979c4ee2d0dbf7d788aa5a9cab14633850c0c7d36ce7297356f2919aa5fc620ce578b995d25cce96d28453b828f381271fadc0f6b1d993624a088d7520316ef9
7
- data.tar.gz: 649d4d2148002e5cdcb7140ee9553946f50f9747adf7d8e5da9ac79845ed8ea973785c679b2afe5a9b93b6e97b78fecc7320c26d4d5b208d6a8ff28d17a597a8
6
+ metadata.gz: 021efcba84b814774fb105bb019d81053ffbaa727f469ca1c679a55f2ee65a1749ebc4aa15a9c684292899a2ab6930543812b0c825a9ee440b0cc5a2cf2381e3
7
+ data.tar.gz: b936d7f1b824146c954767ffd987127ebf09d474e127dae7b9f16e16cf494b959bd1003855c73997d5c5252b11665e25e7bfc2be32175a6b4d62505cc27a589d
data/Gemfile.lock CHANGED
@@ -1,16 +1,17 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- podsorz (0.0.2)
4
+ podsorz (0.0.5)
5
5
  cocoapods
6
+ cocoapods-packager
6
7
  colorize
7
8
  gli (~> 2.16)
8
9
 
9
10
  GEM
10
11
  remote: https://rubygems.org/
11
12
  specs:
12
- CFPropertyList (3.0.2)
13
- activesupport (5.2.4.4)
13
+ CFPropertyList (3.0.3)
14
+ activesupport (5.2.4.5)
14
15
  concurrent-ruby (~> 1.0, >= 1.0.2)
15
16
  i18n (>= 0.7, < 2)
16
17
  minitest (~> 5.1)
@@ -22,10 +23,10 @@ GEM
22
23
  json (>= 1.5.1)
23
24
  atomos (0.1.3)
24
25
  claide (1.0.3)
25
- cocoapods (1.10.0)
26
+ cocoapods (1.10.1)
26
27
  addressable (~> 2.6)
27
28
  claide (>= 1.0.2, < 2.0)
28
- cocoapods-core (= 1.10.0)
29
+ cocoapods-core (= 1.10.1)
29
30
  cocoapods-deintegrate (>= 1.0.3, < 2.0)
30
31
  cocoapods-downloader (>= 1.4.0, < 2.0)
31
32
  cocoapods-plugins (>= 1.0.0, < 2.0)
@@ -40,7 +41,7 @@ GEM
40
41
  nap (~> 1.0)
41
42
  ruby-macho (~> 1.4)
42
43
  xcodeproj (>= 1.19.0, < 2.0)
43
- cocoapods-core (1.10.0)
44
+ cocoapods-core (1.10.1)
44
45
  activesupport (> 5.0, < 6)
45
46
  addressable (~> 2.6)
46
47
  algoliasearch (~> 1.0)
@@ -52,6 +53,8 @@ GEM
52
53
  typhoeus (~> 1.0)
53
54
  cocoapods-deintegrate (1.0.4)
54
55
  cocoapods-downloader (1.4.0)
56
+ cocoapods-packager (1.5.0)
57
+ cocoapods (>= 1.7.3, < 2.0)
55
58
  cocoapods-plugins (1.0.0)
56
59
  nap
57
60
  cocoapods-search (1.0.0)
@@ -61,20 +64,20 @@ GEM
61
64
  cocoapods-try (1.2.0)
62
65
  colored2 (3.1.2)
63
66
  colorize (0.8.1)
64
- concurrent-ruby (1.1.7)
67
+ concurrent-ruby (1.1.8)
65
68
  escape (0.0.4)
66
69
  ethon (0.12.0)
67
70
  ffi (>= 1.3.0)
68
- ffi (1.13.1)
71
+ ffi (1.14.2)
69
72
  fourflusher (2.3.1)
70
73
  fuzzy_match (2.0.4)
71
74
  gh_inspector (1.1.3)
72
- gli (2.19.2)
75
+ gli (2.20.0)
73
76
  httpclient (2.8.3)
74
- i18n (1.8.5)
77
+ i18n (1.8.9)
75
78
  concurrent-ruby (~> 1.0)
76
- json (2.3.1)
77
- minitest (5.14.2)
79
+ json (2.5.1)
80
+ minitest (5.14.4)
78
81
  molinillo (0.6.6)
79
82
  nanaimo (0.3.0)
80
83
  nap (1.1.0)
@@ -84,7 +87,7 @@ GEM
84
87
  thread_safe (0.3.6)
85
88
  typhoeus (1.4.0)
86
89
  ethon (>= 0.9.0)
87
- tzinfo (1.2.8)
90
+ tzinfo (1.2.9)
88
91
  thread_safe (~> 0.1)
89
92
  xcodeproj (1.19.0)
90
93
  CFPropertyList (>= 2.3.3, < 4.0)
data/lib/podsorz.rb CHANGED
@@ -5,15 +5,24 @@ require "podsorz/command/setup"
5
5
  require "podsorz/command/switch"
6
6
  require "podsorz/command/commit"
7
7
  require "podsorz/command/publish"
8
- require "podsorz/command/install"
9
8
  require "podsorz/command/sync"
9
+ require "podsorz/command/binary"
10
+ require "podsorz/command/install"
10
11
 
11
12
  require 'gli'
12
13
 
13
14
  include GLI::App
14
15
 
15
16
  module PodsOrz
16
- program_desc %{iOS application modulize into pods, improvement for develop modules. CMD: git-flow, auto publish code, auto push repo, auto rewrite podfile}
17
+ program_desc %{iOS application modulize into pods, improvement for develop modules.
18
+ CMD:
19
+ 1.git-flow
20
+ 2.auto publish code
21
+ 3.auto push repo
22
+ 4.auto rewrite podfile
23
+ 5.sync other branch commit
24
+ 6.binary static libary
25
+ }
17
26
 
18
27
  current_exec_path = Dir.pwd()
19
28
 
@@ -30,6 +39,7 @@ module PodsOrz
30
39
  publish_command()
31
40
  install_command()
32
41
  sync_command()
42
+ binary_command()
33
43
 
34
44
  desc "Show podsorz version"
35
45
  command :version do |version|
@@ -0,0 +1,150 @@
1
+ require "podsorz/core/PodsOrz/pods_repo"
2
+ require "podsorz/core/Binary/binary_manager"
3
+ require "podsorz/core/PodsOrz/pods_git_manager"
4
+
5
+
6
+ module PodsOrz
7
+ def self.binary_command
8
+ desc "Binary command, static library related command"
9
+ command :binary do |binary|
10
+ binary.desc "package pods(which in PodsOrzConfig) into static libraries"
11
+ binary.command :package do |package|
12
+ package.action do |global_options,options,args|
13
+ dir_path = global_options[:path]
14
+ prepare_work(dir_path)
15
+
16
+ git_manager = PodsOrz::PodsGitManager.new(dir_path)
17
+ result_hash = filter_binary_pods_list(git_manager, :package)
18
+ package_list = result_hash[:package]
19
+
20
+ binary_manager = PodsOrz::BinaryManager.new(dir_path)
21
+ binary_manager.package(package_list)
22
+ end
23
+
24
+ end
25
+
26
+
27
+
28
+ binary.desc "show whether remote exist static libraries on current version"
29
+ binary.command :show do |show|
30
+ show.action do |global_options,options,args|
31
+ dir_path = global_options[:path]
32
+ prepare_work(dir_path)
33
+
34
+ git_manager = PodsOrz::PodsGitManager.new(dir_path)
35
+ filter_binary_pods_list(git_manager, :show)
36
+ end
37
+
38
+ end
39
+
40
+
41
+ binary.desc "publish binary repo"
42
+ binary.command :publish do |publish|
43
+ publish.action do |global_options,options,args|
44
+ dir_path = global_options[:path]
45
+ prepare_work(dir_path)
46
+
47
+ git_manager = PodsOrz::PodsGitManager.new(dir_path)
48
+ result_hash = filter_binary_pods_list(git_manager, :package)
49
+ package_list = result_hash[:package]
50
+
51
+ binary_manager = PodsOrz::BinaryManager.new(dir_path)
52
+ binary_manager.publish(package_list)
53
+ end
54
+ end
55
+
56
+
57
+ binary.default_command :show
58
+ end
59
+ end
60
+
61
+ def self.prepare_work(dir_path)
62
+ pods_repo = PodsOrz::PodsRepo.new()
63
+ pods_repo.check_repo_exist()
64
+ end
65
+
66
+
67
+ def self.filter_binary_pods_list(git_manager, cmd_type)
68
+ result_hash = {
69
+ :binary => [],
70
+ :package => []
71
+ }
72
+
73
+ #1.获取静态库加载配置表
74
+ is_all_binary = git_manager.orzconfig_parse.is_all_binary
75
+
76
+ origin_binary_list = []
77
+
78
+ unless cmd_type == :show
79
+ if is_all_binary
80
+ totoal_model_list = git_manager.podfile_io.filter_binary_pod_models()
81
+ totoal_model_list.each do |model|
82
+ origin_binary_list << model.name.to_s
83
+ end
84
+ else
85
+ origin_binary_list = git_manager.orzconfig_parse.static_lib_list if cmd_type == :binary
86
+ origin_binary_list = git_manager.orzconfig_parse.will_package_list if cmd_type == :package
87
+ end
88
+
89
+ else
90
+ totoal_model_list = git_manager.podfile_io.total_pod_models
91
+ totoal_model_list.each do |model|
92
+ origin_binary_list << model.name.to_s
93
+ end
94
+ end
95
+
96
+
97
+ return result_hash if origin_binary_list.empty?
98
+
99
+
100
+ empty_binary_list = []
101
+ exist_binary_list = []
102
+
103
+ has_binary_list = []
104
+ can_package_list = []
105
+
106
+ #2.查询Podfile_orz是否为已发版本状态
107
+ binary_repo = PodsOrz::BinaryRepo.new()
108
+ binary_repo.check_binary_repo_exist()
109
+
110
+ origin_binary_list.each do |pod|
111
+ pod_version = git_manager.podfile_io.get_podfile_pod_version(pod)
112
+
113
+ if pod_version.empty?
114
+ branch = git_manager.podfile_io.get_podfile_pod_branch(pod)
115
+ unless branch.empty?
116
+ empty_binary_list << "#{pod} no source-code version, :branch => #{branch}"
117
+ else
118
+ empty_binary_list << "#{pod} no source-code version, :branch => 'master'"
119
+ end
120
+
121
+ next
122
+ end
123
+
124
+ has_remote = binary_repo.check_binary_pod_exist(pod, pod_version)
125
+ unless has_remote
126
+ empty_binary_list << "#{pod} no binary version:(#{pod_version})"
127
+ else
128
+ exist_binary_list << "#{pod}:(#{pod_version})"
129
+ has_binary_list << pod
130
+ end
131
+
132
+ if !pod_version.empty? && !has_remote
133
+ can_package_list << pod
134
+ end
135
+ end
136
+
137
+ Logger.highlight("[cmd:#{cmd_type}] Exist static library pods : \n #{exist_binary_list.inspect}")
138
+ Logger.separator
139
+ Logger.warning("[cmd:#{cmd_type}] Not exist static library pods: \n #{empty_binary_list.inspect}")
140
+
141
+
142
+ result_hash[:binary] = has_binary_list
143
+ result_hash[:package] = can_package_list
144
+
145
+
146
+ result_hash
147
+
148
+ end
149
+
150
+ end
@@ -1,5 +1,5 @@
1
- require "podsorz/core/pods_detector"
2
- require "podsorz/core/pods_git_manager"
1
+ require "podsorz/core/PodsOrz/pods_detector"
2
+ require "podsorz/core/PodsOrz/pods_git_manager"
3
3
 
4
4
  module PodsOrz
5
5
  def self.commit_command
@@ -1,5 +1,6 @@
1
- require "podsorz/core/pods_detector"
2
- require "podsorz/core/pods_git_manager"
1
+ require "podsorz/core/PodsOrz/pods_detector"
2
+ require "podsorz/core/PodsOrz/pods_git_manager"
3
+ require "podsorz/command/binary"
3
4
 
4
5
  module PodsOrz
5
6
  def self.install_command
@@ -16,8 +17,13 @@ module PodsOrz
16
17
  is_same = git_manager.ensure_pods_branch()
17
18
  exit() unless is_same
18
19
 
19
- git_manager.install_pod(dir_path)
20
+ #获取binary 列表
21
+ list_hash = PodsOrz.filter_binary_pods_list(git_manager, :binary)
22
+
23
+ git_manager.install_pod(dir_path, list_hash[:binary])
20
24
  end
21
25
  end
22
26
  end
27
+
28
+
23
29
  end
@@ -1,5 +1,5 @@
1
- require "podsorz/core/pods_detector"
2
- require "podsorz/core/pods_git_manager"
1
+ require "podsorz/core/PodsOrz/pods_detector"
2
+ require "podsorz/core/PodsOrz/pods_git_manager"
3
3
  require "podsorz/util/logger"
4
4
 
5
5
  module PodsOrz
@@ -17,6 +17,9 @@ module PodsOrz
17
17
  8.更改远端 Podfile_orz.rb, 同步对应 pod 到最新的 version\n
18
18
  }
19
19
  command :publish do |publish|
20
+ publish.switch :swift, :negatable => false, :desc => "Publish Swift Pod"
21
+ publish.example "podsorz publish --swift", desc:"Single Publish Action,Publish Only One ’Swift‘ Pod"
22
+
20
23
  publish.action do |global_options, options, args|
21
24
  dir_path = global_options[:path]
22
25
  detector = PodsOrz::PodsDetector.new(dir_path)
@@ -33,7 +36,8 @@ module PodsOrz
33
36
  exit()
34
37
  end
35
38
 
36
- git_manager.start_repo_publish
39
+ is_swift = options[:swift]
40
+ git_manager.start_repo_publish(is_swift)
37
41
  end
38
42
  end
39
43
  end
@@ -1,4 +1,4 @@
1
- require "podsorz/core/orz_env_detector"
1
+ require "podsorz/core/Config/orz_env_detector"
2
2
 
3
3
 
4
4
  module PodsOrz
@@ -1,5 +1,5 @@
1
- require "podsorz/core/pods_detector"
2
- require "podsorz/core/pods_git_manager"
1
+ require "podsorz/core/PodsOrz/pods_detector"
2
+ require "podsorz/core/PodsOrz/pods_git_manager"
3
3
 
4
4
  module PodsOrz
5
5
  def self.switch_command
@@ -1,5 +1,5 @@
1
- require "podsorz/core/pods_detector"
2
- require "podsorz/core/pods_git_manager"
1
+ require "podsorz/core/PodsOrz/pods_detector"
2
+ require "podsorz/core/PodsOrz/pods_git_manager"
3
3
 
4
4
  module PodsOrz
5
5
  def self.sync_command
@@ -0,0 +1,312 @@
1
+ require "podsorz/util/logger"
2
+ require "podsorz/core/PodFile/podfile_io"
3
+ require "podsorz/core/Specs/podspec_model"
4
+ require "podsorz/util/logger"
5
+ require "open3"
6
+
7
+ module PodsOrz
8
+ class BinaryBuilder
9
+ attr_accessor :main_path, :kx_binary_path, :podfile_io, :pod_repo, :http_host
10
+
11
+ def initialize(main_path, podfile_io)
12
+ @main_path = main_path
13
+ @kx_binary_path = File.expand_path("../kx_binary", main_path)
14
+
15
+ @podfile_io = podfile_io
16
+ @pod_repo = PodsOrz::PodsRepo.new()
17
+
18
+ @http_host = "http://192.168.6.23:8080"
19
+ end
20
+
21
+ def start_package_pod(pod)
22
+ is_package_success = true
23
+
24
+ #1.创建kx_binary
25
+ detect_kx_binary()
26
+
27
+ #2.创建Pod文件夹
28
+ detect_pod_directory(pod)
29
+
30
+ #3.创建version文件夹
31
+ pod_version = @podfile_io.get_podfile_pod_version(pod)
32
+ detect_version_directory(pod, pod_version)
33
+
34
+ #4.copy kuxiu_specs中对应的podspec
35
+ copy_podspec(pod)
36
+
37
+ #5.build static library
38
+ is_build_success = build_static_library(pod)
39
+ unless is_build_success
40
+ Logger.error("【#{pod}】build version:#{pod_version} static library failure!")
41
+ is_package_success = false
42
+ return is_package_success
43
+ end
44
+
45
+ #6.zip framework
46
+ is_zip_success = zip_framework(pod)
47
+ unless is_zip_success
48
+ Logger.error("【#{pod}】zip framework failure!")
49
+ is_package_success = false
50
+ return is_package_success
51
+ end
52
+
53
+ #7.mv framework
54
+ is_mv_success = mv_embedded_framework(pod)
55
+ unless is_mv_success
56
+ Logger.error("【#{pod} mv #{pod}.framework.zip failure!")
57
+ is_package_success = false
58
+ return is_package_success
59
+ end
60
+
61
+ #8.override .podspec
62
+ is_override_success = override_podspec(pod)
63
+ unless is_override_success
64
+ Logger.error("【#{pod} mv #{pod}.podspec failure!")
65
+ is_package_success = false
66
+ return is_package_success
67
+ end
68
+
69
+ #9.delete build files
70
+ delete_build_files(pod)
71
+
72
+
73
+ is_package_success
74
+ end
75
+
76
+ #detect
77
+ def detect_kx_binary()
78
+
79
+ result = check_directory()
80
+
81
+ if result
82
+ binary_result = File.directory?(@kx_binary_path)
83
+ unless binary_result
84
+ Logger.warning("kx_binary directory not exist, generate default 'kx_binary' directory")
85
+ Dir.mkdir(@kx_pods_path)
86
+ end
87
+ end
88
+ end
89
+
90
+ def check_directory()
91
+ is_directory = File.directory?(@main_path)
92
+ Logger.error("Detect failure, it is not a directory path: #{@main_path}") unless is_directory
93
+
94
+ is_directory
95
+ end
96
+
97
+ def detect_pod_directory(pod)
98
+ pod_path = File.expand_path("#{pod}", @kx_binary_path)
99
+ pod_result = File.directory?(pod_path)
100
+ unless pod_result
101
+ Logger.warning("#{pod_path} directory not exist, generate default '#{pod_path}' directory")
102
+ Dir.mkdir(pod_path)
103
+ end
104
+ end
105
+
106
+ def detect_version_directory(pod, pod_version)
107
+ pod_version_path = File.expand_path("#{pod}/#{pod_version}", @kx_binary_path)
108
+ pod_version_result = File.directory?(pod_version_path)
109
+ unless pod_version_result
110
+ Logger.warning("#{pod_version_path} directory not exist, generate default '#{pod_version_path}' directory")
111
+ Dir.mkdir(pod_version_path)
112
+ end
113
+
114
+ pod_version_path
115
+ end
116
+
117
+ #copy
118
+ def copy_podspec(pod)
119
+ command = Thread.new do
120
+ pod_version = @podfile_io.get_podfile_pod_version(pod)
121
+ source_podspec_dir = @pod_repo.directory_pod_version(pod, pod_version)
122
+ source_file_path = File.expand_path("#{pod}.podspec", source_podspec_dir)
123
+
124
+ dest_dir = detect_version_directory(pod, pod_version)
125
+ dest_file_path = File.expand_path("#{pod}.podspec", dest_dir)
126
+
127
+ `cp -f #{source_file_path} #{dest_file_path}`
128
+
129
+ Logger.highlight("Copy file Success.\n Source file path:#{source_file_path} \n dest_file_path:#{dest_file_path}")
130
+ end
131
+ command.join
132
+ end
133
+
134
+ def build_static_library(pod)
135
+ is_build_success = true
136
+ command = Thread.new do
137
+ pod_version = @podfile_io.get_podfile_pod_version(pod)
138
+
139
+ dest_dir = detect_version_directory(pod, pod_version)
140
+ dest_file_path = File.expand_path("#{pod}.podspec", dest_dir)
141
+
142
+ cmd_list = []
143
+ cmd_list << "cd #{dest_dir}"
144
+ cmd_list << "pod package #{pod}.podspec --exclude-deps --no-mangle --force --embedded --spec-sources=git@gitlab.91banban.com:ios_pods/Specs.git"
145
+
146
+ Open3.popen3(cmd_list.join(";")) do |stdin , stdout , stderr, wait_thr|
147
+ while line = stdout.gets
148
+ puts line
149
+ end
150
+ end
151
+ end
152
+ command.join
153
+
154
+ is_build_success
155
+ end
156
+
157
+ def zip_framework(pod)
158
+ is_zip_success = true
159
+
160
+ command = Thread.new do
161
+ pod_version = @podfile_io.get_podfile_pod_version(pod)
162
+
163
+ origin_spec_dir = detect_version_directory(pod, pod_version)
164
+ package_dir = File.expand_path("#{pod}-#{pod_version}", origin_spec_dir)
165
+ embedded_framework_dir = File.expand_path("ios/#{pod}.embeddedframework", package_dir)
166
+
167
+ cmd_list = []
168
+ cmd_list << "cd #{embedded_framework_dir}"
169
+ cmd_list << "zip -q -r -y -o #{pod}.framework.zip #{pod}.framework"
170
+
171
+ IO.popen(cmd_list.join(";")) do |io|
172
+ io_lines = io.readlines
173
+ io_lines.each do |line|
174
+ puts line
175
+ is_zip_success = false if line.include? "zip error"
176
+ end
177
+ io.close
178
+ end
179
+ end
180
+
181
+ command.join
182
+
183
+ is_zip_success
184
+ end
185
+
186
+ def mv_embedded_framework(pod)
187
+ is_mv_success = true
188
+
189
+ command = Thread.new do
190
+ pod_version = @podfile_io.get_podfile_pod_version(pod)
191
+
192
+ origin_spec_dir = detect_version_directory(pod, pod_version)
193
+ package_dir = File.expand_path("#{pod}-#{pod_version}", origin_spec_dir)
194
+ embedded_framework_dir = File.expand_path("ios/#{pod}.embeddedframework", package_dir)
195
+
196
+ cmd_list = []
197
+ cmd_list << "cd #{embedded_framework_dir}"
198
+ cmd_list << "mv -f #{pod}.framework.zip #{origin_spec_dir}"
199
+
200
+ IO.popen(cmd_list.join(";")) do |io|
201
+ io_lines = io.readlines
202
+ io_lines.each do |line|
203
+ puts line
204
+ is_mv_success = false if line.include? "mv:"
205
+ end
206
+ io.close
207
+ end
208
+ end
209
+ command.join
210
+
211
+ is_mv_success
212
+ end
213
+
214
+ def override_podspec(pod)
215
+ is_override_success = true
216
+
217
+ command = Thread.new do
218
+ pod_version = @podfile_io.get_podfile_pod_version(pod)
219
+
220
+ origin_spec_dir = detect_version_directory(pod, pod_version)
221
+ origin_spec_file_path = File.expand_path("#{pod}.podspec", origin_spec_dir)
222
+ origin_podspec_model = PodsOrz::PodspecModel.new(origin_spec_file_path)
223
+
224
+
225
+ package_dir = File.expand_path("#{pod}-#{pod_version}", origin_spec_dir)
226
+ static_pod_spec_path = File.expand_path("#{pod}.podspec", package_dir)
227
+
228
+ static_podspec_totoal_sentences = []
229
+ File.open(static_pod_spec_path, "r") {|io|
230
+ static_podspec_totoal_sentences = io.readlines
231
+ }
232
+
233
+ File.open(static_pod_spec_path, "w+") {|io|
234
+ static_podspec_totoal_sentences.each do |sentence|
235
+ sentence_content = sentence.strip.chomp.to_s
236
+
237
+ is_sentence_content_empty = sentence_content.empty?
238
+ is_sentence_content_size_zero = sentence_content.size.zero?
239
+
240
+ unless is_sentence_content_empty || is_sentence_content_size_zero
241
+ unless sentence_content.start_with?("#")
242
+ mt = /.*s.source = /.match(sentence)
243
+ unless mt.nil?
244
+ sentence = mt[0] + "{:http => \'#{http_host}/#{pod}/#{pod_version}/#{pod}.framework.zip\'}"
245
+ end
246
+
247
+ mt = /.*s.ios.vendored_framework = /.match(sentence)
248
+ #behind vendored_framework add extra lines
249
+ unless mt.nil?
250
+ sentence = mt[0] + "\'#{pod}.framework\'" + "\n"
251
+
252
+ #add Resource
253
+ if origin_podspec_model.have_resources
254
+ sentence += " " + "s.resources = \'#{pod}.framework/Versions/A/Resources/*.{png,bundle,xib}\'" + "\n\n"
255
+ end
256
+
257
+ #add dependency
258
+ origin_podspec_model.dependency_list.each do |d|
259
+ sentence += " " + "s.dependency " + "#{d}" + "\n"
260
+ end
261
+
262
+ sentence += "\n"
263
+
264
+ end
265
+
266
+ end
267
+ end
268
+
269
+ io.write(sentence.chomp + "\n")
270
+ end
271
+ }
272
+
273
+ cmd_list = []
274
+ cmd_list << "cd #{package_dir}"
275
+ cmd_list << "mv -f #{pod}.podspec #{origin_spec_dir}"
276
+
277
+ IO.popen(cmd_list.join(";")) do |io|
278
+ io_lines = io.readlines
279
+ io_lines.each do |line|
280
+ puts line
281
+ is_override_success = false if line.include? "mv:"
282
+ end
283
+ io.close
284
+ end
285
+ end
286
+ command.join
287
+
288
+ is_override_success
289
+ end
290
+
291
+ def delete_build_files(pod)
292
+ command = Thread.new do
293
+ pod_version = @podfile_io.get_podfile_pod_version(pod)
294
+
295
+ origin_spec_dir = detect_version_directory(pod, pod_version)
296
+ package_dir_name = "#{pod}-#{pod_version}"
297
+
298
+ cmd_list = []
299
+ cmd_list << "cd #{origin_spec_dir}"
300
+ cmd_list << "rm -f -r #{package_dir_name}"
301
+
302
+ IO.popen(cmd_list.join(";")) do |io|
303
+ io.close
304
+ end
305
+ end
306
+
307
+ command.join
308
+ end
309
+
310
+ #class end
311
+ end
312
+ end