cocoapods-packageall 0.0.3
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.
- checksums.yaml +7 -0
- data/lib/cocoapods-packageall/command/const.rb +2 -0
- data/lib/cocoapods-packageall/command/hook.rb +32 -0
- data/lib/cocoapods-packageall/command/package.rb +39 -0
- data/lib/cocoapods-packageall/command/packageall.rb +48 -0
- data/lib/cocoapods-packageall/command/spec_builder.rb +185 -0
- data/lib/cocoapods-packageall/command/spec_generate.rb +67 -0
- data/lib/cocoapods-packageall/command.rb +2 -0
- data/lib/cocoapods-packageall/gem_version.rb +3 -0
- data/lib/cocoapods-packageall.rb +1 -0
- data/lib/cocoapods_plugin.rb +1 -0
- metadata +81 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 241f9755e89c822231b7ac8cfe7c0ecdc0a908c638a0c326ed95397fac4cd24c
|
4
|
+
data.tar.gz: f12f57701e741022c2279d8508debe6e02f67ee7549de6e635354c8fc6205aed
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 6eb1f573af4c9928c0e9c178fc0f4c7b32181988c71896e970241c869e44acdaac82385084729d47c463236eb0f73fed17e22aa8373901492fdd658e5fb7f90f
|
7
|
+
data.tar.gz: 52782716738cf3328b1f75a580ac31006f3a7597d680f1b38e48ebcb09ec88aef109f6b03e86640b968ef194491dfa66b96b00045f0b1f210a1a6d431aff7ec1
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require_relative 'packageall'
|
2
|
+
require_relative 'package'
|
3
|
+
require_relative 'spec_generate'
|
4
|
+
|
5
|
+
module Hook
|
6
|
+
|
7
|
+
Pod::HooksManager.register('cocoapods-packageall', :source_provider) do |context|
|
8
|
+
p "cocoapods-packageall source_provider"
|
9
|
+
# Pod::PreferConfig.instance.prefer_sources().each { |e, source|
|
10
|
+
# context.add_source(source)
|
11
|
+
# }
|
12
|
+
# Package.new('hhhh')
|
13
|
+
|
14
|
+
# packageall = Pod::Packageall.new(spec_files)
|
15
|
+
end
|
16
|
+
|
17
|
+
Pod::HooksManager.register('cocoapods-packageall', :post_install) do |context|
|
18
|
+
p "cocoapods-packageall post_install"
|
19
|
+
Array
|
20
|
+
specs = context.umbrella_targets[0].specs.select {|spec| spec.parent.nil?}
|
21
|
+
specifications = specs.map {|spec| spec.instance_variable_get('@delegate_dc_obj').specification }
|
22
|
+
spec_sources = specs.map {|spec| spec.spec_source.url }.uniq
|
23
|
+
specifications.each do |specification|
|
24
|
+
Package.package(specification,spec_sources)
|
25
|
+
SpecGenerate.new(specification).generate
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
Pod::HooksManager.register('cocoapods-packageall', :post_update) do |context|
|
30
|
+
p "cocoapods-packageall post_update"
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require_relative 'const'
|
2
|
+
|
3
|
+
class Package
|
4
|
+
def initialize(argv)
|
5
|
+
p argv
|
6
|
+
end
|
7
|
+
def self.package(specification,spec_source)
|
8
|
+
@@fwk_dir ||= create_fwk_dir(false)
|
9
|
+
Dir.chdir(@@fwk_dir)
|
10
|
+
command = "pod packagethk #{specification.defined_in_file} --exclude-deps --no-mangle --configuration=Debug --spec-sources=#{spec_source.join(',')}"
|
11
|
+
puts "start package ..."
|
12
|
+
puts command
|
13
|
+
output = Time.now.to_s
|
14
|
+
output << "\n"
|
15
|
+
output += `#{command}`
|
16
|
+
File.open("#{specification.name}_log.txt", 'w') { |file|
|
17
|
+
file.write(output)
|
18
|
+
}
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.create_fwk_dir(force)
|
22
|
+
fwk_dir = (Dir.getwd + '/' + Frameworkrepo)
|
23
|
+
puts "current work dir : #{fwk_dir}"
|
24
|
+
|
25
|
+
if Dir.exist? (fwk_dir)
|
26
|
+
if force == true
|
27
|
+
`rm -rf #{fwk_dir}`
|
28
|
+
Dir.mkdir(fwk_dir,0777)
|
29
|
+
end
|
30
|
+
else
|
31
|
+
Dir.mkdir(fwk_dir,0777)
|
32
|
+
end
|
33
|
+
|
34
|
+
Dir.chdir(fwk_dir)
|
35
|
+
fwk_dir
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require_relative 'hook'
|
2
|
+
|
3
|
+
module Pod
|
4
|
+
class Command
|
5
|
+
# This is an example of a cocoapods plugin adding a top-level subcommand
|
6
|
+
# to the 'pod' command.
|
7
|
+
#
|
8
|
+
# You can also create subcommands of existing or new commands. Say you
|
9
|
+
# wanted to add a subcommand to `list` to show newly deprecated pods,
|
10
|
+
# (e.g. `pod list deprecated`), there are a few things that would need
|
11
|
+
# to change.
|
12
|
+
#
|
13
|
+
# - move this file to `lib/pod/command/list/deprecated.rb` and update
|
14
|
+
# the class to exist in the the Pod::Command::List namespace
|
15
|
+
# - change this class to extend from `List` instead of `Command`. This
|
16
|
+
# tells the plugin system that it is a subcommand of `list`.
|
17
|
+
# - edit `lib/cocoapods_plugins.rb` to require this file
|
18
|
+
#
|
19
|
+
# @todo Create a PR to add your plugin to CocoaPods/cocoapods.org
|
20
|
+
# in the `plugins.json` file, once your plugin is released.
|
21
|
+
#
|
22
|
+
class Packageall < Command
|
23
|
+
self.summary = 'Short description of cocoapods-packageall.'
|
24
|
+
|
25
|
+
self.description = <<-DESC
|
26
|
+
Longer description of cocoapods-packageall.
|
27
|
+
DESC
|
28
|
+
|
29
|
+
self.arguments = 'NAME'
|
30
|
+
|
31
|
+
def initialize(argv)
|
32
|
+
@name = argv.shift_argument
|
33
|
+
super
|
34
|
+
end
|
35
|
+
|
36
|
+
def validate!
|
37
|
+
# super
|
38
|
+
# help! 'A Pod name is required.' unless @name
|
39
|
+
end
|
40
|
+
|
41
|
+
def run
|
42
|
+
UI.puts "Add your implementation for the cocoapods-packageall plugin in #{__FILE__}"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
|
@@ -0,0 +1,185 @@
|
|
1
|
+
module Pod
|
2
|
+
class SpecficationBuilder
|
3
|
+
def initialize(spec, source, embedded, dynamic, generate_spec)
|
4
|
+
@spec = spec
|
5
|
+
@source = source.nil? ? '{ :path => \'.\' }' : source
|
6
|
+
@embedded = embedded
|
7
|
+
@dynamic = dynamic
|
8
|
+
@is_generate_spec = generate_spec
|
9
|
+
@generate_spec = ""
|
10
|
+
end
|
11
|
+
|
12
|
+
def set_has_resource(has)
|
13
|
+
if has
|
14
|
+
@has_resource = true
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def framework_path
|
19
|
+
if @embedded
|
20
|
+
@spec.name + '.embeddedframework' + '/' + @spec.name + '.framework'
|
21
|
+
else
|
22
|
+
@spec.name + '.framework'
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def spec_platform(platform)
|
27
|
+
fwk_base = platform.name.to_s + '/' + framework_path
|
28
|
+
spec = <<RB
|
29
|
+
s.#{platform.name}.deployment_target = '#{platform.deployment_target}'
|
30
|
+
s.#{platform.name}.vendored_framework = '#{fwk_base}'
|
31
|
+
RB
|
32
|
+
|
33
|
+
%w(frameworks weak_frameworks libraries requires_arc xcconfig).each do |attribute|
|
34
|
+
attributes_hash = @spec.attributes_hash[platform.name.to_s]
|
35
|
+
next if attributes_hash.nil?
|
36
|
+
value = attributes_hash[attribute]
|
37
|
+
next if value.nil?
|
38
|
+
|
39
|
+
value = "'#{value}'" if value.class == String
|
40
|
+
spec += " s.#{platform.name}.#{attribute} = #{value}\n"
|
41
|
+
end
|
42
|
+
spec
|
43
|
+
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
def spec_sources_pattern(generate_spec)
|
48
|
+
# 添加Source Pattern
|
49
|
+
spec = <<RB
|
50
|
+
if ENV['IS_SOURCE'] || ENV["\#{s.name}_SOURCE"]
|
51
|
+
RB
|
52
|
+
|
53
|
+
set_has_resource(@spec.attributes_hash['resource_bundles'])
|
54
|
+
if @spec.attributes_hash['source']['tag']
|
55
|
+
spec += <<RB
|
56
|
+
s.source = { :git => '#{@spec.attributes_hash['source']['git']}', :tag => "#{@spec.attributes_hash['source']['tag']}" }
|
57
|
+
RB
|
58
|
+
elsif @spec.attributes_hash['source']['commit']
|
59
|
+
spec += <<RB
|
60
|
+
s.source = { :git => '#{@spec.attributes_hash['source']['git']}', :commit => "#{@spec.attributes_hash['source']['commit']}" }
|
61
|
+
RB
|
62
|
+
else
|
63
|
+
spec += <<RB
|
64
|
+
s.source = { :git => '#{@spec.attributes_hash['source']}'}
|
65
|
+
RB
|
66
|
+
end
|
67
|
+
|
68
|
+
|
69
|
+
%w(source_files public_header_files resources frameworks resource_bundles dependencies).each do |attribute|
|
70
|
+
value = @spec.attributes_hash[attribute]
|
71
|
+
next if value.nil?
|
72
|
+
if attribute == 'dependencies'
|
73
|
+
value.each { |key,hashvalue|
|
74
|
+
if hashvalue.empty?
|
75
|
+
spec += " s.dependency \'#{key}\'\n"
|
76
|
+
else
|
77
|
+
spec += " s.dependency \'#{key}\', \'#{hashvalue[0]}\'\n"
|
78
|
+
end
|
79
|
+
}
|
80
|
+
else
|
81
|
+
value = value.dump if value.class == String
|
82
|
+
spec += " s.#{attribute} = #{value}\n"
|
83
|
+
end
|
84
|
+
end
|
85
|
+
#添加subspec (递归添加)
|
86
|
+
@generate_spec = spec
|
87
|
+
@spec.subspecs.each do |subspec|
|
88
|
+
spec_sources_pattern_subpsec(subspec)
|
89
|
+
end
|
90
|
+
spec = @generate_spec
|
91
|
+
|
92
|
+
# 添加Framwork Pattern
|
93
|
+
spec += <<RB
|
94
|
+
else
|
95
|
+
s.source = { :git => 'git@repo.we.com:iosfeaturelibraries/frameworkrepo.git', :commit => '6fd6924'}
|
96
|
+
s.ios.deployment_target = '9.0'
|
97
|
+
s.ios.vendored_framework = '#{@spec.name}-#{@spec.version.to_s}/ios/#{@spec.name}.framework'
|
98
|
+
RB
|
99
|
+
if @has_resource
|
100
|
+
spec += <<RB
|
101
|
+
s.resources = ["#{@spec.name}-#{@spec.version.to_s}/ios/#{@spec.name}.framework/Resources/*.bundle"]
|
102
|
+
RB
|
103
|
+
end
|
104
|
+
|
105
|
+
spec += <<RB
|
106
|
+
end
|
107
|
+
RB
|
108
|
+
|
109
|
+
|
110
|
+
spec
|
111
|
+
end
|
112
|
+
|
113
|
+
def spec_sources_pattern_subpsec(subspec)
|
114
|
+
name = subspec.attributes_hash['name']
|
115
|
+
level = subspec.name.split('/').count
|
116
|
+
curSpec = "s" * (level - 1)
|
117
|
+
space = " " * (level - 2)
|
118
|
+
nextSpec = curSpec + "s"
|
119
|
+
@generate_spec += space
|
120
|
+
@generate_spec += " #{curSpec}.subspec \'#{name}\' do |#{nextSpec}|\n"
|
121
|
+
|
122
|
+
set_has_resource(subspec.attributes_hash['resource_bundles'])
|
123
|
+
|
124
|
+
%w(source_files public_header_files resources frameworks resource_bundles dependencies).each do |attribute|
|
125
|
+
value = subspec.attributes_hash[attribute]
|
126
|
+
next if value.nil?
|
127
|
+
@generate_spec += space
|
128
|
+
if attribute == 'dependencies'
|
129
|
+
value.each { |key,hashvalue|
|
130
|
+
if hashvalue.empty?
|
131
|
+
@generate_spec += " #{nextSpec}.dependency \'#{key}\'\n"
|
132
|
+
else
|
133
|
+
@generate_spec += " #{nextSpec}.dependency \'#{key}\', \'#{hashvalue[0]}\'\n"
|
134
|
+
end
|
135
|
+
}
|
136
|
+
else
|
137
|
+
value = value.dump if value.class == String
|
138
|
+
@generate_spec += " #{nextSpec}.#{attribute} = #{value}\n"
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
if subspec.subspecs.empty?
|
143
|
+
@generate_spec += space
|
144
|
+
@generate_spec += " end\n"
|
145
|
+
else
|
146
|
+
#添加subspec
|
147
|
+
subspec.subspecs.each do |subsubspec|
|
148
|
+
spec_sources_pattern_subpsec(subsubspec)
|
149
|
+
end
|
150
|
+
@generate_spec += " end\n"
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
def spec_metadata
|
155
|
+
spec = spec_header
|
156
|
+
spec
|
157
|
+
end
|
158
|
+
|
159
|
+
def spec_close
|
160
|
+
"end\n"
|
161
|
+
end
|
162
|
+
|
163
|
+
private
|
164
|
+
|
165
|
+
def spec_header
|
166
|
+
spec = "Pod::Spec.new do |s|\n"
|
167
|
+
|
168
|
+
%w(name version summary license authors homepage description social_media_url
|
169
|
+
docset_url documentation_url screenshots frameworks weak_frameworks libraries requires_arc
|
170
|
+
deployment_target xcconfig).each do |attribute|
|
171
|
+
value = @spec.attributes_hash[attribute]
|
172
|
+
next if value.nil?
|
173
|
+
value = value.dump if value.class == String
|
174
|
+
spec += " s.#{attribute} = #{value}\n"
|
175
|
+
end
|
176
|
+
if @is_generate_spec
|
177
|
+
source = spec_sources_pattern(true)
|
178
|
+
spec += "#{source}"
|
179
|
+
else
|
180
|
+
spec += " s.source = #{@source}\n\n"
|
181
|
+
end
|
182
|
+
spec
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require_relative 'spec_builder'
|
2
|
+
require_relative 'const'
|
3
|
+
|
4
|
+
class SpecGenerate
|
5
|
+
def initialize(specfication)
|
6
|
+
file_path = fwk_spec_file(specfication)
|
7
|
+
file_path.mkpath unless file_path.exist?
|
8
|
+
@specfication = specfication
|
9
|
+
@file_path = file_path
|
10
|
+
@black_list = black_list
|
11
|
+
end
|
12
|
+
|
13
|
+
def black_list
|
14
|
+
path = Pathname.new(Dir.getwd) + 'blacklist.txt'
|
15
|
+
if path.exist?
|
16
|
+
return path.readlines.map { |line| line.chomp }
|
17
|
+
end
|
18
|
+
[]
|
19
|
+
end
|
20
|
+
|
21
|
+
def fwk_spec_file(specfication)
|
22
|
+
cache_root + specfication.name + specfication.version.to_s
|
23
|
+
end
|
24
|
+
|
25
|
+
def cache_root
|
26
|
+
@cache_root = Pathname.new(Dir.getwd) + Frameworkspec
|
27
|
+
@cache_root.mkpath unless @cache_root.exist?
|
28
|
+
@cache_root
|
29
|
+
end
|
30
|
+
|
31
|
+
def write_spec(spec, path)
|
32
|
+
path.dirname.mkpath
|
33
|
+
if @black_list.include? spec.name
|
34
|
+
write_black_spec(spec,path)
|
35
|
+
else
|
36
|
+
write_white_spec(spec,path)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def write_black_spec(spec, path)
|
41
|
+
file = path + "#{spec.name}.podspec.json"
|
42
|
+
file.open('w') { |f| f.write spec.to_pretty_json }
|
43
|
+
end
|
44
|
+
|
45
|
+
def write_white_spec(spec, path)
|
46
|
+
file = path + "#{spec.name}.podspec"
|
47
|
+
generate_spec = true
|
48
|
+
builder = Pod::SpecficationBuilder.new(spec,false,false,false,generate_spec)
|
49
|
+
podspec = builder.spec_metadata
|
50
|
+
|
51
|
+
spec.available_platforms.each do |platform|
|
52
|
+
# build_in_sandbox(platform)
|
53
|
+
|
54
|
+
if generate_spec == false
|
55
|
+
podspec += builder.spec_platform(platform)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
podspec += builder.spec_close
|
60
|
+
|
61
|
+
file.open('w') { |f| f.write podspec }
|
62
|
+
end
|
63
|
+
|
64
|
+
def generate
|
65
|
+
write_spec(@specfication,@file_path)
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'cocoapods-packageall/gem_version'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'cocoapods-packageall/command'
|
metadata
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cocoapods-packageall
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Joe.cheng
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-03-20 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: A short description of cocoapods-packageall.
|
42
|
+
email:
|
43
|
+
- joe.cheng@corp.to8to.com
|
44
|
+
executables: []
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files: []
|
47
|
+
files:
|
48
|
+
- lib/cocoapods-packageall.rb
|
49
|
+
- lib/cocoapods-packageall/command.rb
|
50
|
+
- lib/cocoapods-packageall/command/const.rb
|
51
|
+
- lib/cocoapods-packageall/command/hook.rb
|
52
|
+
- lib/cocoapods-packageall/command/package.rb
|
53
|
+
- lib/cocoapods-packageall/command/packageall.rb
|
54
|
+
- lib/cocoapods-packageall/command/spec_builder.rb
|
55
|
+
- lib/cocoapods-packageall/command/spec_generate.rb
|
56
|
+
- lib/cocoapods-packageall/gem_version.rb
|
57
|
+
- lib/cocoapods_plugin.rb
|
58
|
+
homepage: https://github.com/EXAMPLE/cocoapods-packageall
|
59
|
+
licenses:
|
60
|
+
- MIT
|
61
|
+
metadata: {}
|
62
|
+
post_install_message:
|
63
|
+
rdoc_options: []
|
64
|
+
require_paths:
|
65
|
+
- lib
|
66
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
requirements: []
|
77
|
+
rubygems_version: 3.4.7
|
78
|
+
signing_key:
|
79
|
+
specification_version: 4
|
80
|
+
summary: A longer description of cocoapods-packageall.
|
81
|
+
test_files: []
|