fir-cli 1.5.1 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.gitignore +2 -0
 - data/.travis.yml +19 -16
 - data/doc/build_ipa.md +9 -0
 - data/fir-cli.gemspec +1 -0
 - data/lib/fir/cli.rb +5 -3
 - data/lib/fir/util/build_ipa.rb +110 -30
 - data/lib/fir/util/config.rb +1 -0
 - data/lib/fir/version.rb +1 -1
 - data/lib/fir/xcode_wrapper.sh +29 -0
 - metadata +18 -3
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 273a3d4a1727d563e204dbdad7fc16e6c9763c08
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: dcd37c2d1bba37d0bbb5f770b9aaaede8cb37eef
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: a9ac2d63c1d9fe1ec682a17a94964dd6a7460b90b2b70a5a8d10047bb1abf307ce6fd18bf952593bdd6e55cc45d0a5296114dd78292b2328ff1f7d9aaeb616b3
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 021bdb6ed3dfd98aed9941eef21569cfb466e1c8a63a37a115052d366cade76432f0fca3ccd4a2e79935d9507c47f0b62ceebf147ce066ca59df1fd2f047bd8b
         
     | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/.travis.yml
    CHANGED
    
    | 
         @@ -1,28 +1,31 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            rvm:
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
      
 2 
     | 
    
         
            +
            - 1.9.2
         
     | 
| 
      
 3 
     | 
    
         
            +
            - 1.9.3
         
     | 
| 
      
 4 
     | 
    
         
            +
            - 2.0.0
         
     | 
| 
      
 5 
     | 
    
         
            +
            - 2.1
         
     | 
| 
      
 6 
     | 
    
         
            +
            - 2.2
         
     | 
| 
      
 7 
     | 
    
         
            +
            - 2.3
         
     | 
| 
      
 8 
     | 
    
         
            +
            - ruby-head
         
     | 
| 
      
 9 
     | 
    
         
            +
            - rbx-2
         
     | 
| 
      
 10 
     | 
    
         
            +
            - jruby
         
     | 
| 
      
 11 
     | 
    
         
            +
            - jruby-head
         
     | 
| 
       12 
12 
     | 
    
         
             
            matrix:
         
     | 
| 
       13 
13 
     | 
    
         
             
              allow_failures:
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
      
 14 
     | 
    
         
            +
              - rvm: ruby-head
         
     | 
| 
      
 15 
     | 
    
         
            +
              - rvm: jruby
         
     | 
| 
      
 16 
     | 
    
         
            +
              - rvm: jruby-head
         
     | 
| 
      
 17 
     | 
    
         
            +
              - rvm: rbx-2
         
     | 
| 
       18 
18 
     | 
    
         
             
            env:
         
     | 
| 
      
 19 
     | 
    
         
            +
              matrix:
         
     | 
| 
       19 
20 
     | 
    
         
             
              - USE_OFFICIAL_GEM_SOURCE=true
         
     | 
| 
      
 21 
     | 
    
         
            +
              global:
         
     | 
| 
      
 22 
     | 
    
         
            +
                secure: XiWKHPcQNB/mGv8Q5VuBqETS1bmYZ3t5xJkR/JFHrhWi30O+QWulMM5YjzkVawPjpUS/rtefDEASc4bN+a1iRVi6kf8fxjeKNFAzNc/hEKiPgANELf1JJgGAcz4oygzrH94Vqj90fuf6DoUh9r+IO+Z0PF39GL9GCnUjJeg+zao=
         
     | 
| 
       20 
23 
     | 
    
         
             
            notifications:
         
     | 
| 
       21 
24 
     | 
    
         
             
              recipients:
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
      
 25 
     | 
    
         
            +
              - hxy@fir.im
         
     | 
| 
       23 
26 
     | 
    
         
             
            branches:
         
     | 
| 
       24 
27 
     | 
    
         
             
              only:
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
      
 28 
     | 
    
         
            +
              - master
         
     | 
| 
       26 
29 
     | 
    
         
             
            addons:
         
     | 
| 
       27 
30 
     | 
    
         
             
              code_climate:
         
     | 
| 
       28 
31 
     | 
    
         
             
                repo_token: 7158bd5d0218441524b8663790dd28edba8a870387ed000a1b56968e3315af2a
         
     | 
    
        data/doc/build_ipa.md
    CHANGED
    
    | 
         @@ -15,6 +15,8 @@ Options: 
     | 
