研究 pod lib create 是如果完成创建 cocoaPods 工程的。
Example:
$ pod lib create WFT-social --template-url=/Users/Bell/Documents/Gitlab/pod-template/.git
bundle install
安装所有依赖
lib.rb
的完整路径lib/cocoapods/command/lib.rb
。是实现pod lib create
的文件目录.会执行下面命令。
clone --template-url
对应的 repo 到本地
调用 pod-template/configure
打印结果
核心文件
├── configure
├── setup
│ ├── ConfigureSwift.rb
│ ├── ConfigureiOS.rb
│ ├── MessageBank.rb
│ ├── ProjectManipulator.rb
│ ├── TemplateConfigurator.rb
Pod::TemplateConfigurator.new(pod_name).run
调用 pod-template/setup/TemplateConfigurator.rb
的 run
方法
配置工程
run 方法定义了配置工程的所有步骤
def run
@message_bank.welcome_message
framework = self.ask_with_answers("What language do you want to use?", ["ObjC", "Swift"]).to_sym
case framework
when :swift
ConfigureSwift.perform(configurator: self)
when :objc
ConfigureIOS.perform(configurator: self)
end
replace_variables_in_files
clean_template_files
rename_template_files
add_pods_to_podfile
customise_prefix
ensure_carthage_compatibility
reinitialize_git_repo
run_pod_install
@message_bank.farewell_message
end
修改文件里的变量
删除临时文件
修改文件名
修改Podfile
修改 .pch
文件
创建软链接
重新初始化git
运行 pod install
配置 objc 工程
Pod::ProjectManipulator.new({
:configurator => @configurator,
:xcodeproj_path => "templates/ios/Example/PROJECT.xcodeproj",
:platform => :ios,
:remove_demo_project => (keep_demo == :no),
:prefix => prefix,
:pod_organization => organization
}).run
修改工程文件里的变量
def run
@string_replacements = {
"PROJECT_OWNER" => @configurator.user_name,
"TODAYS_DATE" => @configurator.date,
"TODAYS_YEAR" => @configurator.year,
"PROJECT" => @configurator.pod_name,
"CPD" => @prefix,
"POD_ORGANIZATION" => @pod_organization,
}
replace_internal_project_settings
@project = Xcodeproj::Project.open(@xcodeproj_path)
add_podspec_metadata
remove_demo_project if @remove_demo_target
@project.save
rename_files
rename_project_folder
end
修改工程文件里的变量