class Pod::Command::Bin::Auto

Public Class Methods

new(argv) click to toggle source
Calls superclass method Pod::Command::Bin::new
# File lib/cocoapods-lhj-bin/command/bin/auto.rb, line 26
def initialize(argv)

  @env = argv.option('env') || 'dev'
  CBin.config.set_configuration_env(@env)

  @podspec = argv.shift_argument || find_podspec
  @specification = Specification.from_file(@podspec)

  @code_dependencies = argv.flag?('code-dependencies')
  @allow_prerelease = argv.flag?('allow-prerelease')
  @framework_output = argv.flag?('framework-output', false)
  @clean = argv.flag?('clean', true)
  @zip = argv.flag?('zip', true)
  @all_make = argv.flag?('all-make', false)
  @verbose = argv.flag?('verbose', true)

  @config = argv.option('configuration', 'Debug')
  @additional_args = argv.remainder!

  super
end
options() click to toggle source
Calls superclass method
# File lib/cocoapods-lhj-bin/command/bin/auto.rb, line 13
def self.options
  [
      ['--code-dependencies', '使用源码依赖'],
      ['--allow-prerelease', '允许使用 prerelease 的版本'],
      ['--no-clean', '保留构建中间产物'],
      ['--framework-output', '输出framework文件'],
      ['--no-zip', '不压缩静态 framework 为 zip'],
      ['--all-make', '对该组件的依赖库,全部制作为二进制组件'],
      ['--configuration', 'Build the specified configuration (e.g. Release ). Defaults to Debug'],
      ['--env', "该组件上传的环境 %w[dev debug_iphoneos release_iphoneos]"]
  ].concat(Pod::Command::Gen.options).concat(super).uniq
end

Public Instance Methods

binary_podsepc_json() click to toggle source
# File lib/cocoapods-lhj-bin/command/bin/auto.rb, line 137
def binary_podsepc_json
  "#{@specification.name}.binary.podspec.json"
end
binary_template_podsepc() click to toggle source
# File lib/cocoapods-lhj-bin/command/bin/auto.rb, line 141
def binary_template_podsepc
  "#{@specification.name}.binary-template.podspec"
end
code_podsepc_extname() click to toggle source
# File lib/cocoapods-lhj-bin/command/bin/auto.rb, line 133
def code_podsepc_extname
  '.podsepc'
end
find_podspec() click to toggle source

Dir.glob 可替代

# File lib/cocoapods-lhj-bin/command/bin/auto.rb, line 179
def find_podspec
  name = nil
  Pathname.pwd.children.each do |child|
    puts child
    if File.file?(child)
      if child.extname == '.podspec'
          name = File.basename(child)
          unless name.include?("binary-template")
            return name
          end
      end
    end
  end
  return name
end
run() click to toggle source
# File lib/cocoapods-lhj-bin/command/bin/auto.rb, line 53
def run
  @specification = Specification.from_file(@podspec)

  source_specs = run_archive

  fail_push_specs = []
  source_specs.uniq.each do |spec|
    begin
      fail_push_specs << spec unless CBin::Upload::Helper.new(spec, @code_dependencies, @sources).upload
    rescue Object => exception
      UI.puts exception
      fail_push_specs << spec
    end
  end

  if fail_push_specs.any?
    fail_push_specs.uniq.each do |spec|
      UI.warn "【#{spec.name} | #{spec.version}】组件spec push失败 ."
    end
  end

  success_specs = source_specs - fail_push_specs
  if success_specs.any?
    auto_success = ""
    success_specs.uniq.each do |spec|
      auto_success += "#{spec.name} | #{spec.version}\n"
      UI.warn "===【 #{spec.name} | #{spec.version} 】二进制组件制作完成 !!! "
    end
    puts "==============  auto_success"
    puts auto_success
    ENV['auto_success'] = auto_success
  end
  #pod repo update
  UI.section("\nUpdating Spec Repositories\n".yellow) do
    Pod::Command::Bin::Repo::Update.new(CLAide::ARGV.new([])).run
  end

end
run_archive() click to toggle source

制作二进制包

# File lib/cocoapods-lhj-bin/command/bin/auto.rb, line 94
def run_archive
  argvs = [
      "--sources=#{sources_option(@code_dependencies, @sources)},https:\/\/cdn.cocoapods.org",
      @additional_args
  ]

  argvs << spec_file if spec_file
  argvs.delete(Array.new)

  unless @clean
    argvs += ['--no-clean']
  end
  if @code_dependencies
    argvs += ['--code-dependencies']
  end
  if @verbose
    argvs += ['--verbose']
  end
  if @allow_prerelease
    argvs += ['--allow-prerelease']
  end
  if @framework_output
    argvs += ['--framework-output']
  end
  if @all_make
    argvs += ['--all-make']
  end
  if @env
    argvs += ["--env=#{@env}"]
  end
  argvs += ["--configuration=#{@config}"]

  archive = Pod::Command::Bin::Archive.new(CLAide::ARGV.new(argvs))
  archive.validate!
  source_specs = archive.run
  source_specs
end
spec_file() click to toggle source
# File lib/cocoapods-lhj-bin/command/bin/auto.rb, line 155
def spec_file
  @spec_file ||= begin
                   if @podspec
                     find_spec_file(@podspec) || @podspec
                   else
                     if code_spec_files.empty?
                       raise Informative, '当前目录下没有找到可用源码 podspec.'
                     end

                     spec_file = if @binary
                                   code_spec = Pod::Specification.from_file(code_spec_files.first)
                                   if template_spec_file
                                     template_spec = Pod::Specification.from_file(template_spec_file)
                                   end
                                   create_binary_spec_file(code_spec, template_spec)
                                 else
                                   code_spec_files.first
                                 end
                     spec_file
                   end
                 end
end
template_spec_file() click to toggle source
# File lib/cocoapods-lhj-bin/command/bin/auto.rb, line 145
def template_spec_file
  @template_spec_file ||= begin
                            if @template_podspec
                              find_spec_file(@template_podspec)
                            else
                              binary_template_spec_file
                            end
                          end
end
validate!() click to toggle source
Calls superclass method Pod::Command::Bin#validate!
# File lib/cocoapods-lhj-bin/command/bin/auto.rb, line 48
def validate!
  help! "未找到 podspec文件" unless @podspec
  super
end