fastlane-plugin-settings_bundle 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1e4de8d118519798ac033619bc8e7d97df7a53ed
4
+ data.tar.gz: 7c4b5392ec299f3793407f595f4ebddd7db7a6b0
5
+ SHA512:
6
+ metadata.gz: a8d7cee31bc2f87df9d4887c723b66d07b38eb1db2c7665343ffe1eeb2b692006eeeda7311b4389aa2949d9b9bc00e2db947438df950acc948567d803f8c3f8b
7
+ data.tar.gz: 816ac7eaf9b17e5e3e8b65a6f5318260932d73289c5eb487531c968d48fe902a4339b90868ab46262349589f527929c07bf2c6781e3db6f0bd8f94237a87b317
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Jimmy Dee <jgvdthree@gmail.com>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,140 @@
1
+ # settings_bundle plugin
2
+
3
+ [![fastlane Plugin Badge](https://rawcdn.githack.com/fastlane/fastlane/master/fastlane/assets/plugin-badge.svg?style=flat)](https://rubygems.org/gems/fastlane-plugin-settings_bundle)
4
+ [![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://github.com/jdee/settings-bundle/blob/master/LICENSE)
5
+ [![CircleCI](https://circleci.com/gh/jdee/settings-bundle.svg?style=svg)](https://circleci.com/gh/jdee/settings-bundle)
6
+
7
+ ## Getting Started
8
+
9
+ This project is a [fastlane](https://github.com/fastlane/fastlane) plugin. To get started with `fastlane-plugin-settings_bundle`, run the following command:
10
+ ```
11
+ fastlane add_plugin settings_bundle
12
+ ```
13
+
14
+ ## About settings_bundle
15
+
16
+ Fastlane plugin to update static settings in an iOS settings bundle
17
+
18
+ ![Sample Settings Bundle](https://github.com/jdee/settings-bundle/blob/master/settings-bundle-example.png)
19
+
20
+ ### update_settings_bundle
21
+
22
+ This action updates a specified NSUserDefaults key in the project's
23
+ `Settings.bundle` to a specified value. There are two macros that will
24
+ be expanded if included in the value argument. `:version` will be
25
+ replaced with the app's marketing version; `:build` will be replaced with
26
+ the current build number.
27
+
28
+ ```ruby
29
+ update_settings_bundle(
30
+ xcodeproj: "MyProject.xcodeproj",
31
+ key: "CurrentAppVersion",
32
+ value: ":version (:build)"
33
+ )
34
+ ```
35
+
36
+ This updates the key named `CurrentAppVersion` in the `Root.plist` in the
37
+ `Settings.bundle` to contain the marketing version and build number in the
38
+ specified format. Use the action this way after `increment_build_number` or
39
+ `increment_version_number` to update your settings bundle as part of a
40
+ version bump.
41
+
42
+ #### Files other than Root.plist
43
+
44
+ ```ruby
45
+ update_settings_bundle(
46
+ xcodeproj: "MyProject.xcodeproj",
47
+ file: "About.plist",
48
+ key: "CurrentAppVersion",
49
+ value: ":version (:build)"
50
+ )
51
+ ```
52
+
53
+ The `file` argument specifies a file other than `Root.plist` in the
54
+ `Settings.bundle`. If you have multiple projects, keys or files,
55
+ run the action multiple times.
56
+
57
+ #### Key content
58
+
59
+ Any string is valid for the value. It need not contain either or
60
+ both the symbols mentioned. If it contains neither, the literal value
61
+ of the value argument will be used. This can be useful for including
62
+ other settings besides the version and build numbers.
63
+
64
+ ```ruby
65
+ update_settings_bundle(
66
+ xcodeproj: "MyProject.xcodeproj",
67
+ key: "BuildDate",
68
+ value: Time.now.strftime("%Y-%m-%d")
69
+ )
70
+ ```
71
+
72
+ #### Configuration parameter
73
+
74
+ A project can use different `Info.plist` files per configuration
75
+ (Debug, Release, etc.). However, a project only has a single settings
76
+ bundle. By default, this action uses the `Info.plist` file from the
77
+ Release configuration. If you want to use the `Info.plist` for a
78
+ different configuration, use a `configuration` parameter:
79
+
80
+ ```ruby
81
+ update_settings_bundle(
82
+ xcodeproj: "MyProject.xcodeproj",
83
+ key: "CurrentAppVersion",
84
+ value: ":version (:build)",
85
+ configuration: "Debug"
86
+ ```
87
+
88
+ ## Example
89
+
90
+ See the SettingsBundleExample subdirectory for a sample project that
91
+ makes use of this action.
92
+
93
+ First build and run the sample project on a simulator. It should show
94
+ you the current
95
+ version and build number: 1.0.0 (1). This info is taken from the main
96
+ bundle.
97
+
98
+ If you visit the Settings app and look at the settings for
99
+ SettingsBundleExample, you'll see the same version and build number
100
+ as well as a blank field for the Build date.
101
+
102
+ Now run Fastlane:
103
+
104
+ ```bash
105
+ bundle install
106
+ bundle exec fastlane test
107
+ ```
108
+
109
+ Now run the sample app again. It should display 1.0.0 (2). Visit the
110
+ Settings app under the settings for the app to see the update to the
111
+ settings bundle. The Build date field should show the current date.
112
+
113
+ ## Run tests for this plugin
114
+
115
+ To run both the tests, and code style validation, run
116
+
117
+ ```
118
+ rake
119
+ ```
120
+
121
+ To automatically fix many of the styling issues, use
122
+ ```
123
+ rubocop -a
124
+ ```
125
+
126
+ ## Issues and Feedback
127
+
128
+ For any other issues and feedback about this plugin, please submit it to this repository.
129
+
130
+ ## Troubleshooting
131
+
132
+ If you have trouble using plugins, check out the [Plugins Troubleshooting](https://github.com/fastlane/fastlane/blob/master/fastlane/docs/PluginsTroubleshooting.md) doc in the main `fastlane` repo.
133
+
134
+ ## Using `fastlane` Plugins
135
+
136
+ For more information about how the `fastlane` plugin system works, check out the [Plugins documentation](https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Plugins.md).
137
+
138
+ ## About `fastlane`
139
+
140
+ `fastlane` is the easiest way to automate beta deployments and releases for your iOS and Android apps. To learn more, check out [fastlane.tools](https://fastlane.tools).
@@ -0,0 +1,16 @@
1
+ require 'fastlane/plugin/settings_bundle/version'
2
+
3
+ module Fastlane
4
+ module SettingsBundle
5
+ # Return all .rb files inside the "actions" and "helper" directory
6
+ def self.all_classes
7
+ Dir[File.expand_path('**/{actions,helper}/*.rb', File.dirname(__FILE__))]
8
+ end
9
+ end
10
+ end
11
+
12
+ # By default we want to import all available actions and helpers
13
+ # A plugin can contain any number of actions and plugins
14
+ Fastlane::SettingsBundle.all_classes.each do |current|
15
+ require current
16
+ end
@@ -0,0 +1,140 @@
1
+ # Copyright (c) 2016 Jimmy Dee
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ # of this software and associated documentation files (the "Software"), to deal
5
+ # in the Software without restriction, including without limitation the rights
6
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ # copies of the Software, and to permit persons to whom the Software is
8
+ # furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included in
11
+ # all copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ # SOFTWARE.
20
+
21
+ module Fastlane
22
+ module Actions
23
+ class UpdateSettingsBundleAction < Action
24
+ def self.run(params)
25
+ key = params[:key]
26
+ configuration = params[:configuration]
27
+ file = params[:file]
28
+ value = params[:value]
29
+
30
+ # try to open project file (raises)
31
+ project = Xcodeproj::Project.open params[:xcodeproj]
32
+
33
+ helper = Helper::SettingsBundleHelper
34
+
35
+ settings = helper.settings_from_project project, configuration
36
+
37
+ formatted_value = helper.formatted_value value, settings
38
+
39
+ helper.update_settings_plist_title_setting project, file, key,
40
+ formatted_value
41
+ rescue => e
42
+ UI.user_error! e.message
43
+ end
44
+
45
+ def self.description
46
+ "Fastlane plugin action to update static settings in an iOS settings bundle"
47
+ end
48
+
49
+ def self.author
50
+ "Jimmy Dee"
51
+ end
52
+
53
+ def self.details
54
+ "This action is used to automatically update a Title entry in a plist\n" \
55
+ "in an app's Settings bundle. It can be used to update the current\n" \
56
+ "version and/or build number automatically after they have been \n" \
57
+ "updated, e.g. by the increment_version_number or increment_build_number\n" \
58
+ "actions."
59
+ end
60
+
61
+ def self.available_options
62
+ [
63
+ # Required parameters
64
+ FastlaneCore::ConfigItem.new(key: :xcodeproj,
65
+ env_name: "SETTINGS_BUNDLE_XCODEPROJ",
66
+ description: "An Xcode project file whose settings bundle to update",
67
+ optional: false,
68
+ type: String),
69
+ FastlaneCore::ConfigItem.new(key: :key,
70
+ env_name: "SETTINGS_BUNDLE_KEY",
71
+ description: "The user defaults key to update in the settings bundle",
72
+ optional: false,
73
+ type: String),
74
+ FastlaneCore::ConfigItem.new(key: :value,
75
+ env_name: "SETTINGS_BUNDLE_VALUE",
76
+ description: "Value to set with optional :version and :build included",
77
+ optional: false,
78
+ type: String),
79
+
80
+ # Optional parameters
81
+ FastlaneCore::ConfigItem.new(key: :configuration,
82
+ env_name: "SETTINGS_BUNDLE_CONFIGURATION",
83
+ description: "The build configuration to use for the Info.plist file",
84
+ optional: true,
85
+ default_value: "Release",
86
+ type: String),
87
+ FastlaneCore::ConfigItem.new(key: :file,
88
+ env_name: "SETTINGS_BUNDLE_FILE",
89
+ description: "The plist file in the Settings.bundle to update",
90
+ optional: true,
91
+ default_value: "Root.plist",
92
+ type: String)
93
+ ]
94
+ end
95
+
96
+ def self.example_code
97
+ [
98
+ <<-EOF
99
+ update_settings_bundle(
100
+ xcodeproj: "MyProject.xcodeproj",
101
+ key: "CurrentAppVersion",
102
+ value: ":version (:build)"
103
+ )
104
+ EOF,
105
+ <<-EOF
106
+ update_settings_bundle(
107
+ xcodeproj: "MyProject.xcodeproj",
108
+ file: "About.plist",
109
+ key: "CurrentAppVersion",
110
+ value: ":version (:build)"
111
+ )
112
+ EOF,
113
+ <<-EOF
114
+ update_settings_bundle(
115
+ xcodeproj: "MyProject.xcodeproj",
116
+ key: "BuildDate",
117
+ value: Time.now.strftime("%Y-%m-%d")
118
+ )
119
+ EOF,
120
+ <<-EOF
121
+ update_settings_bundle(
122
+ xcodeproj: "MyProject.xcodeproj",
123
+ key: "CurrentAppVersion",
124
+ value: ":version (:build)",
125
+ configuration: "Debug"
126
+ )
127
+ EOF
128
+ ]
129
+ end
130
+
131
+ def self.is_supported?(platform)
132
+ platform == :ios
133
+ end
134
+
135
+ def self.category
136
+ :project
137
+ end
138
+ end
139
+ end
140
+ end
@@ -0,0 +1,126 @@
1
+ # Copyright (c) 2016 Jimmy Dee
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ # of this software and associated documentation files (the "Software"), to deal
5
+ # in the Software without restriction, including without limitation the rights
6
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ # copies of the Software, and to permit persons to whom the Software is
8
+ # furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included in
11
+ # all copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ # SOFTWARE.
20
+
21
+ require 'plist'
22
+
23
+ module Fastlane
24
+ module Helper
25
+ class SettingsBundleHelper
26
+ Settings = Struct.new "Settings", :version, :build
27
+
28
+ class << self
29
+ # Takes a value, a version number and a build number and
30
+ # returns a formatted string.
31
+ # :version is replaced by the version number. :build
32
+ # is replaced by the build number. Neither the version nor
33
+ # the build number is required. Omitting both from the
34
+ # format will result in the format being returned as the value.
35
+ #
36
+ # :value: A string value containing :version, :build, neither or both
37
+ # :settings: A Settings struct containing settings from a project
38
+ def formatted_value(value, settings)
39
+ value.gsub(/:version/, settings.version.to_s).gsub(/:build/, settings.build.to_s)
40
+ end
41
+
42
+ # Takes an open Xcodeproj::Project and extracts the current
43
+ # settings, returning a Settings struct with settings data.
44
+ # Raises on error.
45
+ #
46
+ # :project: An open Xcodeproj::Project via Xcodeproj::Project.open, e.g.
47
+ # :configuration: A valid build configuration in the project
48
+ def settings_from_project(project, configuration)
49
+ # find the first non-test, non-extension target
50
+ # TODO: Make this a :target parameter
51
+ target = project.targets.find { |t| !t.test_target_type? && !t.extension_target_type? }
52
+ raise "No application target found" if target.nil?
53
+
54
+ # find the Info.plist paths for all configurations
55
+ info_plist_paths = target.resolved_build_setting "INFOPLIST_FILE"
56
+
57
+ raise "INFOPLIST_FILE not found in target" if info_plist_paths.nil? or info_plist_paths.empty?
58
+
59
+ # this can differ from one configuration to another.
60
+ # take from Release, since only one Settings.bundle per project
61
+ # (not per configuration)
62
+ release_info_plist_path = info_plist_paths[configuration]
63
+
64
+ raise "Info.plist not found for configuration #{configuration}" if release_info_plist_path.nil?
65
+
66
+ project_parent = File.dirname project.path
67
+
68
+ release_info_plist_path = File.join project_parent, release_info_plist_path
69
+
70
+ # try to open and parse the Info.plist (raises)
71
+ info_plist = Plist.parse_xml release_info_plist_path
72
+
73
+ # increments already happened. read the current state.
74
+ current_marketing_version = info_plist["CFBundleShortVersionString"]
75
+ current_build_number = info_plist["CFBundleVersion"]
76
+
77
+ raise "CFBundleShortVersionString not found in Info.plist" if current_marketing_version.nil?
78
+ raise "CFBundleVersion not found in Info.plist" if current_build_number.nil?
79
+
80
+ Settings.new current_marketing_version, current_build_number
81
+ end
82
+
83
+ # Takes an open Xcodeproj::Project, extracts the settings bundle
84
+ # and updates the specified setting key in the specified file
85
+ # to the specified value. Only valid for title items. Raises
86
+ # on error.
87
+ #
88
+ # :project: An open Xcodeproj::Project, obtained from Xcodeproj::Project.open, e.g.
89
+ # :file: A settings plist file in the Settings.bundle, usually "Root.plist"
90
+ # :key: A valid NSUserDefaults key in the Settings.bundle
91
+ # :value: A new value for the key
92
+ def update_settings_plist_title_setting(project, file, key, value)
93
+ settings_bundle = project.files.find { |f| f.path =~ /Settings.bundle/ }
94
+
95
+ raise "Settings.bundle not found in project" if settings_bundle.nil?
96
+
97
+ settings_bundle_path = settings_bundle.path
98
+
99
+ project_parent = File.dirname project.path
100
+
101
+ plist_path = File.join project_parent, settings_bundle_path, file
102
+
103
+ # raises
104
+ settings_plist = Plist.parse_xml plist_path
105
+ preference_specifiers = settings_plist["PreferenceSpecifiers"]
106
+
107
+ raise "#{file} is not a settings plist file" if preference_specifiers.nil?
108
+
109
+ # Find the specifier for the supplied key
110
+ title_specifier = preference_specifiers.find do |specifier|
111
+ specifier["Key"] == key
112
+ end
113
+
114
+ raise "preference specifier for key #{key} not found in #{file}" if title_specifier.nil?
115
+ raise "preference for key #{key} must be of type title" unless title_specifier["Type"] == "PSTitleValueSpecifier"
116
+
117
+ # Update to the new value. Old value need not be present.
118
+ title_specifier["DefaultValue"] = value.to_s
119
+
120
+ # Save (raises)
121
+ Plist::Emit.save_plist settings_plist, plist_path
122
+ end
123
+ end
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,5 @@
1
+ module Fastlane
2
+ module SettingsBundle
3
+ VERSION = "1.0.0"
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,161 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fastlane-plugin-settings_bundle
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Jimmy Dee
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-11-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: plist
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: xcodeproj
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.4.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 1.4.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: fastlane
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: 1.106.2
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: 1.106.2
125
+ description:
126
+ email: jgvdthree@gmail.com
127
+ executables: []
128
+ extensions: []
129
+ extra_rdoc_files: []
130
+ files:
131
+ - LICENSE
132
+ - README.md
133
+ - lib/fastlane/plugin/settings_bundle.rb
134
+ - lib/fastlane/plugin/settings_bundle/actions/update_settings_bundle_action.rb
135
+ - lib/fastlane/plugin/settings_bundle/helper/settings_bundle_helper.rb
136
+ - lib/fastlane/plugin/settings_bundle/version.rb
137
+ homepage: https://github.com/jdee/settings-bundle
138
+ licenses:
139
+ - MIT
140
+ metadata: {}
141
+ post_install_message:
142
+ rdoc_options: []
143
+ require_paths:
144
+ - lib
145
+ required_ruby_version: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ required_rubygems_version: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
155
+ requirements: []
156
+ rubyforge_project:
157
+ rubygems_version: 2.6.8
158
+ signing_key:
159
+ specification_version: 4
160
+ summary: Fastlane plugin to update static settings in an iOS settings bundle
161
+ test_files: []