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 +4 -4
- data/CHANGELOG.md +22 -0
- data/Gemfile.lock +2 -2
- data/README.md +33 -14
- data/bin/unlimit +7 -2
- data/lib/unlimit.rb +105 -9
- data/lib/unlimit/version.rb +1 -1
- data/unlimit.gemspec +26 -24
- metadata +18 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 864ee31974d738b3a807e9dfc681453675c8076f9e99b5e92dc8996d7b14f115
|
4
|
+
data.tar.gz: b6de9ff30673b7f7ee0ba00d9bb913c2192e7f6891cd39830fcf6874a6f110dd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dacc6bbd3d729b9ead635d2f09ce7ffc0832f65534ccc7aba0954f285b62fdf8b9ea6887372f7767c042784853daa007ec5ea44386f7503d2bfc78f105bbcfc5
|
7
|
+
data.tar.gz: 6aa08686cd9bbeeefdaf74e1c2294671c07e1002493c5cf632d67010fc37eafa3041c8b2624a953aa125c17a7efb54dd23f8ad54a6a3fc4a0764a90abc941639
|
data/CHANGELOG.md
ADDED
@@ -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 🎉
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
unlimit (0.0.
|
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.
|
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
|
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 **
|
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
|
-
|
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
|
30
|
-
|
31
|
-
$ bundle install && bundle exec unlimit
|
33
|
+
And then install it using [bundler](https://bundler.io/) by executing:
|
32
34
|
|
33
|
-
|
35
|
+
$ bundle install
|
34
36
|
|
35
|
-
$ gem install unlimit
|
36
37
|
|
37
38
|
## Usage
|
38
39
|
|
39
|
-
|
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
|
-
##
|
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
|
-
|
48
|
-
|
49
|
-
|
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
|
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
|
|
data/bin/unlimit
CHANGED
@@ -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
|
14
|
-
unlimiter.start(options)
|
19
|
+
unlimiter.start(options)
|
data/lib/unlimit.rb
CHANGED
@@ -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
|
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
|
-
|
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
|
-
|
119
|
-
|
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
|
-
|
138
|
-
|
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
|
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
|
data/lib/unlimit/version.rb
CHANGED
data/unlimit.gemspec
CHANGED
@@ -1,43 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
|
2
|
-
lib = File.expand_path(
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
5
|
+
require 'unlimit/version'
|
5
6
|
|
6
7
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
8
|
+
spec.name = 'unlimit'
|
8
9
|
spec.version = Unlimit::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
10
|
+
spec.authors = ['Siddharth Gupta']
|
11
|
+
spec.email = ['sids.1992@gmail.com']
|
11
12
|
|
12
|
-
spec.summary =
|
13
|
-
spec.description =
|
14
|
-
spec.homepage =
|
15
|
-
spec.license =
|
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[
|
21
|
-
spec.metadata[
|
22
|
-
spec.metadata[
|
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
|
25
|
-
|
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
|
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 = [
|
34
|
-
spec.require_paths = [
|
34
|
+
spec.executables = ['unlimit']
|
35
|
+
spec.require_paths = ['lib']
|
35
36
|
|
36
|
-
spec.add_dependency
|
37
|
-
spec.add_dependency
|
38
|
-
spec.add_dependency
|
39
|
-
spec.add_dependency
|
40
|
-
|
41
|
-
|
42
|
-
spec.add_development_dependency
|
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.
|
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-
|
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:
|
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
|