|
| 
       15 
15 
     | 
    
         
             
              -C, [--configuration=CONFIGURATION]  # Use the build configuration NAME for building each target
         
     | 
| 
       16 
16 
     | 
    
         
             
              -d, [--destination=DESTINATION]      # Set the destinationspecifier
         
     | 
| 
       17 
17 
     | 
    
         
             
              -t, [--target=TARGET]                # Build the target specified by targetname
         
     | 
| 
      
 18 
     | 
    
         
            +
              -E, [--export_method=METHOD]         # for exportOptionsPlist method, ad-hoc as default
         
     | 
| 
      
 19 
     | 
    
         
            +
              -O, [--optionPlistPath]              # User defined exportOptionsPlist path
         
     | 
| 
       18 
20 
     | 
    
         
             
              -f, [--profile=PROFILE]              # Set the export provisioning profile
         
     | 
| 
       19 
21 
     | 
    
         
             
              -o, [--output=OUTPUT]                # IPA output path, the default is: BUILD_DIR/fir_build_ipa
         
     | 
| 
       20 
22 
     | 
    
         
             
              -p, [--publish], [--no-publish]      # true/false if publish to fir.im
         
     | 
| 
         @@ -55,3 +57,10 @@ Options: 
     | 
|
| 
       55 
57 
     | 
    
         
             
              ```sh
         
     | 
| 
       56 
58 
     | 
    
         
             
              $ fir build_ipa path/to/workspace -w -S <scheme name>
         
     | 
| 
       57 
59 
     | 
    
         
             
              ```
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
            ChangeLog 1.6.0
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
            - 支持 XCode 8.3 打包      
         
     | 
| 
      
 65 
     | 
    
         
            +
             * 新增参数 -E,指定 exportOptionsPlist plist 文件中的方法, 默认为 ad-hoc
         
     | 
| 
      
 66 
     | 
    
         
            +
             * 用户可自定义 -exportOptionsPlist 中的 plist 路径
         
     | 
    
        data/fir-cli.gemspec
    CHANGED
    
    
    
        data/lib/fir/cli.rb
    CHANGED
    
    | 
         @@ -29,13 +29,15 @@ module FIR 
     | 
|
| 
       29 
29 
     | 
    
         
             
                method_option :workspace,     type: :boolean, aliases: '-w', desc: 'true/false if build workspace'
         
     | 
| 
       30 
30 
     | 
    
         
             
                method_option :scheme,        type: :string,  aliases: '-S', desc: 'Set the scheme NAME if build workspace'
         
     | 
| 
       31 
31 
     | 
    
         
             
                method_option :configuration, type: :string,  aliases: '-C', desc: 'Use the build configuration NAME for building each target'
         
     | 
| 
       32 
     | 
    
         
            -
                method_option :destination,   type: :string,  aliases: '-d', desc: 'Set the  
     | 
| 
       33 
     | 
    
         
            -
                method_option :target,        type: :string,  aliases: '-t', desc: 'Build the target specified by  
     | 
| 
      
 32 
     | 
    
         
            +
                method_option :destination,   type: :string,  aliases: '-d', desc: 'Set the destination specifier'
         
     | 
| 
      
 33 
     | 
    
         
            +
                method_option :target,        type: :string,  aliases: '-t', desc: 'Build the target specified by target name'
         
     | 
| 
      
 34 
     | 
    
         
            +
                method_option :export_method, type: :string,  aliases: '-E', desc: 'for exportOptionsPlist method, ad-hoc as default'
         
     | 
| 
      
 35 
     | 
    
         
            +
                method_option :optionPlistPath, type: :string,  aliases: '-O', desc: 'User defined exportOptionsPlist path'
         
     | 
| 
       34 
36 
     | 
    
         
             
                method_option :profile,       type: :string,  aliases: '-f', desc: 'Set the export provisioning profile'
         
     | 
| 
       35 
37 
     | 
    
         
             
                method_option :output,        type: :string,  aliases: '-o', desc: 'IPA output path, the default is: BUILD_DIR/fir_build_ipa'
         
     | 
| 
       36 
38 
     | 
    
         
             
                method_option :publish,       type: :boolean, aliases: '-p', desc: 'true/false if publish to fir.im'
         
     | 
