class Pod::Command::Bin::Repo::Push

Public Class Methods

new(argv) click to toggle source
Calls superclass method Pod::Command::Bin::new
# File lib/cocoapods-bin/command/bin/repo/push.rb, line 31
def initialize(argv)
  @podspec = argv.shift_argument
  @binary = argv.flag?('binary')
  @loose_options = argv.flag?('loose-options')
  @code_dependencies = argv.flag?('code-dependencies')
  @sources = argv.option('sources') || []
  @reserve_created_spec = argv.flag?('reserve-created-spec')
  @template_podspec = argv.option('template-podspec')
  @allow_prerelease = argv.flag?('allow-prerelease')
  super

  @additional_args = argv.remainder!
end
options() click to toggle source
Calls superclass method
# File lib/cocoapods-bin/command/bin/repo/push.rb, line 20
def self.options
  [
    ['--binary', '发布组件的二进制版本'],
    ['--template-podspec=A.binary-template.podspec', '生成拥有 subspec 的二进制 spec 需要的模版 podspec, 插件会更改 version 和 source'],
    ['--reserve-created-spec', '保留生成的二进制 spec 文件'],
    ['--code-dependencies', '使用源码依赖进行 lint'],
    ['--loose-options', '添加宽松的 options, 包括 --use-libraries (可能会造成 entry point (start) undefined)'],
    ['--allow-prerelease', '允许使用 prerelease 的版本 lint']
  ].concat(Pod::Command::Repo::Push.options).concat(super).uniq
end

Public Instance Methods

run() click to toggle source
# File lib/cocoapods-bin/command/bin/repo/push.rb, line 45
def run
  Podfile.execute_with_bin_plugin do
    Podfile.execute_with_allow_prerelease(@allow_prerelease) do
      Podfile.execute_with_use_binaries(!@code_dependencies) do
        argvs = [
          repo,
          "--sources=#{sources_option(@code_dependencies, @sources)}",
          *@additional_args
        ]

        argvs << spec_file if spec_file

        if @loose_options
          argvs += ['--allow-warnings', '--use-json']
          if code_spec&.all_dependencies&.any?
            argvs << '--use-libraries'
          end
        end

        push = Pod::Command::Repo::Push.new(CLAide::ARGV.new(argvs))
        push.validate!
        push.run
      end
    end
  end
ensure
  clear_binary_spec_file_if_needed unless @reserve_created_spec
end

Private Instance Methods

repo() click to toggle source
# File lib/cocoapods-bin/command/bin/repo/push.rb, line 109
def repo
  @binary ? binary_source.name : code_source.name
end
spec_file() click to toggle source
# File lib/cocoapods-bin/command/bin/repo/push.rb, line 86
def spec_file
  @spec_file ||= begin
    if @podspec
      find_spec_file(@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-bin/command/bin/repo/push.rb, line 76
def template_spec_file
  @template_spec_file ||= begin
    if @template_podspec
      find_spec_file(@template_podspec)
    else
      binary_template_spec_file
    end
  end
end