fastlane-plugin-settings_bundle 1.0.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 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: []