| 
       37 
39 
     | 
    
         
             
                method_option :short,         type: :string,  aliases: '-s', desc: 'Set custom short link if publish to fir.im'
         
     | 
| 
       38 
     | 
    
         
            -
                method_option :name,          type: :string,  aliases: '-n', desc: 'Set custom ipa name when  
     | 
| 
      
 40 
     | 
    
         
            +
                method_option :name,          type: :string,  aliases: '-n', desc: 'Set custom ipa name when built'
         
     | 
| 
       39 
41 
     | 
    
         
             
                method_option :changelog,     type: :string,  aliases: '-c', desc: 'Set changelog if publish to fir.im'
         
     | 
| 
       40 
42 
     | 
    
         
             
                method_option :qrcode,        type: :boolean, aliases: '-Q', desc: 'Generate qrcode'
         
     | 
| 
       41 
43 
     | 
    
         
             
                method_option :mapping,       type: :boolean, aliases: '-M', desc: 'true/false if upload app mapping file to BugHD.com'
         
     | 
    
        data/lib/fir/util/build_ipa.rb
    CHANGED
    
    | 
         @@ -1,4 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # encoding: utf-8
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'xcodeproj'
         
     | 
| 
       2 
3 
     | 
    
         | 
| 
       3 
4 
     | 
    
         
             
            module FIR
         
     | 
| 
       4 
5 
     | 
    
         
             
              module BuildIpa
         
     | 
| 
         @@ -7,7 +8,7 @@ module FIR 
     | 
|
| 
       7 
8 
     | 
    
         
             
                  initialize_build_common_options(args, options)
         
     | 
| 
       8 
9 
     | 
    
         | 
| 
       9 
10 
     | 
    
         
             
                  @build_tmp_dir = Dir.mktmpdir
         
     | 
| 
       10 
     | 
    
         
            -
                  @build_cmd 
     | 
| 
      
 11 
     | 
    
         
            +
                  @build_cmd = initialize_ipa_build_cmd(args, options)
         
     | 
| 
       11 
12 
     | 
    
         | 
| 
       12 
13 
     | 
    
         
             
                  logger_info_and_run_build_command
         
     | 
| 
       13 
14 
     | 
    
         | 
| 
         @@ -22,17 +23,32 @@ module FIR 
     | 
|
| 
       22 
23 
     | 
    
         | 
| 
       23 
24 
     | 
    
         
             
                def initialize_ipa_build_cmd(args, options)
         
     | 
| 
       24 
25 
     | 
    
         
             
                  @configuration = options[:configuration]
         
     | 
| 
       25 
     | 
    
         
            -
                  @target_name 
     | 
| 
       26 
     | 
    
         
            -
                  @scheme_name 
     | 
| 
       27 
     | 
    
         
            -
                  @profile_name 
     | 
| 
       28 
     | 
    
         
            -
                  @destination 
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                   
     | 
| 
      
 26 
     | 
    
         
            +
                  @target_name = options[:target]
         
     | 
| 
      
 27 
     | 
    
         
            +
                  @scheme_name = options[:scheme]
         
     | 
| 
      
 28 
     | 
    
         
            +
                  @profile_name = options[:profile]
         
     | 
| 
      
 29 
     | 
    
         
            +
                  @destination = options[:destination]
         
     | 
| 
      
 30 
     | 
    
         
            +
                  @export_method = options[:export_method] || 'ad-hoc'
         
     | 
| 
      
 31 
     | 
    
         
            +
                  @optionPlistPath = options[:optionPlistPath]
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                  build_cmd = 'xcodebuild archive -sdk iphoneos'
         
     | 
| 
       31 
34 
     | 
    
         
             
                  build_cmd += initialize_xcode_build_path(options)
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                  build_settings = find_build_setting
         
     | 
| 
      
 37 
     | 
    
         
            +
                  @team_id = build_settings['DEVELOPMENT_TEAM']
         
     | 
| 
      
 38 
     | 
    
         
            +
                  provisioning_profile_id = build_settings['PROVISIONING_PROFILE']
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                  check_ios_scheme(@scheme_name)
         
     | 
| 
      
 41 
     | 
    
         
            +
                  build_cmd += " -scheme '#{@scheme_name}'" unless @scheme_name.blank?
         
     | 
