cocoapods-tj 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +1 -0
  4. data/lib/cocoapods-tj/command/bin/archive.rb +203 -0
  5. data/lib/cocoapods-tj/command/bin/auto.rb +189 -0
  6. data/lib/cocoapods-tj/command/bin/code.rb +198 -0
  7. data/lib/cocoapods-tj/command/bin/imy.rb +45 -0
  8. data/lib/cocoapods-tj/command/bin/init.rb +65 -0
  9. data/lib/cocoapods-tj/command/bin/initHotKey.rb +66 -0
  10. data/lib/cocoapods-tj/command/bin/install.rb +41 -0
  11. data/lib/cocoapods-tj/command/bin/lib/lint.rb +66 -0
  12. data/lib/cocoapods-tj/command/bin/local.rb +142 -0
  13. data/lib/cocoapods-tj/command/bin/repo/update.rb +42 -0
  14. data/lib/cocoapods-tj/command/bin/spec/create.rb +68 -0
  15. data/lib/cocoapods-tj/command/bin/spec/push.rb +114 -0
  16. data/lib/cocoapods-tj/command/bin/update.rb +144 -0
  17. data/lib/cocoapods-tj/command/bin.rb +42 -0
  18. data/lib/cocoapods-tj/command.rb +2 -0
  19. data/lib/cocoapods-tj/config/config.rb +129 -0
  20. data/lib/cocoapods-tj/config/config_asker.rb +49 -0
  21. data/lib/cocoapods-tj/config/config_builder.rb +201 -0
  22. data/lib/cocoapods-tj/config/config_hot_key.rb +102 -0
  23. data/lib/cocoapods-tj/config/config_hot_key_asker.rb +48 -0
  24. data/lib/cocoapods-tj/gem_version.rb +10 -0
  25. data/lib/cocoapods-tj/helpers/Info.plist +0 -0
  26. data/lib/cocoapods-tj/helpers/build_helper.rb +154 -0
  27. data/lib/cocoapods-tj/helpers/build_utils.rb +62 -0
  28. data/lib/cocoapods-tj/helpers/framework.rb +79 -0
  29. data/lib/cocoapods-tj/helpers/framework_builder.rb +391 -0
  30. data/lib/cocoapods-tj/helpers/library.rb +54 -0
  31. data/lib/cocoapods-tj/helpers/library_builder.rb +89 -0
  32. data/lib/cocoapods-tj/helpers/local/loca_llibrary.rb +57 -0
  33. data/lib/cocoapods-tj/helpers/local/local_build_helper.rb +177 -0
  34. data/lib/cocoapods-tj/helpers/local/local_framework.rb +85 -0
  35. data/lib/cocoapods-tj/helpers/local/local_framework_builder.rb +226 -0
  36. data/lib/cocoapods-tj/helpers/local/local_library_builder.rb +91 -0
  37. data/lib/cocoapods-tj/helpers/sources_helper.rb +32 -0
  38. data/lib/cocoapods-tj/helpers/spec_creator.rb +150 -0
  39. data/lib/cocoapods-tj/helpers/spec_files_helper.rb +73 -0
  40. data/lib/cocoapods-tj/helpers/spec_source_creator.rb +189 -0
  41. data/lib/cocoapods-tj/helpers/upload_helper.rb +81 -0
  42. data/lib/cocoapods-tj/helpers.rb +5 -0
  43. data/lib/cocoapods-tj/native/acknowledgements.rb +26 -0
  44. data/lib/cocoapods-tj/native/analyzer.rb +29 -0
  45. data/lib/cocoapods-tj/native/file_accessor.rb +20 -0
  46. data/lib/cocoapods-tj/native/installation_options.rb +21 -0
  47. data/lib/cocoapods-tj/native/installer.rb +106 -0
  48. data/lib/cocoapods-tj/native/linter.rb +26 -0
  49. data/lib/cocoapods-tj/native/path_source.rb +29 -0
  50. data/lib/cocoapods-tj/native/pod_source_installer.rb +18 -0
  51. data/lib/cocoapods-tj/native/pod_target_installer.rb +81 -0
  52. data/lib/cocoapods-tj/native/podfile.rb +91 -0
  53. data/lib/cocoapods-tj/native/podfile_env.rb +37 -0
  54. data/lib/cocoapods-tj/native/podfile_generator.rb +135 -0
  55. data/lib/cocoapods-tj/native/podspec_finder.rb +23 -0
  56. data/lib/cocoapods-tj/native/resolver.rb +202 -0
  57. data/lib/cocoapods-tj/native/sandbox_analyzer.rb +11 -0
  58. data/lib/cocoapods-tj/native/source.rb +35 -0
  59. data/lib/cocoapods-tj/native/sources_manager.rb +18 -0
  60. data/lib/cocoapods-tj/native/specification.rb +10 -0
  61. data/lib/cocoapods-tj/native/target_validator.rb +41 -0
  62. data/lib/cocoapods-tj/native/validator.rb +40 -0
  63. data/lib/cocoapods-tj/native.rb +23 -0
  64. data/lib/cocoapods-tj/source_provider_hook.rb +50 -0
  65. data/lib/cocoapods-tj.rb +2 -0
  66. data/lib/cocoapods_plugin.rb +3 -0
  67. data/spec/command/bin_spec.rb +12 -0
  68. data/spec/spec_helper.rb +50 -0
  69. metadata +182 -0
