fastlane-plugin-settings_bundle 1.1.1 → 1.2.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
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 8ec2f564820b8e88b1b974a32e4d44414a65b0b8
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 8da1f81314e240c30050a058df47d9c9c66cbe56
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: bab2cbe3e48fafe76e35bfce1868278a8c06910f3b26aec4d277d6b4e91b2c4e92532e0d906f07f04878c3ca577a09cef42caeef14973ae73ea1939b213145f5
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: e0744e178aff7a0415ef31801856ec11200e0a495a9fc99827509948a41e5abe86a258588332acb02ae4c5f66c54af7f5be8243702a450eb2f9f51817c9a8dbf
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -29,7 +29,6 @@ the current build number. 
     | 
|
| 
       29 
29 
     | 
    
         | 
| 
       30 
30 
     | 
    
         
             
            ```ruby
         
     | 
| 
       31 
31 
     | 
    
         
             
            update_settings_bundle(
         
     | 
| 
       32 
     | 
    
         
            -
              xcodeproj: "MyProject.xcodeproj",
         
     | 
| 
       33 
32 
     | 
    
         
             
              key: "CurrentAppVersion",
         
     | 
| 
       34 
33 
     | 
    
         
             
              value: ":version (:build)"
         
     | 
| 
       35 
34 
     | 
    
         
             
            )
         
     | 
| 
         @@ -41,11 +40,24 @@ specified format. Use the action this way after `increment_build_number` or 
     | 
|
| 
       41 
40 
     | 
    
         
             
            `increment_version_number` to update your settings bundle as part of a
         
     | 
| 
       42 
41 
     | 
    
         
             
            version bump.
         
     | 
| 
       43 
42 
     | 
    
         | 
| 
      
 43 
     | 
    
         
            +
            #### Specifying the project file
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            By default, the action looks for a single .xcodeproj file in the repo,
         
     | 
| 
      
 46 
     | 
    
         
            +
            excluding any under Pods. If more than one is present, use the `:xcodeproj`
         
     | 
| 
      
 47 
     | 
    
         
            +
            parameter:
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 50 
     | 
    
         
            +
            update_settings_bundle(
         
     | 
| 
      
 51 
     | 
    
         
            +
              xcodeproj: "./MyProject.xcodeproj",
         
     | 
| 
      
 52 
     | 
    
         
            +
              key: "CurrentAppVersion",
         
     | 
| 
      
 53 
     | 
    
         
            +
              value: ":version (:build)"
         
     | 
| 
      
 54 
     | 
    
         
            +
            )
         
     | 
| 
      
 55 
     | 
    
         
            +
            ```
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
       44 
57 
     | 
    
         
             
            #### Files other than Root.plist
         
     | 
| 
       45 
58 
     | 
    
         | 
| 
       46 
59 
     | 
    
         
             
            ```ruby
         
     | 
| 
       47 
60 
     | 
    
         
             
            update_settings_bundle(
         
     | 
| 
       48 
     | 
    
         
            -
              xcodeproj: "MyProject.xcodeproj",
         
     | 
| 
       49 
61 
     | 
    
         
             
              file: "About.plist",
         
     | 
| 
       50 
62 
     | 
    
         
             
              key: "CurrentAppVersion",
         
     | 
| 
       51 
63 
     | 
    
         
             
              value: ":version (:build)"
         
     | 
| 
         @@ -65,7 +77,6 @@ other settings besides the version and build numbers. 
     | 
|
| 
       65 
77 
     | 
    
         | 
| 
       66 
78 
     | 
    
         
             
            ```ruby
         
     | 
| 
       67 
79 
     | 
    
         
             
            update_settings_bundle(
         
     | 
| 
       68 
     | 
    
         
            -
              xcodeproj: "MyProject.xcodeproj",
         
     | 
| 
       69 
80 
     | 
    
         
             
              key: "BuildDate",
         
     | 
| 
       70 
81 
     | 
    
         
             
              value: Time.now.strftime("%Y-%m-%d")
         
     | 
| 
       71 
82 
     | 
    
         
             
            )
         
     | 
| 
         @@ -81,7 +92,6 @@ different configuration, use a `configuration` parameter: 
     | 
