unlimit 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 42cbe91c40dae996ebf366b44f131e5df346e8d8e3f8ad1820565af314413d78
4
- data.tar.gz: 644cde5212c4efeae10b50380fc3776d20882aacfa42140f9b64e6f5e84cbfb3
3
+ metadata.gz: 864ee31974d738b3a807e9dfc681453675c8076f9e99b5e92dc8996d7b14f115
4
+ data.tar.gz: b6de9ff30673b7f7ee0ba00d9bb913c2192e7f6891cd39830fcf6874a6f110dd
5
5
  SHA512:
6
- metadata.gz: e711fff69333c8c8fd4cfe6304eacb24c7e590ff3155a08a9e530d10c8019e067562178ca0152d542e3421e8a7fab3640b1648719e6722484d3dc94f86f641b8
7
- data.tar.gz: 630c7bbcf52f10ef5a5b650b416e02f18a13958114d82f7cd7611c57bb6c6ff07da7191188a40fb56e5778e144f0af68a98d9e9107d597ee0883ca08425fab5e
6
+ metadata.gz: dacc6bbd3d729b9ead635d2f09ce7ffc0832f65534ccc7aba0954f285b62fdf8b9ea6887372f7767c042784853daa007ec5ea44386f7503d2bfc78f105bbcfc5
7
+ data.tar.gz: 6aa08686cd9bbeeefdaf74e1c2294671c07e1002493c5cf632d67010fc37eafa3041c8b2624a953aa125c17a7efb54dd23f8ad54a6a3fc4a0764a90abc941639
@@ -0,0 +1,22 @@
1
+ # Change Log
2
+
3
+
4
+ ## [0.0.2](https://github.com/biocross/unlimit/releases/tag/0.0.2)
5
+ Released on 2019-08-15.
6
+
7
+ #### Added
8
+ - Unlimit can now autodetect your Personal Team ID, or an interactive selection when it's unsure
9
+ - Automatically generates a unique App Group linked to your Bundle ID, and activates app groups if they are being used in the project.
10
+ - Automatically disables Fabric build phase script to avoid the annoying `New App ID added successfully` emails. This can be disabled using the `--keep_fabric` flag.
11
+ - Added `--team_id` flag to set signing team ID manually
12
+ - Added `--version` flag to check unlimit version
13
+
14
+ ### Fixed
15
+ - Only remove App Extensions if they exist
16
+ - Don't disable `SafariKeychain` Capability because it doesn't affect signing
17
+
18
+ ## [0.0.1](https://github.com/biocross/unlimit/releases/tag/0.0.1)
19
+ Released on 2019-07-26.
20
+
21
+ #### Added
22
+ - Initial release 🎉
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- unlimit (0.0.1)
4
+ unlimit (0.0.2)
5
5
  configure_extensions
6
6
  fastlane
7
7
  plist
@@ -45,7 +45,7 @@ GEM
45
45
  faraday_middleware (0.13.1)
46
46
  faraday (>= 0.7.4, < 1.0)
47
47
  fastimage (2.1.5)
48
- fastlane (2.128.0)
48
+ fastlane (2.128.1)
49
49
  CFPropertyList (>= 2.3, < 4.0.0)
50
50
  addressable (>= 2.3, < 3.0.0)
51
51
  babosa (>= 1.0.2, < 2.0.0)
data/README.md CHANGED
@@ -1,18 +1,20 @@
1
1
  # Unlimit 🚀📲
2
2
 