| 
       32 
42 
     | 
    
         
             
                  build_cmd += " -configuration '#{@configuration}'" unless @configuration.blank?
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
                  build_cmd += " - 
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                  # build_cmd += " -target '#{@target_name}'" unless @target_name.blank?
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                  # xcarchive name for build -exportArchive
         
     | 
| 
      
 47 
     | 
    
         
            +
                  @xcarchive_name = @scheme_name.nil? ? @target_name : @scheme_name + '.xcarchive'
         
     | 
| 
      
 48 
     | 
    
         
            +
                  @xcarchive_path = "#{@build_dir}/fir_build/#{@xcarchive_name}"
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                  build_cmd += " -archivePath #{@xcarchive_path}"
         
     | 
| 
      
 51 
     | 
    
         
            +
                  build_cmd += " PROVISIONING_PROFILE='#{provisioning_profile_id}'"
         
     | 
| 
       36 
52 
     | 
    
         
             
                  build_cmd += " #{ipa_custom_settings(args)} 2>&1"
         
     | 
| 
       37 
53 
     | 
    
         
             
                  build_cmd
         
     | 
| 
       38 
54 
     | 
    
         
             
                end
         
     | 
| 
         @@ -40,7 +56,7 @@ module FIR 
     | 
|
| 
       40 
56 
     | 
    
         
             
                def ipa_custom_settings(args)
         
     | 
| 
       41 
57 
     | 
    
         
             
                  custom_settings = split_assignment_array_to_hash(args)
         
     | 
| 
       42 
58 
     | 
    
         | 
| 
       43 
     | 
    
         
            -
                  setting_str = 
     | 
| 
      
 59 
     | 
    
         
            +
                  setting_str = convert_hash_to_assignment_string(custom_settings)
         
     | 
| 
       44 
60 
     | 
    
         
             
                  setting_str += " TARGET_BUILD_DIR='#{@build_tmp_dir}'" unless custom_settings['TARGET_BUILD_DIR']
         
     | 
| 
       45 
61 
     | 
    
         
             
                  setting_str += " CONFIGURATION_BUILD_DIR='#{@build_tmp_dir}'" unless custom_settings['CONFIGURATION_BUILD_DIR']
         
     | 
| 
       46 
62 
     | 
    
         
             
                  setting_str += " DWARF_DSYM_FOLDER_PATH='#{@output_path}'" unless custom_settings['DWARF_DSYM_FOLDER_PATH']
         
     | 
| 
         @@ -49,16 +65,15 @@ module FIR 
     | 
|
| 
       49 
65 
     | 
    
         | 
| 
       50 
66 
     | 
    
         
             
                def output_ipa_and_dsym
         
     | 
| 
       51 
67 
     | 
    
         
             
                  apps = Dir["#{@build_tmp_dir}/*.app"].sort_by(&:size)
         
     | 
| 
       52 
     | 
    
         
            -
                  check_no_output_app(apps)
         
     | 
| 
      
 68 
     | 
    
         
            +
                  # check_no_output_app(apps)
         
     | 
| 
       53 
69 
     | 
    
         | 
| 
       54 
70 
     | 
    
         
             
                  @temp_ipa = "#{@build_tmp_dir}/#{Time.now.to_i}.ipa"
         
     | 
| 
       55 
71 
     | 
    
         
             
                  archive_ipa(apps)
         
     | 
| 
       56 
72 
     | 
    
         | 
| 
       57 
     | 
    
         
            -
                  check_archived_ipa_is_exist
         
     | 
| 
      
 73 
     | 
    
         
            +
                  # check_archived_ipa_is_exist
         
     | 
| 
       58 
74 
     | 
    
         
             
                  rename_ipa_and_dsym
         
     | 
| 
       59 
75 
     | 
    
         | 
| 
       60 
76 
     | 
    
         
             
                  FileUtils.rm_rf(@build_tmp_dir) unless $DEBUG
         
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
77 
     | 
    
         
             
                  logger.info 'Build Success'
         
     | 
| 
       63 
78 
     | 
    
         
             
                end
         
     | 
| 
       64 
79 
     | 
    
         | 
| 
         @@ -66,7 +81,13 @@ module FIR 
     | 
|
| 
       66 
81 
     | 
    
         
             
                  logger.info 'Archiving......'
         
     | 