|
| 
       81 
92 
     | 
    
         | 
| 
       82 
93 
     | 
    
         
             
            ```ruby
         
     | 
| 
       83 
94 
     | 
    
         
             
            update_settings_bundle(
         
     | 
| 
       84 
     | 
    
         
            -
              xcodeproj: "MyProject.xcodeproj",
         
     | 
| 
       85 
95 
     | 
    
         
             
              key: "CurrentAppVersion",
         
     | 
| 
       86 
96 
     | 
    
         
             
              value: ":version (:build)",
         
     | 
| 
       87 
97 
     | 
    
         
             
              configuration: "Debug"
         
     | 
| 
         @@ -94,16 +104,35 @@ By default, this action takes the settings from the first non-test, non-extensio 
     | 
|
| 
       94 
104 
     | 
    
         
             
            the project. Use the optional :target parameter to specify a target by name.
         
     | 
| 
       95 
105 
     | 
    
         
             
            ```ruby
         
     | 
| 
       96 
106 
     | 
    
         
             
            update_settings_bundle(
         
     | 
| 
       97 
     | 
    
         
            -
              xcodeproj: "MyProject.xcodeproj",
         
     | 
| 
       98 
107 
     | 
    
         
             
              key: "CurrentAppVersion",
         
     | 
| 
       99 
108 
     | 
    
         
             
              value: ":version (:build)",
         
     | 
| 
       100 
109 
     | 
    
         
             
              target: "MyAppTarget"
         
     | 
| 
       101 
110 
     | 
    
         
             
            )
         
     | 
| 
       102 
111 
     | 
    
         
             
            ```
         
     | 
| 
       103 
112 
     | 
    
         | 
| 
       104 
     | 
    
         
            -
             
     | 
| 
      
 113 
     | 
    
         
            +
            #### Bundle name parameter
         
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
      
 115 
     | 
    
         
            +
            By default, this action looks for a file called `Settings.bundle` in the project. To
         
     | 
| 
      
 116 
     | 
    
         
            +
            specify a different name for your settings bundle, use the `:bundle_name` option:
         
     | 
| 
      
 117 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 118 
     | 
    
         
            +
            update_settings_bundle(
         
     | 
| 
      
 119 
     | 
    
         
            +
              key: "CurrentAppVersion",
         
     | 
| 
      
 120 
     | 
    
         
            +
              value: ":version (:build)",
         
     | 
| 
      
 121 
     | 
    
         
            +
              bundle_name: "MySettings.bundle"
         
     | 
| 
      
 122 
     | 
    
         
            +
            )
         
     | 
| 
      
 123 
     | 
    
         
            +
            ```
         
     | 
| 
       105 
124 
     | 
    
         | 
| 
       106 
     | 
    
         
            -
             
     | 
| 
      
 125 
     | 
    
         
            +
            ## Examples
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
            [SettingsBundleExample]: ./examples/SettingsBundleExample
         
     | 
| 
      
 128 
     | 
    
         
            +
            [SettingsBundleLibraryExample]: ./examples/SettingsBundleLibraryExample
         
     | 
| 
      
 129 
     | 
    
         
            +
             
     | 
| 
      
 130 
     | 
    
         
            +
            There are two examples in the `examples` subdirectory: [SettingsBundleExample] (basic) and
         
     | 
| 
      
 131 
     | 
    
         
            +
            [SettingsBundleLibraryExample] (advanced).
         
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
      
 133 
     | 
    
         
            +
            ### SettingsBundleExample (basic)
         
     | 
| 
      
 134 
     | 
    
         
            +
             
     | 
| 
      
 135 
     | 
    
         
            +
            See the `examples/SettingsBundleExample` subdirectory for a simple example project that
         
     | 
| 
       107 
136 
     | 
    
         
             
            makes use of this action.
         
     | 
| 
       108 
137 
     | 
    
         | 
| 
       109 
138 
     | 
    
         
             
            First build and run the sample project on a simulator or device. It should show
         
     | 
| 
         @@ -125,6 +154,37 @@ Run the sample app again. It should display 1.0.0 (2). Tap the version number ag 
     | 
