require 'cocoapods-tdfire-binary/binary_state_store' module Pod class Command class Binary < Command class Lint < Binary self.abstract_command = false self.summary = '对本地二进制进行 Lint' self.description = <<-DESC 对本地二进制进行 Lint DESC def self.options [ ['--sources', '私有源地址'], ['--clean', '执行成功后,删除 zip 文件外的所有生成文件'], ].concat(super) end def initialize(argv) @clean = argv.flag?('clean') @sources = argv.option('sources') @spec_file = first_podspec @spec_name = @spec_file.split('/').last.split('.').first unzip_framework super end def validate! super help! '当前目录下没有podspec文件.' if @spec_file.nil? framework = "#{@spec_name}.framework" help! "当前目录下没有#{framework}文件" unless File.exist?(framework) end def unzip_framework framework = "#{@spec_name}.framework" zip_name = "#{framework}.zip" if File.exist?(zip_name) && !File.exist?("#{@spec_name}.framework") system "unzip #{zip_name}" end end def run Tdfire::BinaryStateStore.lib_lint_binary_pod = @spec_name argvs = [ "--sources=#{@sources || Tdfire::BinaryUrlManager.private_cocoapods_url}", '--allow-warnings', '--use-libraries', '--verbose' ] lint= Pod::Command::Lib::Lint.new(CLAide::ARGV.new(argvs)) lint.validate! lint.run Tdfire::BinaryStateStore.lib_lint_binary_pod = nil system "rm -fr #{@spec_name}.framework " if @clean end end end end end