| 
       67 
82 
     | 
    
         
             
                  logger_info_dividing_line
         
     | 
| 
       68 
83 
     | 
    
         | 
| 
       69 
     | 
    
         
            -
                   
     | 
| 
      
 84 
     | 
    
         
            +
                  option_plist_path = @optionPlistPath || gen_option_plist
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
                  @xcrun_cmd = "#{FIR::Config::XCODE_WRAPPER_PATH} -exportArchive"
         
     | 
| 
      
 87 
     | 
    
         
            +
                  @xcrun_cmd += " -archivePath #{@xcarchive_path}"
         
     | 
| 
      
 88 
     | 
    
         
            +
                  @xcrun_cmd += " -exportOptionsPlist #{option_plist_path}"
         
     | 
| 
      
 89 
     | 
    
         
            +
                  @xcrun_cmd += " -exportPath #{@build_dir}/fir_build"
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
       70 
91 
     | 
    
         
             
                  puts @xcrun_cmd if $DEBUG
         
     | 
| 
       71 
92 
     | 
    
         
             
                  logger.info `#{@xcrun_cmd}`
         
     | 
| 
       72 
93 
     | 
    
         
             
                end
         
     | 
| 
         @@ -78,18 +99,80 @@ module FIR 
     | 
|
| 
       78 
99 
     | 
    
         
             
                  end
         
     | 
| 
       79 
100 
     | 
    
         
             
                end
         
     | 
| 
       80 
101 
     | 
    
         | 
| 
       81 
     | 
    
         
            -
                def  
     | 
| 
       82 
     | 
    
         
            -
                   
     | 
| 
       83 
     | 
    
         
            -
             
     | 
| 
      
 102 
     | 
    
         
            +
                def gen_option_plist
         
     | 
| 
      
 103 
     | 
    
         
            +
                  plist = "
         
     | 
| 
      
 104 
     | 
    
         
            +
            <plist version=\"1.0\">
         
     | 
| 
      
 105 
     | 
    
         
            +
            <dict>
         
     | 
| 
      
 106 
     | 
    
         
            +
                    <key>teamID</key>
         
     | 
| 
      
 107 
     | 
    
         
            +
                    <string>#{@team_id}</string>
         
     | 
| 
      
 108 
     | 
    
         
            +
                    <key>method</key>
         
     | 
| 
      
 109 
     | 
    
         
            +
                    <string>#{@export_method}</string>
         
     | 
| 
      
 110 
     | 
    
         
            +
                    <key>uploadSymbols</key>
         
     | 
| 
      
 111 
     | 
    
         
            +
                    <true/>
         
     | 
| 
      
 112 
     | 
    
         
            +
                    <key>compileBitcode</key>
         
     | 
| 
      
 113 
     | 
    
         
            +
                    <false/>
         
     | 
| 
      
 114 
     | 
    
         
            +
                    <key>uploadBitcode</key>
         
     | 
| 
      
 115 
     | 
    
         
            +
                    <false/>
         
     | 
| 
      
 116 
     | 
    
         
            +
            </dict>
         
     | 
| 
      
 117 
     | 
    
         
            +
            </plist>"
         
     | 
| 
      
 118 
     | 
    
         
            +
             
     | 
| 
      
 119 
     | 
    
         
            +
                  logger.info 'Generated plist file for exportOptionsPlist argument'
         
     | 
| 
      
 120 
     | 
    
         
            +
                  logger.info "{"
         
     | 
| 
      
 121 
     | 
    
         
            +
                  logger.info "  teamID:#{@team_id}" unless @team_id.nil?
         
     | 
| 
      
 122 
     | 
    
         
            +
                  logger.info "  method:#{@export_method}"
         
     | 
| 
      
 123 
     | 
    
         
            +
                  logger.info "  uploadSymbols:true"
         
     | 
| 
      
 124 
     | 
    
         
            +
                  logger.info "  uploadBitcode:false"
         
     | 
| 
      
 125 
     | 
    
         
            +
                  logger.info "}"
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
                  begin
         
     | 
| 
      
 128 
     | 
    
         
            +
                    plist_path = "#{@build_dir}/fir_build/exportOptions.plist"
         
     | 
| 
      
 129 
     | 
    
         
            +
                    file = File.open(plist_path, "w")
         
     | 