|
| 
       125 
154 
     | 
    
         
             
            to see the update to the
         
     | 
| 
       126 
155 
     | 
    
         
             
            settings bundle. The Build date field should show the current date.
         
     | 
| 
       127 
156 
     | 
    
         | 
| 
      
 157 
     | 
    
         
            +
            ### SettingsBundleLibraryExample (advanced)
         
     | 
| 
      
 158 
     | 
    
         
            +
             
     | 
| 
      
 159 
     | 
    
         
            +
            The [SettingsBundleLibraryExample] project includes multiple targets with different versions
         
     | 
| 
      
 160 
     | 
    
         
            +
            and a settings bundle with multiple pages. In addition to the `SettingsBundleLibraryExample`
         
     | 
| 
      
 161 
     | 
    
         
            +
            target, there is a `SettingsBundleExampleFramework`, which builds a framework that is embedded
         
     | 
| 
      
 162 
     | 
    
         
            +
            in the application. The app version is 1.0.0. The framework version is 1.0.1.
         
     | 
| 
      
 163 
     | 
    
         
            +
             
     | 
| 
      
 164 
     | 
    
         
            +
            The settings bundle includes a child pane in Framework.plist. The app version (CurrentAppVersion)
         
     | 
| 
      
 165 
     | 
    
         
            +
            and build date are in the Root.plist. The framework version (CurrentFrameworkVersion) is in
         
     | 
| 
      
 166 
     | 
    
         
            +
            Framework.plist. It appears on the "Framework settings" page in the Settings app.
         
     | 
| 
      
 167 
     | 
    
         
            +
             
     | 
| 
      
 168 
     | 
    
         
            +
            The lane in the Fastfile makes use of the :target parameter to choose which version data to use.
         
     | 
| 
      
 169 
     | 
    
         
            +
             
     | 
| 
      
 170 
     | 
    
         
            +
            To update this project:
         
     | 
| 
      
 171 
     | 
    
         
            +
             
     | 
| 
      
 172 
     | 
    
         
            +
            ```bash
         
     | 
| 
      
 173 
     | 
    
         
            +
            bundle exec fastlane library_test
         
     | 
| 
      
 174 
     | 
    
         
            +
            ```
         
     | 
| 
      
 175 
     | 
    
         
            +
             
     | 
| 
      
 176 
     | 
    
         
            +
            Now build and run the app. The settings have been updated with the appropriate version
         
     | 
| 
      
 177 
     | 
    
         
            +
            for each component.
         
     | 
| 
      
 178 
     | 
    
         
            +
             
     | 
| 
      
 179 
     | 
    
         
            +
            #### Note
         
     | 
| 
      
 180 
     | 
    
         
            +
             
     | 
| 
      
 181 
     | 
    
         
            +
            Though you can use a different version in
         
     | 
| 
      
 182 
     | 
    
         
            +
            the `Info.plist` for each target, `agvtool` will
         
     | 
| 
      
 183 
     | 
    
         
            +
            automatically set them all to the same value on update.
         
     | 
| 
      
 184 
     | 
    
         
            +
            If you do your version update using a different
         
     | 
| 
      
 185 
     | 
    
         
            +
            mechanism, `:build` will refer to the `CFBundleVersion` from the `Info.plist`
         
     | 
| 
      
 186 
     | 
    
         
            +
            for whichever target you use.
         
     | 
| 
      
 187 
     | 
    
         
            +
             
     | 
| 
       128 
188 
     | 
    
         
             
            ## Run tests for this plugin
         
     | 
| 
       129 
189 
     | 
    
         | 
| 
       130 
190 
     | 
    
         
             
            To run both the tests, and code style validation, run
         
     | 
| 
         @@ -28,19 +28,25 @@ module Fastlane 
     | 
|
| 
       28 
28 
     | 
    
         
             
                    file = params[:file]
         
     | 
| 
       29 
29 
     | 
    
         
             
                    value = params[:value]
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
                    # try to open project file (raises)
         
     | 
| 
       32 
     | 
    
         
            -
                    project = Xcodeproj::Project.open params[:xcodeproj]
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
31 
     | 
    
         
             
                    helper = Helper::SettingsBundleHelper
         
     | 
