Skip to content
This repository was archived by the owner on Feb 21, 2025. It is now read-only.
Whirlwind edited this page Sep 21, 2022 · 1 revision

开发自己的依赖管理工具

与开发标准插件类似,依赖 MBoxContainerMBoxDependencyManager,需要 Hook 三个方法,以 MBoxRuby 添加 Bundler 依赖为例:

// 添加依赖管理工具 Bundler
extensionMBDependencyTool{publicstaticletBundler=MBDependencyTool("Bundler")@_dynamicReplacement(for: allTools)publicstaticvarruby_allTools:[MBDependencyTool]{vartools=self.allTools
tools.insert(.Bundler, at:0)return tools
}}extensionMBWorkRepo{
// 添加对 Bundler 容器的识别
@_dynamicReplacement(for:fetchContainers())openfunc ruby_fetchContainers()->[MBContainer]{varvalue=self.fetchContainers()ifself.path.appending(pathComponent:"Gemfile").isExists {
value.append(MBContainer(name:self.name, tool:.Bundler))}return value
}
// 添加对 Bundler 组件的识别
@_dynamicReplacement(for:resolveDependencyNames())openfunc ruby_resolveDependencyNames()->[(tool:MBDependencyTool, name:String)]{varnames=self.resolveDependencyNames()
// allGemspecPaths 方法获取仓库下所有 gemspec 文件
letdata=self.allGemspecPaths().map{(
tool:MBDependencyTool.Bundler,
name: $0.lastPathComponent.fileName
)}
names.append(contentsOf: data)return names
}}

Clone this wiki locally