| 
      
 130 
     | 
    
         
            +
                    file.write(plist)
         
     | 
| 
      
 131 
     | 
    
         
            +
                    plist_path
         
     | 
| 
      
 132 
     | 
    
         
            +
                  rescue IOError => e
         
     | 
| 
      
 133 
     | 
    
         
            +
                    raise e
         
     | 
| 
      
 134 
     | 
    
         
            +
                  ensure
         
     | 
| 
      
 135 
     | 
    
         
            +
                    file.close unless file.nil?
         
     | 
| 
      
 136 
     | 
    
         
            +
                  end
         
     | 
| 
      
 137 
     | 
    
         
            +
                end
         
     | 
| 
      
 138 
     | 
    
         
            +
             
     | 
| 
      
 139 
     | 
    
         
            +
                # Find build setting from xcode project by target and configuration
         
     | 
| 
      
 140 
     | 
    
         
            +
                def find_build_setting
         
     | 
| 
      
 141 
     | 
    
         
            +
                  project = Xcodeproj::Project.open(@xc_project)
         
     | 
| 
       84 
142 
     | 
    
         | 
| 
      
 143 
     | 
    
         
            +
                  # find target
         
     | 
| 
      
 144 
     | 
    
         
            +
                  used_target = project.targets[0]
         
     | 
| 
      
 145 
     | 
    
         
            +
                  if @target_name
         
     | 
| 
      
 146 
     | 
    
         
            +
                    project.targets.each do |target|
         
     | 
| 
      
 147 
     | 
    
         
            +
                      if target.name == @target_name
         
     | 
| 
      
 148 
     | 
    
         
            +
                        used_target = target
         
     | 
| 
      
 149 
     | 
    
         
            +
                      end
         
     | 
| 
      
 150 
     | 
    
         
            +
                    end
         
     | 
| 
      
 151 
     | 
    
         
            +
                  end
         
     | 
| 
      
 152 
     | 
    
         
            +
             
     | 
| 
      
 153 
     | 
    
         
            +
                  # find configuration settings
         
     | 
| 
      
 154 
     | 
    
         
            +
                  used_target.build_configurations.each do |config|
         
     | 
| 
      
 155 
     | 
    
         
            +
                    if config.name == @configuration
         
     | 
| 
      
 156 
     | 
    
         
            +
                      return config.build_settings
         
     | 
| 
      
 157 
     | 
    
         
            +
                    end
         
     | 
| 
      
 158 
     | 
    
         
            +
                  end
         
     | 
| 
      
 159 
     | 
    
         
            +
             
     | 
| 
      
 160 
     | 
    
         
            +
                  logger.info "configuration '#{@configuration}' not found"
         
     | 
| 
      
 161 
     | 
    
         
            +
                end
         
     | 
| 
      
 162 
     | 
    
         
            +
             
     | 
| 
      
 163 
     | 
    
         
            +
                def rename_ipa_and_dsym
         
     | 
| 
       85 
164 
     | 
    
         
             
                  if @name.blank?
         
     | 
| 
       86 
165 
     | 
    
         
             
                    @ipa_name = "#{ipa_info[:name]}-#{ipa_info[:version]}-build-#{ipa_info[:build]}"
         
     | 
| 
       87 
166 
     | 
    
         
             
                  else
         
     | 
| 
       88 
167 
     | 
    
         
             
                    @ipa_name = @name
         
     | 
| 
       89 
168 
     | 
    
         
             
                  end
         
     | 
| 
       90 
169 
     | 
    
         | 
| 
      
 170 
     | 
    
         
            +
                  @temp_ipa = "#{@build_dir}/fir_build/#{@scheme_name}.ipa"
         
     | 
| 
       91 
171 
     | 
    
         
             
                  @builded_app_path = "#{@output_path}/#{@ipa_name}.ipa"
         
     | 
| 
       92 
172 
     | 
    
         | 
| 
      
 173 
     | 
    
         
            +
                  ipa_info = FIR.ipa_info(@temp_ipa)
         
     | 
| 
      
 174 
     | 
    
         
            +
                  dsym_name = " #{@output_path}/#{ipa_info[:name]}.app.dSYM"
         
     | 
| 
      
 175 
     | 
    
         
            +
             
     | 
| 
       93 
176 
     | 
    
         
             
                  FileUtils.mv(@temp_ipa, @builded_app_path, force: true)
         
     | 