| 
       35 
32 
     | 
    
         | 
| 
      
 33 
     | 
    
         
            +
                    xcodeproj_path = helper.xcodeproj_path_from_params params
         
     | 
| 
      
 34 
     | 
    
         
            +
                    # Error already reported in helper
         
     | 
| 
      
 35 
     | 
    
         
            +
                    return if xcodeproj_path.nil?
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                    # try to open project file (raises)
         
     | 
| 
      
 38 
     | 
    
         
            +
                    project = Xcodeproj::Project.open xcodeproj_path
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                    # raises
         
     | 
| 
       36 
41 
     | 
    
         
             
                    settings = helper.settings_from_project project, configuration, target_name
         
     | 
| 
       37 
42 
     | 
    
         | 
| 
       38 
43 
     | 
    
         
             
                    formatted_value = helper.formatted_value value, settings
         
     | 
| 
       39 
44 
     | 
    
         | 
| 
       40 
     | 
    
         
            -
                     
     | 
| 
      
 45 
     | 
    
         
            +
                    # raises
         
     | 
| 
      
 46 
     | 
    
         
            +
                    helper.update_settings_plist_title_setting project, params[:bundle_name], file, key,
         
     | 
| 
       41 
47 
     | 
    
         
             
                                                               formatted_value
         
     | 
| 
       42 
48 
     | 
    
         
             
                  rescue => e
         
     | 
| 
       43 
     | 
    
         
            -
                    UI.user_error! e.message
         
     | 
| 
      
 49 
     | 
    
         
            +
                    UI.user_error! "#{e.message}\n#{e.backtrace}"
         
     | 
| 
       44 
50 
     | 
    
         
             
                  end
         
     | 
| 
       45 
51 
     | 
    
         | 
| 
       46 
52 
     | 
    
         
             
                  def self.description
         
     | 
| 
         @@ -62,11 +68,6 @@ module Fastlane 
     | 
|
| 
       62 
68 
     | 
    
         
             
                  def self.available_options
         
     | 
| 
       63 
