cocoapods-hooks 0.0.1
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-hooks/command/change_color.rb +39 -0
- data/lib/cocoapods-hooks/command/fastlane_sign.rb +29 -0
- data/lib/cocoapods-hooks/command/git_clone.rb +86 -0
- data/lib/cocoapods-hooks/command/hooks.rb +43 -0
- data/lib/cocoapods-hooks/command/oem_config.rb +42 -0
- data/lib/cocoapods-hooks/command.rb +5 -0
- data/lib/cocoapods-hooks/gem_version.rb +3 -0
- data/lib/cocoapods-hooks.rb +1 -0
- data/lib/cocoapods_plugin.rb +33 -0
- data/lib/dsl.rb +14 -0
- data/lib/install.rb +46 -0
- metadata +96 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 34a8f75a4c149e23f7e8a89da4e4ef52542255f18ee9468072b3f89936cf4d88
|
4
|
+
data.tar.gz: 5e826359b216b88c93a862f90961b7ed79489911165d4c6964ac0a72b8fcdc3b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d0dcb09899bce00b905c21ead92b245f4d55827302ca75c5b1187027af6aa94684f58afef47d17dde2af2ebd7c7c5d0f2fe124f0bb62d36487bbc5f35dc9ade0
|
7
|
+
data.tar.gz: 8ef78f056a942eb258cbe9e7b89b702e5cfa915a4faf80bf46c713730c7390fbd251426624c6ea9524e304f79ca086a84af7a2c4191b71ca8949cf160fc327f8
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'cocoapods/command'
|
2
|
+
|
3
|
+
module Pod
|
4
|
+
class Command
|
5
|
+
class ChangeColor < Command
|
6
|
+
self.summary = '根据配置文件里的 themecolor 修改资源图片'
|
7
|
+
|
8
|
+
def initialize(argv)
|
9
|
+
super
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.options
|
13
|
+
[
|
14
|
+
|
15
|
+
].concat(super)
|
16
|
+
end
|
17
|
+
|
18
|
+
def validate!
|
19
|
+
super
|
20
|
+
end
|
21
|
+
|
22
|
+
def run
|
23
|
+
UI.puts "change project theme color for theme and mutable theme #{@tenantid}"
|
24
|
+
# 执行你的业务逻辑
|
25
|
+
self.class.changeThemeColor()
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def self.changeThemeColor()
|
31
|
+
# 改变 theme 文件夹的图片颜色
|
32
|
+
system("python3 ChangeColor.py")
|
33
|
+
# 改变 mutableTheme 文件夹的图片颜色
|
34
|
+
system("python3 svg2png.py")
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'cocoapods/command'
|
2
|
+
|
3
|
+
module Pod
|
4
|
+
class Command
|
5
|
+
class FastlaneSign < Command
|
6
|
+
self.summary = '根据 配置文件 修改 xcode 工程,进行签名'
|
7
|
+
|
8
|
+
def initialize(argv)
|
9
|
+
super
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.options
|
13
|
+
[
|
14
|
+
|
15
|
+
].concat(super)
|
16
|
+
end
|
17
|
+
|
18
|
+
def validate!
|
19
|
+
super
|
20
|
+
end
|
21
|
+
|
22
|
+
def run
|
23
|
+
# 执行你的业务逻辑
|
24
|
+
system("fastlane ios configAllProject")
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
require 'cocoapods/command'
|
2
|
+
|
3
|
+
module Pod
|
4
|
+
class Command
|
5
|
+
class GitClone < Command
|
6
|
+
self.summary = '根据 tenantid 下载 OEM 相关配置'
|
7
|
+
|
8
|
+
def self.options
|
9
|
+
[
|
10
|
+
['--tenantid=TENANTID', 'Specify the tenant ID'],
|
11
|
+
['--branch=Branch', 'Specify the branch for git clone']
|
12
|
+
].concat(super)
|
13
|
+
end
|
14
|
+
|
15
|
+
def initialize(argv)
|
16
|
+
@tenantid = argv.option('tenantid')
|
17
|
+
@branch = argv.option('branch')
|
18
|
+
super
|
19
|
+
end
|
20
|
+
|
21
|
+
def validate!
|
22
|
+
super
|
23
|
+
help! 'A tenant ID is required.' unless @tenantid
|
24
|
+
end
|
25
|
+
|
26
|
+
def run
|
27
|
+
UI.puts "Downloading OEM configuration for tenant #{@tenantid}"
|
28
|
+
# 执行你的业务逻辑
|
29
|
+
if @branch == nil
|
30
|
+
UI.puts "没有传入指定分支,默认使用 main_develop"
|
31
|
+
@branch = 'main_develop'
|
32
|
+
end
|
33
|
+
self.class.git_clone_project_config(@tenantid, @branch)
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
def self.git_clone_project_config(tenant_id, branch)
|
38
|
+
puts "start download ios project config with tenantid: #{tenant_id}"
|
39
|
+
# 先尝试删除源目录
|
40
|
+
if Dir.exist?('ios_project_config')
|
41
|
+
puts "ios_project_config exist, try remove now!"
|
42
|
+
FileUtils.rm_r('ios_project_config')
|
43
|
+
end
|
44
|
+
ios_project_config_git_url = 'ssh://git@192.168.31.7:7999/ios_module/ios_project_config.git'
|
45
|
+
success = system("git clone -b #{branch} #{ios_project_config_git_url}")
|
46
|
+
puts "当前命令的路径为:#{Dir.pwd}"
|
47
|
+
if success
|
48
|
+
puts "repository cloned to #{Dir.pwd}"
|
49
|
+
project_config_plist_path = Dir.pwd + "/ios_project_config/#{tenant_id}/ProjectConfig.plist"
|
50
|
+
# 将配置文件拷贝到工程目录下
|
51
|
+
FileUtils.cp(project_config_plist_path, CocoapodsHooks::PLIST_PATH)
|
52
|
+
puts "AppIcon.appiconset path is: #{Dir.pwd + "/ios_project_config/#{tenant_id}/resource/AppIcon.appiconset"}"
|
53
|
+
puts "dest AppIcon.appiconset path is: #{Dir.pwd + '/AddxAi/Assets.xcassets/AppIcon.appiconset'}"
|
54
|
+
# 将资源文件拷贝到资源目录下
|
55
|
+
FileUtils.cp_r(Dir.pwd + "/ios_project_config/#{tenant_id}/resource/AppIcon.appiconset", Dir.pwd + '/AddxAi/Assets.xcassets', remove_destination: true)
|
56
|
+
FileUtils.cp_r(Dir.pwd + "/ios_project_config/#{tenant_id}/resource/LaunchImage.launchimage", Dir.pwd + '/AddxAi/Assets.xcassets', remove_destination: true)
|
57
|
+
# # 替换其他的资源图片
|
58
|
+
device_setting_dir = Dir.pwd + "/ios_project_config/#{tenant_id}/resource/DeviceSetting/."
|
59
|
+
if File.exist?(device_setting_dir)
|
60
|
+
FileUtils.cp_r(Dir.pwd + "/ios_project_config/#{tenant_id}/resource/DeviceSetting/.", Dir.pwd + '/AddxAi/Classes/A4xBaseSDK/Resources/Assets.xcassets/DeviceSetting')
|
61
|
+
end
|
62
|
+
home_user_dir = Dir.pwd + "/ios_project_config/#{tenant_id}/resource/HomeUser/."
|
63
|
+
if File.exist?(home_user_dir)
|
64
|
+
FileUtils.cp_r(Dir.pwd + "/ios_project_config/#{tenant_id}/resource/HomeUser/.", Dir.pwd + '/AddxAi/Classes/A4xBaseSDK/Resources/Assets.xcassets/HomePage')
|
65
|
+
end
|
66
|
+
account_logo_dir = Dir.pwd + "/ios_project_config/#{tenant_id}/resource/Account/account_logo.imageset"
|
67
|
+
if File.exist?(account_logo_dir)
|
68
|
+
FileUtils.cp_r(Dir.pwd + "/ios_project_config/#{tenant_id}/resource/Account/account_logo.imageset", Dir.pwd + '/AddxAi/Classes/A4xBaseSDK/Resources/Assets.xcassets/Account')
|
69
|
+
end
|
70
|
+
user_login_bg = Dir.pwd + "/ios_project_config/#{tenant_id}/resource/Account/user_login_bg.png"
|
71
|
+
if File.exist?(user_login_bg)
|
72
|
+
FileUtils.cp(Dir.pwd + "/ios_project_config/#{tenant_id}/resource/Account/user_login_bg.png", Dir.pwd + '/AddxAi/Classes/A4xBaseSDK/Resources/other/Resource/user_login_bg.png')
|
73
|
+
end
|
74
|
+
# 拷贝完成后,删除本地的配置文件夹
|
75
|
+
FileUtils.rm_r('ios_project_config')
|
76
|
+
else
|
77
|
+
puts "Failed to clone repository"
|
78
|
+
exit 1
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
|
83
|
+
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module Pod
|
2
|
+
class Command
|
3
|
+
# This is an example of a cocoapods plugin adding a top-level subcommand
|
4
|
+
# to the 'pod' command.
|
5
|
+
#
|
6
|
+
# You can also create subcommands of existing or new commands. Say you
|
7
|
+
# wanted to add a subcommand to `list` to show newly deprecated pods,
|
8
|
+
# (e.g. `pod list deprecated`), there are a few things that would need
|
9
|
+
# to change.
|
10
|
+
#
|
11
|
+
# - move this file to `lib/pod/command/list/deprecated.rb` and update
|
12
|
+
# the class to exist in the the Pod::Command::List namespace
|
13
|
+
# - change this class to extend from `List` instead of `Command`. This
|
14
|
+
# tells the plugin system that it is a subcommand of `list`.
|
15
|
+
# - edit `lib/cocoapods_plugins.rb` to require this file
|
16
|
+
#
|
17
|
+
# @todo Create a PR to add your plugin to CocoaPods/cocoapods.org
|
18
|
+
# in the `plugins.json` file, once your plugin is released.
|
19
|
+
#
|
20
|
+
class Hooks < Command
|
21
|
+
self.summary = 'Short description of cocoapods-hooks.'
|
22
|
+
|
23
|
+
self.description = <<-DESC
|
24
|
+
Longer description of cocoapods-hooks.
|
25
|
+
DESC
|
26
|
+
|
27
|
+
def initialize(argv)
|
28
|
+
@name = argv.shift_argument
|
29
|
+
puts "name: #{@name}"
|
30
|
+
super
|
31
|
+
end
|
32
|
+
|
33
|
+
def validate!
|
34
|
+
super
|
35
|
+
help! 'A Pod name is required.' unless @name
|
36
|
+
end
|
37
|
+
|
38
|
+
def run
|
39
|
+
UI.puts "Add your implementation for the cocoapods-hooks plugin in #{__FILE__}"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'cocoapods/command'
|
2
|
+
|
3
|
+
module Pod
|
4
|
+
class Command
|
5
|
+
class OemConfig < Command
|
6
|
+
self.summary = '根据 tenantid 配置所有的 OEM 配置,包含三步:1. 根据 tenant_id 下载相关的配置文件 2. 修改图片的主题色 3. 修改工程配置, 进行签名'
|
7
|
+
|
8
|
+
def self.options
|
9
|
+
[
|
10
|
+
['--tenantid=TENANTID', 'Specify the tenant ID'],
|
11
|
+
['--branch=Branch', 'Specify the branch for git clone']
|
12
|
+
].concat(super)
|
13
|
+
end
|
14
|
+
|
15
|
+
def initialize(argv)
|
16
|
+
@tenantid = argv.option('tenantid')
|
17
|
+
@branch = argv.option('branch')
|
18
|
+
super
|
19
|
+
end
|
20
|
+
|
21
|
+
def validate!
|
22
|
+
super
|
23
|
+
help! 'A tenant ID is required.' unless @tenantid
|
24
|
+
end
|
25
|
+
|
26
|
+
def run
|
27
|
+
UI.puts "Downloading OEM configuration for tenant #{@tenantid}"
|
28
|
+
# 执行你的业务逻辑
|
29
|
+
if @branch == nil
|
30
|
+
UI.puts "没有传入指定分支,默认使用 main_develop"
|
31
|
+
@branch = 'main_develop'
|
32
|
+
end
|
33
|
+
# 1. 根据 tenant_id 下载相关的配置文件
|
34
|
+
system("pod git-clone --tenantid=#{@tenantid} --branch=#{@branch}")
|
35
|
+
# 2. 修改图片的主题色
|
36
|
+
system("pod change-color")
|
37
|
+
# 3. 修改工程配置, 进行签名
|
38
|
+
system("pod fastlane-sign")
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'cocoapods-hooks/gem_version'
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'cocoapods-hooks/command'
|
2
|
+
require 'install'
|
3
|
+
require 'dsl'
|
4
|
+
require 'cocoapods'
|
5
|
+
require 'fileutils'
|
6
|
+
require 'plist'
|
7
|
+
|
8
|
+
module CocoapodsHooks
|
9
|
+
|
10
|
+
PLIST_PATH = Dir.pwd + '/AddxAi/AppConfig/ProjectConfig.plist'
|
11
|
+
# 注册 pod install 钩子
|
12
|
+
Pod::HooksManager.register('cocoapods-hooks', :pre_install) do |installer|
|
13
|
+
p "cocoapods-plugin-hooks, hooks pre_install"
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
Pod::HooksManager.register('cocoapods-hooks', :post_install) do |installer|
|
18
|
+
p "cocoapods-plugin-hooks, hooks post_install"
|
19
|
+
end
|
20
|
+
|
21
|
+
Pod::HooksManager.register('cocoapods-hooks', :source_provider) do |context|
|
22
|
+
p "cocoapods-plugin-hooks, hooks source_provider"
|
23
|
+
end
|
24
|
+
|
25
|
+
Pod::HooksManager.register('cocoapods-hooks', :pre_integrate) do |context|
|
26
|
+
p "cocoapods-plugin-hooks, hooks pre_integrate"
|
27
|
+
end
|
28
|
+
|
29
|
+
Pod::HooksManager.register('cocoapods-hooks', :post_integrate) do |context|
|
30
|
+
p "cocoapods-plugin-hooks, hooks post_integrate"
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
data/lib/dsl.rb
ADDED
data/lib/install.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
module Pod
|
2
|
+
class Command
|
3
|
+
class Install
|
4
|
+
|
5
|
+
alias_method :original_initialize, :initialize
|
6
|
+
|
7
|
+
def initialize(argv)
|
8
|
+
options = remove_from_argv(argv, 'user-defined-')
|
9
|
+
update_podfile(options)
|
10
|
+
original_initialize(argv)
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def remove_from_argv(argv, key)
|
16
|
+
options = filter_by_key(argv.options, key)
|
17
|
+
options.keys.each { |k| argv.option("#{key}#{k}") }
|
18
|
+
options
|
19
|
+
end
|
20
|
+
|
21
|
+
def filter_by_key(options, key)
|
22
|
+
filtered_options = {}
|
23
|
+
options.each do |(k, v)|
|
24
|
+
if v == 'true' then v = true
|
25
|
+
elsif v == 'false' then v = false
|
26
|
+
end
|
27
|
+
filtered_options[k.gsub(key, '').to_sym] = v if k.include?(key)
|
28
|
+
end
|
29
|
+
filtered_options
|
30
|
+
end
|
31
|
+
|
32
|
+
def update_podfile(options)
|
33
|
+
Pod::Podfile::DSL.user_defined_options = options
|
34
|
+
end
|
35
|
+
|
36
|
+
class << self
|
37
|
+
alias_method :original_options, :options
|
38
|
+
|
39
|
+
def options
|
40
|
+
new_option = [['--user-defined-{key}=value', 'Adds user defined flags that can be accessed inside the Podfile']]
|
41
|
+
original_options.concat(new_option)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
metadata
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cocoapods-hooks
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- huafeng
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-05-18 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: '1.3'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
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
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: plist
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: A short description of cocoapods-hooks.
|
56
|
+
email:
|
57
|
+
- hm@a4x.io
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- lib/cocoapods-hooks.rb
|
63
|
+
- lib/cocoapods-hooks/command.rb
|
64
|
+
- lib/cocoapods-hooks/command/change_color.rb
|
65
|
+
- lib/cocoapods-hooks/command/fastlane_sign.rb
|
66
|
+
- lib/cocoapods-hooks/command/git_clone.rb
|
67
|
+
- lib/cocoapods-hooks/command/hooks.rb
|
68
|
+
- lib/cocoapods-hooks/command/oem_config.rb
|
69
|
+
- lib/cocoapods-hooks/gem_version.rb
|
70
|
+
- lib/cocoapods_plugin.rb
|
71
|
+
- lib/dsl.rb
|
72
|
+
- lib/install.rb
|
73
|
+
homepage: https://github.com/EXAMPLE/cocoapods-hooks
|
74
|
+
licenses:
|
75
|
+
- MIT
|
76
|
+
metadata: {}
|
77
|
+
post_install_message:
|
78
|
+
rdoc_options: []
|
79
|
+
require_paths:
|
80
|
+
- lib
|
81
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
requirements: []
|
92
|
+
rubygems_version: 3.4.12
|
93
|
+
signing_key:
|
94
|
+
specification_version: 4
|
95
|
+
summary: A longer description of cocoapods-hooks.
|
96
|
+
test_files: []
|