| 
       94 
177 
     | 
    
         
             
                  if File.exist?(dsym_name)
         
     | 
| 
       95 
178 
     | 
    
         
             
                    FileUtils.mv(dsym_name, "#{@output_path}/#{@ipa_name}.app.dSYM", force: true)
         
     | 
| 
         @@ -99,25 +182,22 @@ module FIR 
     | 
|
| 
       99 
182 
     | 
    
         
             
                def upload_build_dsym_mapping_file
         
     | 
| 
       100 
183 
     | 
    
         
             
                  logger_info_blank_line
         
     | 
| 
       101 
184 
     | 
    
         | 
| 
       102 
     | 
    
         
            -
                  @app_info 
     | 
| 
      
 185 
     | 
    
         
            +
                  @app_info = ipa_info(@builded_app_path)
         
     | 
| 
       103 
186 
     | 
    
         
             
                  @mapping_file = Dir["#{@output_path}/#{@ipa_name}.app.dSYM/Contents/Resources/DWARF/*"].first
         
     | 
| 
       104 
187 
     | 
    
         | 
| 
       105 
     | 
    
         
            -
                  mapping @mapping_file, proj: 
     | 
| 
       106 
     | 
    
         
            -
             
     | 
| 
       107 
     | 
    
         
            -
             
     | 
| 
       108 
     | 
    
         
            -
             
     | 
| 
      
 188 
     | 
    
         
            +
                  mapping @mapping_file, proj: @proj,
         
     | 
| 
      
 189 
     | 
    
         
            +
                          build: @app_info[:build],
         
     | 
| 
      
 190 
     | 
    
         
            +
                          version: @app_info[:version],
         
     | 
| 
      
 191 
     | 
    
         
            +
                          token: @token
         
     | 
| 
       109 
192 
     | 
    
         
             
                end
         
     | 
| 
       110 
193 
     | 
    
         | 
| 
       111 
194 
     | 
    
         
             
                def initialize_xcode_build_path(options)
         
     | 
| 
       112 
195 
     | 
    
         
             
                  if options.workspace?
         
     | 
| 
       113 
     | 
    
         
            -
                     
     | 
| 
       114 
     | 
    
         
            -
                     
     | 
| 
       115 
     | 
    
         
            -
             
     | 
| 
       116 
     | 
    
         
            -
                    return " -workspace '#{workspace}' -scheme '#{@scheme_name}'"
         
     | 
| 
      
 196 
     | 
    
         
            +
                    @xc_workspace = check_and_find_ios_xcworkspace(@build_dir)
         
     | 
| 
      
 197 
     | 
    
         
            +
                    " -workspace '#{@xc_workspace}'"
         
     | 
| 
       117 
198 
     | 
    
         
             
                  else
         
     | 
| 
       118 
     | 
    
         
            -
                     
     | 
| 
       119 
     | 
    
         
            -
             
     | 
| 
       120 
     | 
    
         
            -
                    return " -project '#{project}'"
         
     | 
| 
      
 199 
     | 
    
         
            +
                    @xc_project = check_and_find_ios_xcodeproj(@build_dir)
         
     | 
| 
      
 200 
     | 
    
         
            +
                    " -project '#{@xc_project}'"
         
     | 
| 
       121 
201 
     | 
    
         
             
                  end
         
     | 
| 
       122 
202 
     | 
    
         
             
                end
         
     | 
| 
       123 
203 
     | 
    
         | 
    
        data/lib/fir/util/config.rb
    CHANGED
    
    | 
         @@ -5,6 +5,7 @@ module FIR 
     | 
|
| 
       5 
5 
     | 
    
         
             
                CONFIG_PATH   = "#{ENV['HOME']}/.fir-cli"
         
     | 
| 
       6 
6 
     | 
    
         
             
                APP_INFO_PATH = "#{ENV['HOME']}/.fir-cli-app"
         
     | 
| 
       7 
7 
     | 
    
         
             
                API_YML_PATH  = File.expand_path('../../', __FILE__) + '/api.yml'
         
     | 
| 
      
 8 
     | 
    
         
            +
                XCODE_WRAPPER_PATH  = File.expand_path('../../', __FILE__) + '/xcode_wrapper.sh'
         
     | 
| 
       8 
