fastlane 2.44.0.beta.20170630010021 → 2.44.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/deliver/lib/deliver/options.rb +1 -1
- data/fastlane/lib/fastlane/actions/hockey.rb +1 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane_core/lib/fastlane_core/helper.rb +1 -1
- data/fastlane_core/lib/fastlane_core/project.rb +1 -1
- data/gym/README.md +14 -0
- data/gym/lib/gym/detect_values.rb +75 -0
- data/gym/lib/gym/error_handler.rb +4 -0
- metadata +17 -16
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 32e5c6e2bb77ee5eb7fc4c7ed5e21ea5a1989486
         | 
| 4 | 
            +
              data.tar.gz: e2d209799b8b192c7acd63935457294431c0d64f
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 42095a29dd7a3b33474a72b5a68ff810f5110fcb066163f497575a55146c8f127d3eeea27075bf18aa7b28b160637db083ac4bbfdc92d61a96dc68cbe4cf2ea5
         | 
| 7 | 
            +
              data.tar.gz: 694821c94a136fe86c1b54250a3aa4f017aea199bd82d586c48194f9de9039ba17bc3abbc5acc2a211af1bdd0744b1c7c752c5240085a055f235a9fda56d3b4f
         | 
| @@ -112,7 +112,7 @@ module Deliver | |
| 112 112 | 
             
                                                 is_string: false,
         | 
| 113 113 | 
             
                                                 default_value: false),
         | 
| 114 114 | 
             
                    FastlaneCore::ConfigItem.new(key: :phased_release,
         | 
| 115 | 
            -
                                                 description: "Enable  | 
| 115 | 
            +
                                                 description: "Enable the phased release feature of iTC",
         | 
| 116 116 | 
             
                                                 optional: true,
         | 
| 117 117 | 
             
                                                 is_string: false,
         | 
| 118 118 | 
             
                                                 default_value: nil),
         | 
| @@ -189,7 +189,7 @@ module Fastlane | |
| 189 189 | 
             
                  def self.download_url(body)
         | 
| 190 190 | 
             
                    version_url = body['public_url']
         | 
| 191 191 | 
             
                    version_url = body['public_url'] + '/app_versions/' + body['config_url'].split('/').last if body['config_url']
         | 
| 192 | 
            -
                    version_url = body['public_url'] + '/app_versions/' +  | 
| 192 | 
            +
                    version_url = body['public_url'] + '/app_versions/' + body['version'] if body['version']
         | 
| 193 193 | 
             
                    version_url
         | 
| 194 194 | 
             
                  end
         | 
| 195 195 |  | 
| @@ -213,7 +213,7 @@ module FastlaneCore | |
| 213 213 | 
             
                  keychain_path
         | 
| 214 214 | 
             
                end
         | 
| 215 215 |  | 
| 216 | 
            -
                # @return true if  | 
| 216 | 
            +
                # @return true if Xcode version is higher than 8.3
         | 
| 217 217 | 
             
                def self.xcode_at_least?(version)
         | 
| 218 218 | 
             
                  FastlaneCore::UI.user_error!("Unable to locate Xcode. Please make sure to have Xcode installed on your machine") if xcode_version.nil?
         | 
| 219 219 | 
             
                  v = xcode_version
         | 
| @@ -292,7 +292,7 @@ module FastlaneCore | |
| 292 292 | 
             
                end
         | 
| 293 293 |  | 
| 294 294 | 
             
                # Get the build settings for our project
         | 
| 295 | 
            -
                #  | 
| 295 | 
            +
                # e.g. to properly get the DerivedData folder
         | 
| 296 296 | 
             
                # @param [String] The key of which we want the value for (e.g. "PRODUCT_NAME")
         | 
| 297 297 | 
             
                def build_settings(key: nil, optional: true)
         | 
| 298 298 | 
             
                  unless @build_settings
         | 
    
        data/gym/README.md
    CHANGED
    
    | @@ -175,6 +175,20 @@ export_options( | |
| 175 175 | 
             
            )
         | 
