cocoapods-tj 1.0.0

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.
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