自己动手做Cocoapods command

244 阅读2分钟

创建工程

类似于使用cocoapods创建私有库的步骤,首先使用命令bundle gem cocoapods-dog创建工程

image.png

可以看到文件目录如上图所示,lib文件夹就是我们应该写代码的位置,但是这里有问题需要修改

修改点:

  • cocoapods文件夹更名为cocoapods-dog
  • dog文件夹更名为command
  • version.rb文件移至上层文件夹

修改后应当为下图

image.png

现在看到一个配置文件gemspec,类似于制作私有库时podspec文件一样,同样里面有一些对此工程的描述信息还有工程依赖等等

image.png

现在开始检验上述操作是否可行,也就是工程能否正常运行,这里通过spec文件进行测试,这里也相当于是一个测试文件,但是要注意直接生成的文件中模块名称有问题需要修改

image.png

这时使用命令rspec ./spec/cocoapods/dog_spec.rb运行这个测试文件,运行成功

image.png

使用VSCODE来运行

刚才是利用类似于单元测试的方法来确认工程是否可用,但我们的目的是制作插件,所以这里开始进入正题,如何使用VSCODE来进行debug,同样这里需要首先配置launch.json

image.png

这里是使用launch.json来执行命令,并传递参数hahaha,在bin文件目录下创建dog文件,就是暴露出来的命令,使用dog文件来调用dog.rb脚本

image.png

那么运行成功后应当是先打印出参数hahaha,之后调用CocoapodsDog模块中Dog类的类方法run,接下来来看dog.rb脚本中的内容

image.png

那么根据上图来看,程序运行后应当先打印hahaha之后打印汪汪,接下来看运行结果与预期一致,成功

image.png

使用pod命令来调用

刚才已经用VSCode调试成功了,现在考虑做成插件的形式,注意文件目录如下

image.png

cocoapods_plugin文件中引入添加的命令,cocoapods是将继承自command的子类存储为key-value的形式,那么我们要自己添加命令的话也需要继承自command并实现run方法

image.png

此时使用命令rake install:local把这个库安装到本地

image.png

同时可以查看到这个库的信息

image.png

这时调用命令pod dog发现调用成功

image.png