3
- Unlimit is a simple tool to quickly run your app on your device without worrying about the 100 device limit per developer account set by Apple. It achieves this by **temporarily switching your Xcode Project to the `Personal Team`**.
3
+ Unlimit is a simple tool to quickly run your app on your device without worrying about the 100 device limit per developer account set by Apple. It achieves this by temporarily switching your Xcode Project to your [free](https://github.com/biocross/unlimit#do-i-require-a-paid-apple-developer-account-to-use-this) personal team (`Personal Team`).
4
4
 
5
5
  > In a nutsell, unlimit fixes this:
6
6
 
7
7
  <img width="350" src="https://github.com/biocross/unlimit/raw/master/images/max_devices.png" alt="Xcode Device Limit Reached Error">
8
8
 
9
+ **Note that all changes unlimit makes to your project are local on your mac, and do not in anyway affect the configuration on your Apple Developer Portal.**
10
+
9
11
  ### Why can't I just do it myself?
10
12
 
11
13
  Well, you can, if your project is simple. However, if your project has capabilities like **Push Notifications**, **Background Modes** & **App Extensions**, things get complicated, since these require you to configure your `Personal Team` with all these entitlements. Unlimit gets rid of all this mess, and gets you quickly up and running on your device.
12
14
 
13
15
  ### What's the catch?
14
16
 
15
- Well, since unlimit temporarily removes capabilities like **App Extensions, Push Notifications** & more from your project, you **can't** test these features on your device when using your personal team.
17
+ Well, since unlimit temporarily removes capabilities like **App Extensions, Push Notifications** & more from your project, you **cannot** test these features on your device when using your personal team.
16
18
 
17
19
  ### How do I undo unlimit's changes?
18
20
 
@@ -20,37 +22,54 @@ We recommend you run unlimit when you have no staged changes, so that you can si
20
22
 
21
23
  ## Installation
22
24
 
23
- Add this line to your application's Gemfile:
25
+ If your iOS/Mac project does not have a `Gemfile` yet, [learn how to set it up here](https://www.mokacoding.com/blog/ruby-for-ios-developers-bundler/). It's highly recommended you use [**bundler**](https://bundler.io/) to maintain consistent versions of tools like `cocoapods`, `fastlane` etc within your team.
26
+
27
+ To use unlimit, add this line to your app's Gemfile:
24
28
 
25
29
  ```ruby
26
30
  gem 'unlimit'
27
31
  ```
28
32
 
29
- And then execute:
30
-
31
- $ bundle install && bundle exec unlimit
33
+ And then install it using [bundler](https://bundler.io/) by executing:
32
34
 
33
- Or install it yourself as:
35
+ $ bundle install
34
36
 
35
- $ gem install unlimit
36
37
 
37
38
  ## Usage
38
39
 
39
- Just execute:
40
+ After installing the gem, just run:
40
41
 
41
42
  $ bundle exec unlimit
42
43
 
43
44
  and unlimit will do it's magic.
44
45
 
45
- ## Development
46
+ ## Parameters
47
+ All these parameters are optional, as unlimit can **autodetect** most of these. You can use these when unlimit is unable to figure them out, or to pass in overrides.
46
48
 
47
- After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
48
-
49
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
49
+ | Parameter | Description | Example |
50
+ | --- | --- | --- |
51
+ | `project` | The **.xcodeproj** project file to use | `--project MyApp.xcodeproj` |
52
+ | `target` | The **app target** you want to run on your device | `--target MyApp` |
53
+ | `plist` | The **path** to your app's **Info.plist** file | `--plist MyApp/MyApp-Info.plist` |
54
+ | `team_id` | The Code Signing **Team ID** to use | `--team_id A1B2C3D4E5A` |
55
+ | `keep_fabric` | Unlimit automatically disables Fabric's build phase script, to avoid the annoying `New app ID added` email sent by Fabric. Use this flag for keep the Fabric script. (Note: This does not affect Fabric/Crashlytics functionality, only disables it's dSYM uploading shell script) | `--keep_fabric` |
56
+ | `version` | Print the current unlimit version you're using and exit | `--version` |
50
57
 
51
58
  ## Contributing
52
59
 
53
- Bug reports and pull requests are welcome on GitHub at https://github.com/biocross/unlimit
60
+ Bug reports and pull requests are welcome. Any feedback or feature suggesions are also encouraged.
61
+
62
+ ## More FAQs
63
+
64
+ ### Do I require a paid apple developer account to use this?
65
+
66
+ No, you can get a `personal team` using a free Apple Developer Account, since Apple now allows testing on device with a free developer accounts as well. As apple puts it:
67
+
68
+ > Xcode 7 and Xcode 8 allow you to select the free personal team provided with your Apple ID for signing your app. This team allows you to build apps for your personal use on devices owned by you, but it does not allow you to code sign apps destined for the App Store or for enterprise use.
69
+
70
+ >You can identify this account by looking in the accounts tab of the Xcode preferences. It is also displayed in the team menu displayed in a target's general build settings. Your personal account will be the account with the string '(Personal Team)' beside the name.
71
+
72
+ Source: https://developer.apple.com/library/archive/qa/qa1915/_index.html
54
73
 
55
74
  ## License
56
75
 
@@ -1,14 +1,19 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'unlimit'
4
5
  require 'optparse'
5
6
 
7
+ unlimiter = Unlimit::CLI.new
6
8
  options = {}
9
+
7
10
  OptionParser.new do |opt|
8
11
  opt.on('--project XCODEPROJ') { |o| options['project_path'] = o }
9
12
  opt.on('--plist INFO_PLIST') { |o| options['plist_path'] = o }
10
13
  opt.on('--target TARGET_NAME') { |o| options['target_name'] = o }
14
+ opt.on('--team_id TEAM_ID') { |o| options['team_id'] = o }
15
+ opt.on('--keep_fabric') { |_o| options['keep_fabric'] = true }
16
+ opt.on('--version') { unlimiter.showVersion }
11
17
  end.parse!
12
18
 
13
- unlimiter = Unlimit::CLI.new
14
- unlimiter.start(options)
19
+ unlimiter.start(options)
@@ -5,12 +5,19 @@ require 'xcodeproj'
5
5
  require 'securerandom'
6
6
  require 'json'
7
7
  require 'plist'
8
+ require 'open3'
9
+ require 'highline'
8
10
 
9
11
  ProjectPathKey = 'project_path'
10
12
  PlistPathKey = 'plist_path'
11
13
  TargetNameKey = 'target_name'
14
+ TeamIDKey = 'team_id'
15
+ KeepFabricKey = 'keep_fabric'
12
16
  InfoPlistBuildSettingKey = 'INFOPLIST_FILE'
13
17
  ProductTypeApplicationTarget = 'com.apple.product-type.application'
18
+ FastlaneEnvironmentVariables = 'LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 FASTLANE_SKIP_UPDATE_CHECK=true'
19
+ CapabilitiesWhitelist = ['com.apple.SafariKeychain'].freeze
20
+ FastFilePath = 'fastlane/Fastfile'
14
21
  Divider = '================================================'
15
22
 
16
23
  module Unlimit
@@ -19,9 +26,17 @@ module Unlimit
19
26
  puts "Using #{parameter}: #{value}".green + " (Use flag --#{flag} to override)".yellow
20
27
  end
21
28
 
29
+ def showVersion
30
+ puts Divider
31
+ puts "You're using unlimit version #{Unlimit::VERSION}".green
32
+ puts 'https://github.com/biocross/unlimit'.yellow
33
+ puts Divider
34
+ abort
35
+ end
36
+
22
37
  def start(options)
23
38
  puts Divider
24
- puts ' unlimit 🚀📲 '
39
+ puts " unlimit 🚀📲 (#{Unlimit::VERSION}) "
25
40
  puts ' Switching your project to Personal Team! '.yellow
26
41
  puts Divider
27
42
 
@@ -29,9 +44,14 @@ module Unlimit
29
44
  project_path = ''
30
45
  plist_path = ''
31
46
  target_name = ''
47
+ personal_team_id = ''
48
+ uses_app_groups = false
49
+ entitlements_file = ''
32
50
  extensions = []
33
51
  target = nil
34
52
 
53
+ cli = HighLine.new
54
+
35
55
  # Check for a valid xcode_project
36
56
  if xcode_project_files.count == 1 || options.key?(ProjectPathKey)
37
57
  project_path = if options.key?(ProjectPathKey)
@@ -58,9 +78,19 @@ module Unlimit
58
78
  else
59
79
  project.targets.each do |current_target|
60
80
  next unless current_target.product_type == ProductTypeApplicationTarget
81
+
61
82
  target = current_target
62
83
  target_name = current_target.name
63
84
  putsWithOverrides('target', target_name, TargetNameKey)
85
+
86
+ # Remove Fabric Script build phase to stop the annoying "new app" email
87
+ unless options.key?(KeepFabricKey)
88
+ current_target.build_phases.each do |build_phase|
89
+ next unless build_phase.is_a?(Xcodeproj::Project::Object::PBXShellScriptBuildPhase) && build_phase.shell_script.include?('/Fabric/run')
90
+
91
+ build_phase.shell_script = '#' + build_phase.shell_script
92
+ end
93
+ end
64
94
  break
65
95
  end
66
96
  end
@@ -90,6 +120,41 @@ module Unlimit
90
120
  end
91
121
  end
92
122
 
123
+ if options.key?(TeamIDKey)
124
+ personal_team_id = options[TeamIDKey]
125
+ putsWithOverrides('Team ID', personal_team_id, TeamIDKey)
126
+ else
127
+ valid_codesigning_identities, stderr, status = Open3.capture3('security find-identity -p codesigning -v')
128
+ personal_teams = valid_codesigning_identities.scan(/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i)
129
+ if personal_teams.size == 1
130
+ personal_team_name = personal_teams.first.strip
131
+ personal_team_id, stderr, status = Open3.capture3("security find-certificate -c #{personal_team_name} -p | openssl x509 -text | grep -o OU=[^,]* | grep -v Apple | sed s/OU=//g")
132
+ personal_team_id = personal_team_id.strip
133
+ putsWithOverrides("Team ID (from: #{personal_team_name})", personal_team_id, TeamIDKey)
134
+ else
135
+ puts "\nYou have quite a few developer identities on your machine. unlimit is unable to decide which one to use 😅".yellow
136
+ puts 'If you know the Team ID to use, pass it with the --teamid flag like --teamid 6A2T6455Y3'.yellow
137
+ puts "\nFor now, choose one from the list below: (The one most likely to work will have your email)".yellow
138
+ puts 'Which codesigning identity should unlimit use?'.green
139
+ selected_team = ''
140
+ codesigning_options = valid_codesigning_identities.split("\n")
141
+ codesigning_options = codesigning_options.select { |line| line.include?(')') }
142
+ codesigning_options = codesigning_options.map { |identity| identity.scan(/\d+\) (.+)/).first.first }
143
+ cli.choose do |menu|
144
+ menu.prompt = 'Select one by entering the number: '
145
+ codesigning_options.each do |identity|
146
+ menu.choice(identity) { cli.say(identity); selected_team = identity }
147
+ end
148
+ end
149
+
150
+ personal_team = selected_team.scan(/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i)
151
+ personal_team_name = personal_team.first.strip
152
+ personal_team_id, stderr, status = Open3.capture3("security find-certificate -c #{personal_team_name} -p | openssl x509 -text | grep -o OU=[^,]* | grep -v Apple | sed s/OU=//g")
153
+ personal_team_id = personal_team_id.strip
154
+ putsWithOverrides("Team ID (from: #{personal_team_name})", personal_team_id, TeamIDKey)
155
+ end
156
+ end
157
+
93
158
  puts "================================================\n"
94
159
 
95
160
  # Turn off capabilities that require entitlements
@@ -103,7 +168,13 @@ module Unlimit
103
168
 
104
169
  capabilities = val['SystemCapabilities']
105
170
  capabilities.each do |key, val|
106
- if val.key?('enabled')
171
+ next unless val.key?('enabled')
172
+
173
+ if key.include?('com.apple.ApplicationGroups.iOS')
174
+ uses_app_groups = true
175
+ end
176
+
177
+ unless CapabilitiesWhitelist.include?(key)
107
178
  puts ' Turning OFF ' + key
108
179
  capabilities[key]['enabled'] = '0'
109
180
  end
@@ -115,8 +186,9 @@ module Unlimit
115
186
  # Remove Entitlements
116
187
  puts 'Clearing entitlements...'.red
117
188
  Dir.glob('**/*.entitlements').each do |source_file|
118
- empty_plist = {}.to_plist
119
- File.open(source_file, 'w') { |file| file.puts empty_plist }
189
+ entitlements_plist = uses_app_groups ? { "com.apple.security.application-groups": '' }.to_plist : {}.to_plist
190
+ entitlements_file = source_file if uses_app_groups
191
+ File.open(source_file, 'w') { |file| file.puts entitlements_plist }
120
192
  end
121
193
 
122
194
  # Remove Capability Keys from Plist
@@ -128,17 +200,41 @@ module Unlimit
128
200
  # Change Bundle Identifier
129
201
  puts 'Changing bundle identifier...'.red
130
202
  bundle_identifier = "com.unlimit.#{SecureRandom.uuid}"
131
- system("bundle exec fastlane run update_app_identifier plist_path:#{plist_path} app_identifier:#{bundle_identifier}")
203
+ system("#{FastlaneEnvironmentVariables} bundle exec fastlane run update_app_identifier plist_path:#{plist_path} app_identifier:#{bundle_identifier}")
204
+
205
+ if uses_app_groups # Create a temporary fastfile, and set the app group identifiers
206
+ fastfile = "lane :set_app_group do
207
+ update_app_group_identifiers(entitlements_file: \"#{entitlements_file}\", app_group_identifiers: ['group.#{bundle_identifier}'])
208
+ end"
209
+
210
+ existingFastfile = ''
211
+ if File.file?(FastFilePath)
212
+ File.open('./fastlane/Fastfile', 'r') do |file|
213
+ existingFastfile = file.read
214
+ end
215
+ end
216
+ File.open(FastFilePath, 'w') do |file|
217
+ file.write(fastfile)
218
+ end
219
+ system("#{FastlaneEnvironmentVariables} bundle exec fastlane set_app_group")
220
+ existingFastfile.empty? ? File.delete(FastFilePath) : File.open('./fastlane/Fastfile', 'w') { |file| file.write(existingFastfile) }
221
+ end
132
222
 
133
223
  puts 'Enabling Automatic Code Signing...'.red
134
- system("bundle exec fastlane run automatic_code_signing use_automatic_signing:true targets:#{target_name}")
224
+ system("#{FastlaneEnvironmentVariables} bundle exec fastlane run automatic_code_signing use_automatic_signing:true targets:#{target_name}")
225
+
226
+ puts 'Switching to Personal Team...'.red
227
+ system("#{FastlaneEnvironmentVariables} bundle exec fastlane run update_project_team teamid:\"#{personal_team_id}\" targets:#{target_name}")
135
228
 
136
229
  # Remove App Extensions
137
- puts "Removing App Extensions: #{extensions.join(', ')}".red
138
- system("bundle exec configure_extensions remove #{project_path} #{target_name} #{extensions.join(' ')}")
230
+ unless extensions.empty?
231
+ app_extensions = extensions.join(', ')
232
+ puts "Removing App Extensions: #{app_extensions}".red
233
+ system("bundle exec configure_extensions remove #{project_path} #{target_name} #{app_extensions}")
234
+ end
139
235
 
140
236
  puts "\n#{Divider}"
141
- puts 'You\'re good to go! Just connect your device, switch to your \'Personal Team\', and hit run!'.green
237
+ puts 'You\'re good to go! Just connect your device and hit run!'.green
142
238
  puts Divider
143
239
  end
144
240
  end
@@ -1,3 +1,3 @@
1
1
  module Unlimit
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -1,43 +1,45 @@
1
+ # frozen_string_literal: true
1
2
 
2
- lib = File.expand_path("../lib", __FILE__)
3
+ lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require "unlimit/version"
5
+ require 'unlimit/version'
5
6
 
6
7
  Gem::Specification.new do |spec|
7
- spec.name = "unlimit"
8
+ spec.name = 'unlimit'
8
9
  spec.version = Unlimit::VERSION
9
- spec.authors = ["Siddharth Gupta"]
10
- spec.email = ["sids.1992@gmail.com"]
10
+ spec.authors = ['Siddharth Gupta']
11
+ spec.email = ['sids.1992@gmail.com']
11
12
 
12
- spec.summary = "Test your iOS projects on device despite the 100 device limit"
13
- spec.description = "Test your iOS projects on device despite the 100 device limit, by automatically switching to your personal team"
14
- spec.homepage = "https://github.com/biocross/unlimit"
15
- spec.license = "MIT"
13
+ spec.summary = 'Test your iOS projects on device despite the 100 device limit'
14
+ spec.description = 'Test your iOS projects on device despite the 100 device limit, by automatically switching to your personal team'
15
+ spec.homepage = 'https://github.com/biocross/unlimit'
16
+ spec.license = 'MIT'
16
17
 
17
18
  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
19
  # to allow pushing to a single host or delete this section to allow pushing to any host.
19
20
  if spec.respond_to?(:metadata)
20
- spec.metadata["homepage_uri"] = spec.homepage
21
- spec.metadata["source_code_uri"] = "https://github.com/biocross/unlimit"
22
- spec.metadata["changelog_uri"] = "https://github.com/biocross/unlimit"
21
+ spec.metadata['homepage_uri'] = spec.homepage
22
+ spec.metadata['source_code_uri'] = 'https://github.com/biocross/unlimit'
23
+ spec.metadata['changelog_uri'] = 'https://github.com/biocross/unlimit'
23
24
  else
24
- raise "RubyGems 2.0 or newer is required to protect against " \
25
- "public gem pushes."
25
+ raise 'RubyGems 2.0 or newer is required to protect against ' \
26
+ 'public gem pushes.'
26
27
  end
27
28
 
28
29
  # Specify which files should be added to the gem when it is released.
29
30
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
30
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
31
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
31
32
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
32
33
  end
33
- spec.executables = ["unlimit"]
34
- spec.require_paths = ["lib"]
34
+ spec.executables = ['unlimit']
35
+ spec.require_paths = ['lib']
35
36
 
36
- spec.add_dependency "xcodeproj"
37
- spec.add_dependency "plist"
38
- spec.add_dependency "fastlane"
39
- spec.add_dependency "configure_extensions"
40
-
41
- spec.add_development_dependency "bundler", "~> 1.17"
42
- spec.add_development_dependency "rake", "~> 10.0"
37
+ spec.add_dependency 'xcodeproj'
38
+ spec.add_dependency 'plist'
39
+ spec.add_dependency 'fastlane', '>= 2.116.0'
40
+ spec.add_dependency 'configure_extensions'
41
+ spec.add_dependency 'highline'
42
+
43
+ spec.add_development_dependency 'bundler', '~> 1.17'
44
+ spec.add_development_dependency 'rake', '~> 10.0'
43
45
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unlimit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Siddharth Gupta
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-26 00:00:00.000000000 Z
11
+ date: 2019-08-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xcodeproj
@@ -40,6 +40,20 @@ dependencies:
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: fastlane
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 2.116.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 2.116.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: configure_extensions
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - ">="
@@ -53,7 +67,7 @@ dependencies:
53
67
  - !ruby/object:Gem::Version
54
68
  version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
- name: configure_extensions
70
+ name: highline
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - ">="
@@ -104,6 +118,7 @@ extensions: []
104
118
  extra_rdoc_files: []
105
119
  files:
106
120
  - ".gitignore"
121
+ - CHANGELOG.md
107
122
  - Gemfile
108
123
  - Gemfile.lock
109
124
  - LICENSE.txt