@@ -0,0 +1,48 @@
1
+ require 'yaml'
2
+ require 'cocoapods-tj/config/config_hot_key'
3
+
4
+ module CBin
5
+ class Config_Hot_Key
6
+ class Asker
7
+ def show_prompt
8
+ print ' > '.green
9
+ end
10
+
11
+ def ask_with_answer(question, pre_answer, selection)
12
+ print "\n#{question}\n"
13
+
14
+ print_selection_info = lambda {
15
+ print "可选值:[ #{selection.join(' / ')} ]\n" if selection
16
+ }
17
+ print_selection_info.call
18
+ print "旧值:#{pre_answer}\n" unless pre_answer.nil?
19
+
20
+ answer = ''
21
+ loop do
22
+ show_prompt
23
+ answer = STDIN.gets.chomp.strip
24
+
25
+ if answer == '' && !pre_answer.nil?
26
+ answer = pre_answer
27
+ print answer.yellow
28
+ print "\n"
29
+ end
30
+
31
+ next if answer.empty?
32
+ break if !selection || selection.include?(answer)
33
+
34
+ print_selection_info.call
35
+ end
36
+
37
+ answer
38
+ end
39
+
40
+ def wellcome_message
41
+
42
+ end
43
+
44
+ def done_message
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,10 @@
1
+
2
+ module CBin
3
+ VERSION = '1.0.0'
4
+ end
5
+
6
+ module Pod
7
+ def self.match_version?(*version)
8
+ Gem::Dependency.new('', *version).match?('', Pod::VERSION)
9
+ end
10
+ end
Binary file
@@ -0,0 +1,154 @@
1
+
2
+ require 'cocoapods-tj/native/podfile'
3
+ require 'cocoapods/command/gen'
4
+ require 'cocoapods/generate'
5
+ require 'cocoapods-tj/helpers/framework_builder'
6
+ require 'cocoapods-tj/helpers/library_builder'
7
+ require 'cocoapods-tj/config/config_builder'
8
+
9
+ module CBin
10
+ class Build
11
+ class Helper
12
+ include Pod
13
+ @@build_defines = ""
14
+ def initialize(spec,
15
+ platform,
16
+ framework_output,
17
+ zip,
18
+ rootSpec,
19
+ skip_archive = false,
20
+ build_model="Release")
21
+ @spec = spec
22
+ @platform = platform
23
+ @build_model = build_model
24
+ @rootSpec = rootSpec
25
+ @isRootSpec = rootSpec.name == spec.name
26
+ @skip_archive = skip_archive
27
+ @framework_output = framework_output
28
+ @zip = zip
29
+
30
+ @framework_path
31
+ end
32
+
33
+ def build
34
+ UI.section("Building static framework #{@spec}") do
35
+
36
+ build_static_framework
37
+ unless @skip_archive
38
+ unless CBin::Build::Utils.is_framework(@spec)
39
+ build_static_library
40
+ zip_static_library
41
+ else
42
+ zip_static_framework
43
+ end
44
+ end
45
+
46
+ end
47
+
48
+ end
49
+
50
+ def build_static_framework
51
+ source_dir = Dir.pwd
52
+ file_accessor = Sandbox::FileAccessor.new(Pathname.new('.').expand_path, @spec.consumer(@platform))
53
+ Dir.chdir(workspace_directory) do
54
+ builder = CBin::Framework::Builder.new(@spec, file_accessor, @platform, source_dir, @isRootSpec, @build_model )
55
+ @@build_defines = builder.build if @isRootSpec
56
+ begin
57
+ @framework_path = builder.lipo_build(@@build_defines) unless @skip_archive
58
+ rescue
59
+ @skip_archive = true
60
+ end
61
+ end
62
+ end
63
+
64
+ def build_static_library
65
+ source_dir = zip_dir
66
+ file_accessor = Sandbox::FileAccessor.new(Pathname.new('.').expand_path, @spec.consumer(@platform))
67
+ Dir.chdir(workspace_directory) do
68
+ builder = CBin::Library::Builder.new(@spec, file_accessor, @platform, source_dir,@framework_path)
69
+ builder.build
70
+ end
71
+ end
72
+
73
+ def zip_static_framework
74
+ Dir.chdir(File.join(workspace_directory,@framework_path.root_path)) do
75
+ output_name = File.join(zip_dir, framework_name_zip)
76
+ unless File.exist?(framework_name)
77
+ return
78
+ end
79
+
80
+ UI.puts "Compressing #{framework_name} into #{output_name}"
81
+ `zip --symlinks -r #{output_name} #{framework_name}`
82
+ end
83
+ end
84
+
85
+ def zip_static_library
86
+ Dir.chdir(zip_dir) do
87
+ output_library = "#{library_name}.zip"
88
+ unless File.exist?(library_name)
89
+ raise Informative, "没有需要压缩的 library 文件:#{library_name}"
90
+ end
91
+
92
+ UI.puts "Compressing #{library_name} into #{output_library}"
93
+
94
+ `zip --symlinks -r #{output_library} #{library_name}`
95
+ end
96
+
97
+ end
98
+
99
+
100
+ def clean_workspace
101
+ UI.puts 'Cleaning workspace'
102
+
103
+ FileUtils.rm_rf(gen_name)
104
+ Dir.chdir(zip_dir) do
105
+ FileUtils.rm_rf(framework_name) if @zip
106
+ FileUtils.rm_rf(library_name)
107
+ FileUtils.rm_rf(framework_name) unless @framework_output
108
+ FileUtils.rm_rf("#{framework_name}.zip") unless @framework_output
109
+ end
110
+ end
111
+
112
+ def framework_name
113
+ CBin::Config::Builder.instance.framework_name(@spec)
114
+ end
115
+
116
+ def framework_name_zip
117
+ CBin::Config::Builder.instance.framework_name_version(@spec) + ".zip"
118
+ end
119
+
120
+ def library_name
121
+ CBin::Config::Builder.instance.library_name(@spec)
122
+ end
123
+
124
+ def workspace_directory
125
+ File.expand_path("#{gen_name}/#{@rootSpec.name}")
126
+ end
127
+
128
+ def zip_dir
129
+ CBin::Config::Builder.instance.zip_dir
130
+ end
131
+
132
+ def gen_name
133
+ CBin::Config::Builder.instance.gen_dir
134
+ end
135
+
136
+
137
+ def spec_file
138
+ @spec_file ||= begin
139
+ if @podspec
140
+ find_spec_file(@podspec)
141
+ else
142
+ if code_spec_files.empty?
143
+ raise Informative, '当前目录下没有找到可用源码 podspec.'
144
+ end
145
+
146
+ spec_file = code_spec_files.first
147
+ spec_file
148
+ end
149
+ end
150
+ end
151
+
152
+ end
153
+ end
154
+ end
@@ -0,0 +1,62 @@
1
+ require 'yaml'
2
+ require 'cocoapods-tj/config/config'
3
+
4
+ module CBin
5
+ class Build
6
+
7
+ class Utils
8
+
9
+ def Utils.is_framework(spec)
10
+ if Utils.uses_frameworks?
11
+ return true
12
+ end
13
+
14
+ return Utils.is_swift_module(spec)
15
+ end
16
+
17
+ def Utils.is_swift_module(spec)
18
+
19
+ is_framework = false
20
+ dir = File.join(CBin::Config::Builder.instance.gen_dir, CBin::Config::Builder.instance.target_name)
21
+ if File.exist?(dir)
22
+ Dir.chdir(dir) do
23
+ public_headers = Array.new
24
+ spec_header_dir = "./Headers/Public/#{spec.name}"
25
+
26
+ unless File.exist?(spec_header_dir)
27
+ spec_header_dir = "./Pods/Headers/Public/#{spec.name}"
28
+ end
29
+ return false unless File.exist?(spec_header_dir)
30
+
31
+ is_framework = File.exist?(File.join(spec_header_dir, "#{spec.name}-umbrella.h"))
32
+ end
33
+ end
34
+
35
+ if $ARGV[1] == "local"
36
+ is_framework = File.exist?(File.join(CBin::Config::Builder.instance.xcode_build_dir, "#{spec.name}.framework"))
37
+ unless is_framework
38
+ is_framework = File.exist?(File.join(CBin::Config::Builder.instance.xcode_BuildProductsPath_dir, "#{spec.name}","Swift Compatibility Header"))
39
+ end
40
+ end
41
+
42
+ is_framework
43
+ end
44
+
45
+ def Utils.uses_frameworks?
46
+ uses_frameworks = false
47
+ Pod::Config.instance.podfile.target_definitions.each do |key,value|
48
+ if key != "Pods"
49
+ uses_frameworks = value.uses_frameworks?
50
+ if uses_frameworks
51
+ break ;
52
+ end
53
+ end
54
+ end
55
+
56
+ return uses_frameworks
57
+ end
58
+
59
+ end
60
+
61
+ end
62
+ end
@@ -0,0 +1,79 @@
1
+ # copy from https://github.com/CocoaPods/cocoapods-packager
2
+
3
+ module CBin
4
+ class Framework
5
+ attr_reader :headers_path
6
+ attr_reader :module_map_path
7
+ attr_reader :resources_path
8
+ attr_reader :root_path
9
+ attr_reader :versions_path
10
+ attr_reader :swift_module_path
11
+ attr_reader :fwk_path
12
+
13
+ def initialize(name, platform)
14
+ @name = name
15
+ @platform = platform
16
+ end
17
+
18
+ def make
19
+ make_root
20
+ make_framework
21
+ make_headers
22
+ make_resources
23
+ make_current_version
24
+ end
25
+
26
+ def delete_resources
27
+ Pathname.new(@resources_path).rmtree if File.exist? (@resources_path)
28
+ (Pathname.new(@fwk_path) + Pathname.new('Resources')).delete if File.exist?(Pathname.new(@fwk_path) + Pathname.new('Resources'))
29
+ end
30
+
31
+ def remove_current_version
32
+ FileUtils.rm_f(File.join(@fwk_path,@name))
33
+ FileUtils.rm_f(File.join(@fwk_path,"Headers"))
34
+ FileUtils.rm_f(File.join(@fwk_path,"Resources"))
35
+
36
+ FileUtils.cp_r("#{@versions_path}/.", @fwk_path)
37
+ FileUtils.remove_dir("#{@fwk_path}/Versions")
38
+
39
+ end
40
+
41
+ private
42
+
43
+ def make_current_version
44
+ current_version_path = @versions_path + Pathname.new('../Current')
45
+ `ln -sf A #{current_version_path}`
46
+ `ln -sf Versions/Current/Headers #{@fwk_path}/`
47
+ `ln -sf Versions/Current/Resources #{@fwk_path}/`
48
+ `ln -sf Versions/Current/#{@name} #{@fwk_path}/`
49
+ end
50
+
51
+
52
+
53
+ def make_framework
54
+ @fwk_path = @root_path + Pathname.new(@name + '.framework')
55
+ @fwk_path.mkdir unless @fwk_path.exist?
56
+
57
+ @module_map_path = @fwk_path + Pathname.new('Modules')
58
+ @swift_module_path = @module_map_path + Pathname.new(@name + '.swiftmodule')
59
+
60
+
61
+ @versions_path = @fwk_path + Pathname.new('Versions/A')
62
+ end
63
+
64
+ def make_headers
65
+ @headers_path = @versions_path + Pathname.new('Headers')
66
+ @headers_path.mkpath unless @headers_path.exist?
67
+ end
68
+
69
+ def make_resources
70
+ @resources_path = @versions_path + Pathname.new('Resources')
71
+ @resources_path.mkpath unless @resources_path.exist?
72
+ end
73
+
74
+ def make_root
75
+ @root_path = Pathname.new(@platform)
76
+ @root_path.mkpath unless @root_path.exist?
77
+ end
78
+ end
79
+ end