69 
     | 
    
         
             
                    [
         
     | 
| 
       64 
70 
     | 
    
         
             
                      # Required parameters
         
     | 
| 
       65 
     | 
    
         
            -
                      FastlaneCore::ConfigItem.new(key: :xcodeproj,
         
     | 
| 
       66 
     | 
    
         
            -
                                              env_name: "SETTINGS_BUNDLE_XCODEPROJ",
         
     | 
| 
       67 
     | 
    
         
            -
                                           description: "An Xcode project file whose settings bundle to update",
         
     | 
| 
       68 
     | 
    
         
            -
                                              optional: false,
         
     | 
| 
       69 
     | 
    
         
            -
                                                  type: String),
         
     | 
| 
       70 
71 
     | 
    
         
             
                      FastlaneCore::ConfigItem.new(key: :key,
         
     | 
| 
       71 
72 
     | 
    
         
             
                                              env_name: "SETTINGS_BUNDLE_KEY",
         
     | 
| 
       72 
73 
     | 
    
         
             
                                           description: "The user defaults key to update in the settings bundle",
         
     | 
| 
         @@ -79,6 +80,11 @@ module Fastlane 
     | 
|
| 
       79 
80 
     | 
    
         
             
                                                  type: String),
         
     | 
| 
       80 
81 
     | 
    
         | 
| 
       81 
82 
     | 
    
         
             
                      # Optional parameters
         
     | 
| 
      
 83 
     | 
    
         
            +
                      FastlaneCore::ConfigItem.new(key: :xcodeproj,
         
     | 
| 
      
 84 
     | 
    
         
            +
                                              env_name: "SETTINGS_BUNDLE_XCODEPROJ",
         
     | 
| 
      
 85 
     | 
    
         
            +
                                           description: "An Xcode project file whose settings bundle to update",
         
     | 
| 
      
 86 
     | 
    
         
            +
                                              optional: true,
         
     | 
| 
      
 87 
     | 
    
         
            +
                                                  type: String),
         
     | 
| 
       82 
88 
     | 
    
         
             
                      FastlaneCore::ConfigItem.new(key: :configuration,
         
     | 
| 
       83 
89 
     | 
    
         
             
                                              env_name: "SETTINGS_BUNDLE_CONFIGURATION",
         
     | 
| 
       84 
90 
     | 
    
         
             
                                           description: "The build configuration to use for the Info.plist file",
         
     | 
| 
         @@ -91,6 +97,12 @@ module Fastlane 
     | 
|
| 
       91 
97 
     | 
    
         
             
                                              optional: true,
         
     | 
| 
       92 
98 
     | 
    
         
             
                                         default_value: "Root.plist",
         
     | 
| 
       93 
99 
     | 
    
         
             
                                                  type: String),
         
     | 
| 
      
 100 
     | 
    
         
            +
                      FastlaneCore::ConfigItem.new(key: :bundle_name,
         
     | 
| 
      
 101 
     | 
    
         
            +
                                              env_name: "SETTINGS_BUNDLE_BUNDLE_NAME",
         
     | 
| 
      
 102 
     | 
    
         
            +
                                           description: "The name of the settings bundle in the project (default Settings.bundle)",
         
     | 
| 
      
 103 
     | 
    
         
            +
                                              optional: true,
         
     | 
| 
      
 104 
     | 
    
         
            +
                                         default_value: "Settings.bundle",
         
     | 
| 
      
 105 
     | 
    
         
            +
                                                  type: String),
         
     | 
| 
       94 
106 
     | 
    
         
             
                      FastlaneCore::ConfigItem.new(key: :target,
         
     | 
| 
       95 
107 
     | 
    
         
             
                                              env_name: "SETTINGS_BUNDLE_TARGET",
         
     | 
| 
       96 
108 
     | 
    
         
             
                                           description: "An optional target name from the project",
         
     | 
| 
         @@ -103,7 +115,6 @@ module Fastlane 
     | 
|
| 
       103 
115 
     | 
    
         
             
                    [
         
     | 
| 
       104 
116 
     | 
    
         
             
                      <<-EOF
         
     | 
| 
       105 
117 
     | 
    
         
             
                        update_settings_bundle(
         
     | 
| 
       106 
     | 
    
         
            -
                          xcodeproj: "MyProject.xcodeproj",
         
     | 
| 
       107 
118 
     | 
    
         
             
                          key: "CurrentAppVersion",
         
     | 
| 
       108 
119 
     | 
    
         
             
                          value: ":version (:build)"
         
     | 
| 
       109 
120 
     | 
    
         
             
                        )
         
     | 
| 
         @@ -111,6 +122,12 @@ module Fastlane 
     | 
|
| 
       111 
122 
     | 
    
         
             
                      <<-EOF
         
     | 
| 
       112 
123 
     | 
    
         
             
                        update_settings_bundle(
         
     | 
| 
       113 
124 
     | 
    
         
             
                          xcodeproj: "MyProject.xcodeproj",
         
     | 
| 
      
 125 
     | 
    
         
            +
                          key: "CurrentAppVersion",
         
     | 
| 
      
 126 
     | 
    
         
            +
                          value: ":version (:build)"
         
     | 
| 
      
 127 
     | 
    
         
            +
                        )
         
     | 
| 
      
 128 
     | 
    
         
            +
                      EOF,
         
     | 
| 
      
 129 
     | 
    
         
            +
                      <<-EOF
         
     | 
| 
      
 130 
     | 
    
         
            +
                        update_settings_bundle(
         
     | 
| 
       114 
131 
     | 
    
         
             
                          file: "About.plist",
         
     | 
| 
       115 
132 
     | 
    
         
             
                          key: "CurrentAppVersion",
         
     | 
| 
       116 
133 
     | 
    
         
             
                          value: ":version (:build)"
         
     | 
| 
         @@ -118,14 +135,12 @@ module Fastlane 
     | 
|
| 
       118 
135 
     | 
    
         
             
                      EOF,
         
     | 
| 
       119 
136 
     | 
    
         
             
                      <<-EOF
         
     | 
| 
       120 
137 
     | 
    
         
             
                        update_settings_bundle(
         
     | 
| 
       121 
     | 
    
         
            -
                          xcodeproj: "MyProject.xcodeproj",
         
     | 
| 
       122 
138 
     | 
    
         
             
                          key: "BuildDate",
         
     | 
| 
       123 
139 
     | 
    
         
             
                          value: Time.now.strftime("%Y-%m-%d")
         
     | 
| 
       124 
140 
     | 
    
         
             
                        )
         
     | 
| 
       125 
141 
     | 
    
         
             
                      EOF,
         
     | 
| 
       126 
142 
     | 
    
         
             
                      <<-EOF
         
     | 
| 
       127 
143 
     | 
    
         
             
                        update_settings_bundle(
         
     | 
| 
       128 
     | 
    
         
            -
                          xcodeproj: "MyProject.xcodeproj",
         
     | 
| 
       129 
144 
     | 
    
         
             
                          key: "CurrentAppVersion",
         
     | 
| 
       130 
145 
     | 
    
         
             
                          value: ":version (:build)",
         
     | 
| 
       131 
146 
     | 
    
         
             
                          configuration: "Debug"
         
     | 
| 
         @@ -133,11 +148,17 @@ module Fastlane 
     | 
|
| 
       133 
148 
     | 
    
         
             
                      EOF,
         
     | 
| 
       134 
149 
     | 
    
         
             
                      <<-EOF
         
     | 
| 
       135 
150 
     | 
    
         
             
                        update_settings_bundle(
         
     | 
| 
       136 
     | 
    
         
            -
                          xcodeproj: "MyProject.xcodeproj",
         
     | 
| 
       137 
151 
     | 
    
         
             
                          key: "CurrentAppVersion",
         
     | 
| 
       138 
152 
     | 
    
         
             
                          value: ":version (:build)",
         
     | 
| 
       139 
153 
     | 
    
         
             
                          target: "MyAppTarget"
         
     | 
| 
       140 
154 
     | 
    
         
             
                        )
         
     | 
| 
      
 155 
     | 
    
         
            +
                      EOF,
         
     | 
| 
      
 156 
     | 
    
         
            +
                      <<-EOF
         
     | 
| 
      
 157 
     | 
    
         
            +
                        update_settings_bundle(
         
     | 
| 
      
 158 
     | 
    
         
            +
                          key: "CurrentAppVersion",
         
     | 
| 
      
 159 
     | 
    
         
            +
                          value: ":version (:build)",
         
     | 
| 
      
 160 
     | 
    
         
            +
                          bundle_name: "MySettings.bundle"
         
     | 
| 
      
 161 
     | 
    
         
            +
                        )
         
     | 
| 
       141 
162 
     | 
    
         
             
                      EOF
         
     | 
| 
       142 
163 
     | 
    
         
             
                    ]
         
     | 
| 
       143 
164 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -22,6 +22,7 @@ require 'plist' 
     | 
|
| 
       22 
22 
     | 
    
         | 
| 
       23 
23 
     | 
    
         
             
            module Fastlane
         
     | 
| 
       24 
24 
     | 
    
         
             
              module Helper
         
     | 
| 
      
 25 
     | 
    
         
            +
                UI = FastlaneCore::UI
         
     | 
| 
       25 
26 
     | 
    
         
             
                class SettingsBundleHelper
         
     | 
| 
       26 
27 
     | 
    
         
             
                  Settings = Struct.new "Settings", :version, :build
         
     | 
| 
       27 
28 
     | 
    
         | 
| 
         @@ -73,8 +74,9 @@ module Fastlane 
     | 
|
| 
       73 
74 
     | 
    
         | 
| 
       74 
75 
     | 
    
         
             
                      release_info_plist_path = File.join project_parent, release_info_plist_path
         
     | 
| 
       75 
76 
     | 
    
         | 
| 
       76 
     | 
    
         
            -
                      # try to open and parse the Info.plist  
     | 
| 
       77 
     | 
    
         
            -
                      info_plist = Plist.parse_xml  
     | 
| 
      
 77 
     | 
    
         
            +
                      # try to open and parse the Info.plist. raises on failure.
         
     | 
| 
      
 78 
     | 
    
         
            +
                      info_plist = File.open(release_info_plist_path) { |f| Plist.parse_xml f }
         
     | 
| 
      
 79 
     | 
    
         
            +
                      raise "Failed to parse plist file #{release_info_plist_path}" if info_plist.nil?
         
     | 
| 
       78 
80 
     | 
    
         | 
| 
       79 
81 
     | 
    
         
             
                      # increments already happened. read the current state.
         
     | 
| 
       80 
82 
     | 
    
         
             
                      current_marketing_version = info_plist["CFBundleShortVersionString"]
         
     | 
| 
         @@ -92,22 +94,25 @@ module Fastlane 
     | 
|
| 
       92 
94 
     | 
    
         
             
                    # on error.
         
     | 
| 
       93 
95 
     | 
    
         
             
                    #
         
     | 
| 
       94 
96 
     | 
    
         
             
                    # :project: An open Xcodeproj::Project, obtained from Xcodeproj::Project.open, e.g.
         
     | 
| 
      
 97 
     | 
    
         
            +
                    # :bundle_name: (String) Regex to identify the bundle to look for, usually Settings.bundle.
         
     | 
| 
       95 
98 
     | 
    
         
             
                    # :file: A settings plist file in the Settings.bundle, usually "Root.plist"
         
     | 
| 
       96 
99 
     | 
    
         
             
                    # :key: A valid NSUserDefaults key in the Settings.bundle
         
     | 
| 
       97 
100 
     | 
    
         
             
                    # :value: A new value for the key
         
     | 
| 
       98 
     | 
    
         
            -
                    def update_settings_plist_title_setting(project, file, key, value)
         
     | 
| 
       99 
     | 
    
         
            -
                      settings_bundle = project.files.find { |f| f.path =~ / 
     | 
| 
      
 101 
     | 
    
         
            +
                    def update_settings_plist_title_setting(project, bundle_name, file, key, value)
         
     | 
| 
      
 102 
     | 
    
         
            +
                      settings_bundle = project.files.find { |f| f.path =~ /#{bundle_name}/ }
         
     | 
| 
       100 
103 
     | 
    
         | 
| 
       101 
     | 
    
         
            -
                      raise " 
     | 
| 
      
 104 
     | 
    
         
            +
                      raise "#{bundle_name} not found in project" if settings_bundle.nil?
         
     | 
| 
       102 
105 
     | 
    
         | 
| 
       103 
     | 
    
         
            -
                       
     | 
| 
      
 106 
     | 
    
         
            +
                      # The #real_path method returns the full resolved path to the Settings.bundle
         
     | 
| 
      
 107 
     | 
    
         
            +
                      settings_bundle_path = settings_bundle.real_path
         
     | 
| 
       104 
108 
     | 
    
         | 
| 
       105 
     | 
    
         
            -
                       
     | 
| 
      
 109 
     | 
    
         
            +
                      plist_path = File.join settings_bundle_path, file
         
     | 
| 
      
 110 
     | 
    
         
            +
             
     | 
| 
      
 111 
     | 
    
         
            +
                      # raises IOError
         
     | 
| 
      
 112 
     | 
    
         
            +
                      settings_plist = File.open(plist_path) { |f| Plist.parse_xml f }
         
     | 
| 
       106 
113 
     | 
    
         | 
| 
       107 
     | 
    
         
            -
                       
     | 
| 
      
 114 
     | 
    
         
            +
                      raise "Could not parse #{plist_path}" if settings_plist.nil?
         
     | 
| 
       108 
115 
     | 
    
         | 
| 
       109 
     | 
    
         
            -
                      # raises
         
     | 
| 
       110 
     | 
    
         
            -
                      settings_plist = Plist.parse_xml plist_path
         
     | 
| 
       111 
116 
     | 
    
         
             
                      preference_specifiers = settings_plist["PreferenceSpecifiers"]
         
     | 
| 
       112 
117 
     | 
    
         | 
| 
       113 
118 
     | 
    
         
             
                      raise "#{file} is not a settings plist file" if preference_specifiers.nil?
         
     | 
| 
         @@ -126,6 +131,34 @@ module Fastlane 
     | 
|
| 
       126 
131 
     | 
    
         
             
                      # Save (raises)
         
     | 
| 
       127 
132 
     | 
    
         
             
                      Plist::Emit.save_plist settings_plist, plist_path
         
     | 
| 
       128 
133 
     | 
    
         
             
                    end
         
     | 
| 
      
 134 
     | 
    
         
            +
             
     | 
| 
      
 135 
     | 
    
         
            +
                    def xcodeproj_path_from_params(params)
         
     | 
| 
      
 136 
     | 
    
         
            +
                      return params[:xcodeproj] if params[:xcodeproj]
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
                      # Adapted from commit_version_bump
         
     | 
| 
      
 139 
     | 
    
         
            +
                      # https://github.com/fastlane/fastlane/blob/master/fastlane/lib/fastlane/actions/commit_version_bump.rb#L21
         
     | 
| 
      
 140 
     | 
    
         
            +
             
     | 
| 
      
 141 
     | 
    
         
            +
                      # This may not be a git project. Search relative to the Gemfile.
         
     | 
| 
      
 142 
     | 
    
         
            +
                      repo_path = Bundler.root
         
     | 
| 
      
 143 
     | 
    
         
            +
             
     | 
| 
      
 144 
     | 
    
         
            +
                      all_xcodeproj_paths = Dir[File.expand_path(File.join(repo_path, '**/*.xcodeproj'))]
         
     | 
| 
      
 145 
     | 
    
         
            +
                      # find an xcodeproj (ignoring the Cocoapods one)
         
     | 
| 
      
 146 
     | 
    
         
            +
                      xcodeproj_paths = Fastlane::Actions.ignore_cocoapods_path(all_xcodeproj_paths)
         
     | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
      
 148 
     | 
    
         
            +
                      # no projects found: error
         
     | 
| 
      
 149 
     | 
    
         
            +
                      UI.user_error!('Could not find a .xcodeproj in the current repository\'s working directory.') and return nil if xcodeproj_paths.count == 0
         
     | 
| 
      
 150 
     | 
    
         
            +
             
     | 
| 
      
 151 
     | 
    
         
            +
                      # too many projects found: error
         
     | 
| 
      
 152 
     | 
    
         
            +
                      if xcodeproj_paths.count > 1
         
     | 
| 
      
 153 
     | 
    
         
            +
                        repo_pathname = Pathname.new repo_path
         
     | 
| 
      
 154 
     | 
    
         
            +
                        relative_projects = xcodeproj_paths.map { |e| Pathname.new(e).relative_path_from(repo_pathname).to_s }.join("\n")
         
     | 
| 
      
 155 
     | 
    
         
            +
                        UI.user_error!("Found multiple .xcodeproj projects in the current repository's working directory. Please specify your app's main project: \n#{relative_projects}")
         
     | 
| 
      
 156 
     | 
    
         
            +
                        return nil
         
     | 
| 
      
 157 
     | 
    
         
            +
                      end
         
     | 
| 
      
 158 
     | 
    
         
            +
             
     | 
| 
      
 159 
     | 
    
         
            +
                      # one project found: great
         
     | 
| 
      
 160 
     | 
    
         
            +
                      xcodeproj_paths.first
         
     | 
| 
      
 161 
     | 
    
         
            +
                    end
         
     | 
| 
       129 
162 
     | 
    
         
             
                  end
         
     | 
| 
       130 
163 
     | 
    
         
             
                end
         
     | 
| 
       131 
164 
     | 
    
         
             
              end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: fastlane-plugin-settings_bundle
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.2.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Jimmy Dee
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2017- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2017-06-15 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: plist
         
     | 
| 
         @@ -154,7 +154,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       154 
154 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       155 
155 
     | 
    
         
             
            requirements: []
         
     | 
| 
       156 
156 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       157 
     | 
    
         
            -
            rubygems_version: 2.6. 
     | 
| 
      
 157 
     | 
    
         
            +
            rubygems_version: 2.6.12
         
     | 
| 
       158 
158 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       159 
159 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       160 
160 
     | 
    
         
             
            summary: Fastlane plugin to update static settings in an iOS settings bundle
         
     |