| 176 176 | 
             
            ```
         | 
| 177 177 |  | 
| 178 | 
            +
            Optional: If _gym_ can't automatically detect the provisioning profiles to use, you can pass a mapping of bundle identifiers to provisioning profiles:
         | 
| 179 | 
            +
             | 
| 180 | 
            +
            ```ruby
         | 
| 181 | 
            +
            export_options(
         | 
| 182 | 
            +
              method: "app-store",
         | 
| 183 | 
            +
              provisioningProfiles: { 
         | 
| 184 | 
            +
                "com.example.bundleid": "Provisioning Profile Name",
         | 
| 185 | 
            +
                "com.example.bundleid2": "Provisioning Profile Name 2",
         | 
| 186 | 
            +
              }
         | 
| 187 | 
            +
            )
         | 
| 188 | 
            +
            ```
         | 
| 189 | 
            +
             | 
| 190 | 
            +
            **Note**: If you use [fastlane](https://fastlane.tools) with [match](https://fastlane.tools/match) you don't need to provide those values manually.
         | 
| 191 | 
            +
             | 
| 178 192 | 
             
            For the list of available options run `xcodebuild -help`.
         | 
| 179 193 |  | 
| 180 194 | 
             
            ## Setup code signing
         | 
| @@ -14,6 +14,8 @@ module Gym | |
| 14 14 | 
             
                  FastlaneCore::Project.detect_projects(config)
         | 
| 15 15 | 
             
                  Gym.project = FastlaneCore::Project.new(config)
         | 
| 16 16 |  | 
| 17 | 
            +
                  detect_selected_provisioning_profiles
         | 
| 18 | 
            +
             | 
| 17 19 | 
             
                  # Go into the project's folder, as there might be a Gymfile there
         | 
| 18 20 | 
             
                  Dir.chdir(File.expand_path("..", Gym.project.path)) do
         | 
| 19 21 | 
             
                    config.load_configuration_file(Gym.gymfile_name)
         | 
| @@ -54,6 +56,79 @@ module Gym | |
| 54 56 | 
             
                  CFPropertyList.native_types(CFPropertyList::List.new(file: path).value)
         | 
| 55 57 | 
             
                end
         | 
| 56 58 |  | 
| 59 | 
            +
                # Since Xcode 9 you need to provide the explicit mapping of what provisioning profile to use for
         | 
| 60 | 
            +
                # each target of your app
         | 
| 61 | 
            +
                # rubocop:disable Style/MultilineBlockChain
         | 
| 62 | 
            +
                def self.detect_selected_provisioning_profiles
         | 
| 63 | 
            +
                  return if Gym.config[:export_options] && Gym.config[:export_options][:provisioningProfiles]
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                  require 'xcodeproj'
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                  provisioning_profile_mapping = {}
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                  # Find the xcodeproj file, as the information isn't included in the workspace file
         | 
| 70 | 
            +
                  if Gym.project.workspace?
         | 
| 71 | 
            +
                    # We have a reference to the workspace, let's find the xcodeproj file
         | 
| 72 | 
            +
                    # For some reason the `plist` gem can't parse the content file
         | 
| 73 | 
            +
                    # so we'll use a regex to find all group references
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                    workspace_data_path = File.join(Gym.project.path, "contents.xcworkspacedata")
         | 
| 76 | 
            +
                    workspace_data = File.read(workspace_data_path)
         | 
| 77 | 
            +
                    project_paths = workspace_data.scan(/\"group:(.*)\"/).collect do |current_match|
         | 
| 78 | 
            +
                      # It's a relative path from the workspace file
         | 
| 79 | 
            +
                      File.join(File.expand_path("..", Gym.project.path), current_match.first)
         | 
| 80 | 
            +
                    end.find_all do |current_match|
         | 
| 81 | 
            +
                      !current_match.end_with?("Pods/Pods.xcodeproj")
         | 
| 82 | 
            +
                    end
         | 
| 83 | 
            +
                  else
         | 
| 84 | 
            +
                    project_paths = [Gym.project.path]
         | 
| 85 | 
            +
                  end
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                  # Because there might be multiple projects inside a workspace
         | 
| 88 | 
            +
                  # we iterate over all of them (except for CocoaPods)
         | 
| 89 | 
            +
                  project_paths.each do |project_path|
         | 
| 90 | 
            +
                    UI.verbose("Parsing project file '#{project_path}' to find selected provisioning profiles")
         | 
| 91 | 
            +
                    begin
         | 
| 92 | 
            +
                      project = Xcodeproj::Project.open(project_path)
         | 
| 93 | 
            +
                      project.targets.each do |target|
         | 
| 94 | 
            +
                        target.build_configuration_list.build_configurations.each do |build_configuration|
         | 
| 95 | 
            +
                          current = build_configuration.build_settings
         | 
| 96 | 
            +
             | 
| 97 | 
            +
                          bundle_identifier = current["PRODUCT_BUNDLE_IDENTIFIER"]
         | 
| 98 | 
            +
                          provisioning_profile_specifier = current["PROVISIONING_PROFILE_SPECIFIER"]
         | 
| 99 | 
            +
                          next if provisioning_profile_specifier.to_s.length == 0
         | 
| 100 | 
            +
             | 
| 101 | 
            +
                          provisioning_profile_mapping[bundle_identifier] = provisioning_profile_specifier
         | 
| 102 | 
            +
                        end
         | 
| 103 | 
            +
                      end
         | 
| 104 | 
            +
                    rescue => ex
         | 
| 105 | 
            +
                      # We catch errors here, as we might run into an exception on one included project
         | 
| 106 | 
            +
                      # But maybe the next project actually contains the information we need
         | 
| 107 | 
            +
                      if Helper.xcode_at_least?("9.0")
         | 
| 108 | 
            +
                        UI.error(ex)
         | 
| 109 | 
            +
                        UI.verbose(ex.backtrace.join("\n"))
         | 
| 110 | 
            +
                      end
         | 
| 111 | 
            +
                    end
         | 
| 112 | 
            +
                  end
         | 
| 113 | 
            +
             | 
| 114 | 
            +
                  return if provisioning_profile_mapping.count == 0
         | 
| 115 | 
            +
             | 
| 116 | 
            +
                  Gym.config[:export_options] ||= {}
         | 
| 117 | 
            +
                  Gym.config[:export_options][:provisioningProfiles] = provisioning_profile_mapping
         | 
| 118 | 
            +
                  UI.message("Detected provisioning profile mapping: #{provisioning_profile_mapping}")
         | 
| 119 | 
            +
                rescue => ex
         | 
| 120 | 
            +
                  # We don't want to fail the build if the automatic detection doesn't work
         | 
| 121 | 
            +
                  # especially since the mapping is optional for pre Xcode 9 setups
         | 
| 122 | 
            +
                  if Helper.xcode_at_least?("9.0")
         | 
| 123 | 
            +
                    UI.error("Couldn't automatically detect the provisioning profile mapping")
         | 
| 124 | 
            +
                    UI.error("Since Xcode 9 you need to provide an explicit mapping of what")
         | 
| 125 | 
            +
                    UI.error("provisioning profile to use for each target of your app")
         | 
| 126 | 
            +
                    UI.error(ex)
         | 
| 127 | 
            +
                    UI.verbose(ex.backtrace.join("\n"))
         | 
| 128 | 
            +
                  end
         | 
| 129 | 
            +
                end
         | 
| 130 | 
            +
                # rubocop:enable Style/MultilineBlockChain
         | 
| 131 | 
            +
             | 
| 57 132 | 
             
                def self.detect_scheme
         | 
| 58 133 | 
             
                  Gym.project.select_scheme
         | 
| 59 134 | 
             
                end
         | 
| @@ -79,6 +79,10 @@ module Gym | |
| 79 79 | 
             
                      print "This means, the specified provisioning profile was not created using"
         | 
| 80 80 | 
             
                      print "the specified certificate."
         | 
| 81 81 | 
             
                      print "Run cert and sigh before gym to make sure to have all signing resources ready"
         | 
| 82 | 
            +
                    when /requires a provisioning profile/
         | 
| 83 | 
            +
                      print "No provisioning profile provided"
         | 
| 84 | 
            +
                      print "Make sure to pass a valid provisioning for each required target"
         | 
| 85 | 
            +
                      print "Check out the docs on how to fix this: https://github.com/fastlane/fastlane/tree/master/gym#export-options"
         | 
| 82 86 | 
             
                    # insert more specific code signing errors here
         | 
| 83 87 | 
             
                    when /Codesign check fails/
         | 
| 84 88 | 
             
                      print "A general code signing error occurred. Make sure you passed a valid"
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: fastlane
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2.44.0 | 
| 4 | 
            +
              version: 2.44.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Felix Krause
         | 
| @@ -1395,24 +1395,24 @@ metadata: | |
| 1395 1395 | 
             
            post_install_message: 
         | 
| 1396 1396 | 
             
            rdoc_options: []
         | 
| 1397 1397 | 
             
            require_paths:
         | 
| 1398 | 
            -
            - fastlane_core/lib
         | 
| 1399 | 
            -
            - screengrab/lib
         | 
| 1400 | 
            -
            - frameit/lib
         | 
| 1401 | 
            -
            - scan/lib
         | 
| 1402 1398 | 
             
            - cert/lib
         | 
| 1399 | 
            +
            - credentials_manager/lib
         | 
| 1400 | 
            +
            - deliver/lib
         | 
| 1403 1401 | 
             
            - fastlane/lib
         | 
| 1404 | 
            -
            -  | 
| 1402 | 
            +
            - fastlane_core/lib
         | 
| 1403 | 
            +
            - frameit/lib
         | 
| 1405 1404 | 
             
            - gym/lib
         | 
| 1406 | 
            -
            -  | 
| 1407 | 
            -
            - produce/lib
         | 
| 1405 | 
            +
            - match/lib
         | 
| 1408 1406 | 
             
            - pem/lib
         | 
| 1409 | 
            -
            - spaceship/lib
         | 
| 1410 | 
            -
            - deliver/lib
         | 
| 1411 | 
            -
            - precheck/lib
         | 
| 1412 | 
            -
            - supply/lib
         | 
| 1413 | 
            -
            - credentials_manager/lib
         | 
| 1414 1407 | 
             
            - pilot/lib
         | 
| 1408 | 
            +
            - precheck/lib
         | 
| 1409 | 
            +
            - produce/lib
         | 
| 1410 | 
            +
            - scan/lib
         | 
| 1411 | 
            +
            - screengrab/lib
         | 
| 1415 1412 | 
             
            - sigh/lib
         | 
| 1413 | 
            +
            - snapshot/lib
         | 
| 1414 | 
            +
            - spaceship/lib
         | 
| 1415 | 
            +
            - supply/lib
         | 
| 1416 1416 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 1417 1417 | 
             
              requirements:
         | 
| 1418 1418 | 
             
              - - ">="
         | 
| @@ -1420,14 +1420,15 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 1420 1420 | 
             
                  version: 2.0.0
         | 
| 1421 1421 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 1422 1422 | 
             
              requirements:
         | 
| 1423 | 
            -
              - - " | 
| 1423 | 
            +
              - - ">="
         | 
| 1424 1424 | 
             
                - !ruby/object:Gem::Version
         | 
| 1425 | 
            -
                  version:  | 
| 1425 | 
            +
                  version: '0'
         | 
| 1426 1426 | 
             
            requirements: []
         | 
| 1427 1427 | 
             
            rubyforge_project: 
         | 
| 1428 | 
            -
            rubygems_version: 2. | 
| 1428 | 
            +
            rubygems_version: 2.6.8
         | 
| 1429 1429 | 
             
            signing_key: 
         | 
| 1430 1430 | 
             
            specification_version: 4
         | 
| 1431 1431 | 
             
            summary: The easiest way to automate beta deployments and releases for your iOS and
         | 
| 1432 1432 | 
             
              Android apps
         | 
| 1433 1433 | 
             
            test_files: []
         | 
| 1434 | 
            +
            has_rdoc: 
         |