美文网首页
cocoapods源码2 - cocoapods.rb

cocoapods源码2 - cocoapods.rb

作者: xiongzenghui | 来源:发表于2018-08-11 16:30 被阅读15次

    该rb文件主要完成:

    • 1、require cocoapods依赖的rb文件
    • 2、错误信息
    • 3、autoload使用module关联后续被require的rb文件
    require 'rubygems'
    require 'xcodeproj'
    
    # It is very likely that we'll need these and as some of those paths will atm
    # result in a I18n deprecation warning, we load those here now so that we can
    # get rid of that warning.
    require 'active_support/core_ext/string/strip'
    require 'active_support/core_ext/string/inflections'
    require 'active_support/core_ext/array/conversions'
    # TODO: check what this actually does by the time we're going to add support for
    # other locales.
    require 'i18n'
    if I18n.respond_to?(:enforce_available_locales=)
      I18n.enforce_available_locales = false
    end
    
    module Pod
      # 1、
      require 'pathname'
      require 'tmpdir'
    
      # 2、导入依赖的cocoapods rb文件
      require 'cocoapods/gem_version'
      require 'cocoapods-core'
      require 'cocoapods/config'
      require 'cocoapods/downloader'
      # Loaded immediately after dependencies to ensure proper override of their
      # UI methods.
      require 'cocoapods/user_interface'
    
      # 2、Indicates an user error. This is defined in cocoapods-core.
      class Informative < PlainInformative
        def message
          "[!] #{super}".red
        end
      end
    
      # 3、Xcodeproj::PlainInformative.include(CLAide::InformativeError)
      Xcodeproj::PlainInformative.send(:include, CLAide::InformativeError)
    
      # 4、autoload(module, filename) 
      # - 1)将module与filename关联起来
      # - 2)当第一次使用module时,使用require加载对应的rb文件
      # - 3)执行过程与require一样
      # - 4)成功返回nil,找不到文件会抛出LoadError
      # - 5)通过 Pod::module => 访问被关联的 filename rb文件
      #   => Pod::Command => require('cocoapods/command') => cocoapods/command.rb
      autoload :AggregateTarget,           'cocoapods/target/aggregate_target'
      autoload :Command,                   'cocoapods/command'
      autoload :Deintegrator,              'cocoapods_deintegrate'
      autoload :Executable,                'cocoapods/executable'
      autoload :ExternalSources,           'cocoapods/external_sources'
      autoload :Installer,                 'cocoapods/installer'
      autoload :HooksManager,              'cocoapods/hooks_manager'
      autoload :PodTarget,                 'cocoapods/target/pod_target'
      autoload :Project,                   'cocoapods/project'
      autoload :Resolver,                  'cocoapods/resolver'
      autoload :Sandbox,                   'cocoapods/sandbox'
      autoload :Target,                    'cocoapods/target'
      autoload :Validator,                 'cocoapods/validator'
    
      # 5、继续定义module,专门关联右侧rb文件
      module Generator
        autoload :Acknowledgements,        'cocoapods/generator/acknowledgements'
        autoload :Markdown,                'cocoapods/generator/acknowledgements/markdown'
        autoload :Plist,                   'cocoapods/generator/acknowledgements/plist'
        autoload :BridgeSupport,           'cocoapods/generator/bridge_support'
        autoload :Constant,                'cocoapods/generator/constant'
        autoload :CopyResourcesScript,     'cocoapods/generator/copy_resources_script'
        autoload :DummySource,             'cocoapods/generator/dummy_source'
        autoload :EmbedFrameworksScript,   'cocoapods/generator/embed_frameworks_script'
        autoload :Header,                  'cocoapods/generator/header'
        autoload :InfoPlistFile,           'cocoapods/generator/info_plist_file'
        autoload :ModuleMap,               'cocoapods/generator/module_map'
        autoload :PrefixHeader,            'cocoapods/generator/prefix_header'
        autoload :UmbrellaHeader,          'cocoapods/generator/umbrella_header'
        autoload :AppTargetHelper,         'cocoapods/generator/app_target_helper'
      end
    
      # 6、
      require 'cocoapods/core_overrides'
    end
    

    相关文章

      网友评论

          本文标题:cocoapods源码2 - cocoapods.rb

          本文链接:https://www.haomeiwen.com/subject/sipdbftx.html