9 
     | 
    
         
             
                APP_FILE_TYPE = %w(.ipa .apk).freeze
         
     | 
| 
       9 
10 
     | 
    
         | 
| 
       10 
11 
     | 
    
         
             
                def fir_api
         
     | 
    
        data/lib/fir/version.rb
    CHANGED
    
    
| 
         @@ -0,0 +1,29 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env bash
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            #!/bin/bash --login
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            which rvm > /dev/null
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            if [[ $? -eq 0 ]]; then
         
     | 
| 
      
 8 
     | 
    
         
            +
              echo "RVM detected, forcing to use system ruby since xcodebuild cause error"
         
     | 
| 
      
 9 
     | 
    
         
            +
              [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
         
     | 
| 
      
 10 
     | 
    
         
            +
              rvm use system
         
     | 
| 
      
 11 
     | 
    
         
            +
            fi
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            if which rbenv > /dev/null; then
         
     | 
| 
      
 14 
     | 
    
         
            +
              echo "rbenv detected, removing env variables since xcodebuild cause error"
         
     | 
| 
      
 15 
     | 
    
         
            +
              rbenv shell system
         
     | 
| 
      
 16 
     | 
    
         
            +
            fi
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            shell_session_update() { :; }
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            unset RUBYLIB
         
     | 
| 
      
 21 
     | 
    
         
            +
            unset RUBYOPT
         
     | 
| 
      
 22 
     | 
    
         
            +
            unset BUNDLE_BIN_PATH
         
     | 
| 
      
 23 
     | 
    
         
            +
            unset _ORIGINAL_GEM_PATH
         
     | 
| 
      
 24 
     | 
    
         
            +
            unset BUNDLE_GEMFILE
         
     | 
| 
      
 25 
     | 
    
         
            +
            unset GEM_HOME
         
     | 
| 
      
 26 
     | 
    
         
            +
            unset GEM_PATH
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            set -x
         
     | 
| 
      
 29 
     | 
    
         
            +
            xcodebuild "$@"
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: fir-cli
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.6.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - NaixSpirit
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2017- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2017-04-01 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: bundler
         
     | 
| 
         @@ -136,6 +136,20 @@ dependencies: 
     | 
|
| 
       136 
136 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       137 
137 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       138 
138 
     | 
    
         
             
                    version: '0.7'
         
     | 
| 
      
 139 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 140 
     | 
    
         
            +
              name: xcodeproj
         
     | 
| 
      
 141 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 142 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 143 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 144 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 145 
     | 
    
         
            +
                    version: '1.4'
         
     | 
| 
      
 146 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 147 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 148 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 149 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 150 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 151 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 152 
     | 
    
         
            +
                    version: '1.4'
         
     | 
| 
       139 
153 
     | 
    
         
             
            description: fir.im command tool, support iOS and Android
         
     | 
| 
       140 
154 
     | 
    
         
             
            email:
         
     | 
| 
       141 
155 
     | 
    
         
             
            - neverlandxy.naix@gmail.com
         
     | 
| 
         @@ -197,6 +211,7 @@ files: 
     | 
|
| 
       197 
211 
     | 
    
         
             
            - lib/fir/util/parser/pngcrush.rb
         
     | 
| 
       198 
212 
     | 
    
         
             
            - lib/fir/util/publish.rb
         
     | 
| 
       199 
213 
     | 
    
         
             
            - lib/fir/version.rb
         
     | 
| 
      
 214 
     | 
    
         
            +
            - lib/fir/xcode_wrapper.sh
         
     | 
| 
       200 
215 
     | 
    
         
             
            - lib/fir_cli.rb
         
     | 
| 
       201 
216 
     | 
    
         
             
            - test/build_ipa_test.rb
         
     | 
| 
       202 
217 
     | 
    
         
             
            - test/cases/test_apk.apk
         
     | 
| 
         @@ -234,7 +249,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       234 
249 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       235 
250 
     | 
    
         
             
            requirements: []
         
     | 
| 
       236 
251 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       237 
     | 
    
         
            -
            rubygems_version: 2.6. 
     | 
| 
      
 252 
     | 
    
         
            +
            rubygems_version: 2.6.8
         
     | 
| 
       238 
253 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       239 
254 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       240 
255 
     | 
    
         
             
            summary: fir.im command tool
         
     |