produce 0.5.1 → 0.6.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 +4 -4
- data/README.md +92 -16
- data/bin/produce +84 -0
- data/lib/produce/group.rb +95 -0
- data/lib/produce/options.rb +3 -4
- data/lib/produce/service.rb +186 -0
- data/lib/produce/version.rb +1 -1
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 93cc031b37e351db3b6af36a95dc165bf9c57a4a
|
4
|
+
data.tar.gz: 10bf2aad9349613fa910b4e74253c2d47ac1175e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4ab86cf7c202be714a6ff6ea56e6a0f90d8f0a10f9a116686807492560e9099e39a6385146602754d89b813ef3e2ef372a3c75f9a419de70d91ec06b65c5cdd6
|
7
|
+
data.tar.gz: 99cfc5623466c9135586bccc0917ae1a57aa60ba8fe31db4daca1723e4107251be799fd94993280f8253f795e5e07dd798c0a7ae8db54bd9e1105822f1e97a01
|
data/README.md
CHANGED
@@ -6,12 +6,12 @@
|
|
6
6
|
</a>
|
7
7
|
</h3>
|
8
8
|
<p align="center">
|
9
|
-
<a href="https://github.com/KrauseFx/deliver">deliver</a> •
|
10
|
-
<a href="https://github.com/KrauseFx/snapshot">snapshot</a> •
|
11
|
-
<a href="https://github.com/KrauseFx/frameit">frameit</a> •
|
12
|
-
<a href="https://github.com/KrauseFx/PEM">PEM</a> •
|
13
|
-
<a href="https://github.com/KrauseFx/sigh">sigh</a> •
|
14
|
-
<b>produce</b> •
|
9
|
+
<a href="https://github.com/KrauseFx/deliver">deliver</a> •
|
10
|
+
<a href="https://github.com/KrauseFx/snapshot">snapshot</a> •
|
11
|
+
<a href="https://github.com/KrauseFx/frameit">frameit</a> •
|
12
|
+
<a href="https://github.com/KrauseFx/PEM">PEM</a> •
|
13
|
+
<a href="https://github.com/KrauseFx/sigh">sigh</a> •
|
14
|
+
<b>produce</b> •
|
15
15
|
<a href="https://github.com/KrauseFx/cert">cert</a> •
|
16
16
|
<a href="https://github.com/KrauseFx/codes">codes</a> •
|
17
17
|
<a href="https://github.com/fastlane/spaceship">spaceship</a> •
|
@@ -41,11 +41,11 @@ Get in contact with the developer on Twitter: [@KrauseFx](https://twitter.com/Kr
|
|
41
41
|
|
42
42
|
-------
|
43
43
|
<p align="center">
|
44
|
-
<a href="#features">Features</a> •
|
45
|
-
<a href="#installation">Installation</a> •
|
46
|
-
<a href="#usage">Usage</a> •
|
47
|
-
<a href="#how-does-it-work">How does it work?</a> •
|
48
|
-
<a href="#tips">Tips</a> •
|
44
|
+
<a href="#features">Features</a> •
|
45
|
+
<a href="#installation">Installation</a> •
|
46
|
+
<a href="#usage">Usage</a> •
|
47
|
+
<a href="#how-does-it-work">How does it work?</a> •
|
48
|
+
<a href="#tips">Tips</a> •
|
49
49
|
<a href="#need-help">Need help?</a>
|
50
50
|
</p>
|
51
51
|
|
@@ -57,6 +57,9 @@ Get in contact with the developer on Twitter: [@KrauseFx](https://twitter.com/Kr
|
|
57
57
|
# Features
|
58
58
|
|
59
59
|
- **Create** new apps on both iTunes Connect and the Apple Developer Portal
|
60
|
+
- **Modify** Application Services on the Apple Developer Portal
|
61
|
+
- **Create** App Groups on the Apple Developer Portal
|
62
|
+
- **Associate** apps with App Groups on the Apple Developer Portal
|
60
63
|
- Support for **multiple Apple accounts**, storing your credentials securely in the Keychain
|
61
64
|
|
62
65
|
##### [Like this tool? Be the first to know about updates and new fastlane tools](https://tinyletter.com/krausefx)
|
@@ -66,14 +69,51 @@ Get in contact with the developer on Twitter: [@KrauseFx](https://twitter.com/Kr
|
|
66
69
|
|
67
70
|
# Usage
|
68
71
|
|
72
|
+
## Creating a new application
|
73
|
+
|
69
74
|
produce
|
70
|
-
|
71
|
-
# Parameters
|
72
75
|
|
73
|
-
|
76
|
+
To get a list of all available parameters:
|
74
77
|
|
75
78
|
produce --help
|
76
79
|
|
80
|
+
```
|
81
|
+
-u, --username STRING Your Apple ID Username (PRODUCE_USERNAME)
|
82
|
+
-a, --app_identifier STRING App Identifier (Bundle ID, e.g. com.krausefx.app) (PRODUCE_APP_IDENTIFIER)
|
83
|
+
-b, --bundle_identifier_suffix STRING App Identifier Suffix (Ignored if App Identifier does not ends with .*)
|
84
|
+
(PRODUCE_APP_IDENTIFIER_SUFFIX)
|
85
|
+
-q, --app_name STRING App Name (PRODUCE_APP_NAME)
|
86
|
+
-z, --app_version STRING Initial version number (e.g. '1.0') (PRODUCE_VERSION)
|
87
|
+
-s, --sku SKU Number (e.g. '1234') (PRODUCE_SKU)
|
88
|
+
-m, --language STRING Primary Language (e.g. 'English', 'German') (PRODUCE_LANGUAGE)
|
89
|
+
-c, --company_name STRING The name of your comapny. Only required if it's the first app you create
|
90
|
+
(PRODUCE_COMPANY_NAME)
|
91
|
+
-i, --skip_itc Skip the creation of the app on iTunes Connect (PRODUCE_SKIP_ITC)
|
92
|
+
-d, --skip_devcenter Skip the creation of the app on the Apple Developer Portal (PRODUCE_SKIP_DEVCENTER)
|
93
|
+
-t, --team_id STRING The ID of your team if you're in multiple teams (PRODUCE_TEAM_ID)
|
94
|
+
-l, --team_name STRING The name of your team if you're in multiple teams (PRODUCE_TEAM_NAME)
|
95
|
+
```
|
96
|
+
|
97
|
+
## Enabling / Disabling Application Services
|
98
|
+
|
99
|
+
If you want to enable Application Services for an App ID (HomeKit and HealthKit in this example):
|
100
|
+
|
101
|
+
produce enable_services --homekit --healthkit
|
102
|
+
|
103
|
+
If you want to disable Application Servies for an App ID (iCloud in this case):
|
104
|
+
|
105
|
+
produce disable_services --icloud
|
106
|
+
|
107
|
+
If you want to create a new App Group:
|
108
|
+
|
109
|
+
produce group -g group.krausefx -n "Example App Group"
|
110
|
+
|
111
|
+
If you want to associate an app with an App Group:
|
112
|
+
|
113
|
+
produce associate_group -a com.krausefx.app group.krausefx
|
114
|
+
|
115
|
+
# Parameters
|
116
|
+
|
77
117
|
```
|
78
118
|
-u, --username STRING Your Apple ID Username (PRODUCE_USERNAME)
|
79
119
|
-a, --app_identifier STRING App Identifier (Bundle ID, e.g. com.krausefx.app) (PRODUCE_APP_IDENTIFIER)
|
@@ -90,19 +130,55 @@ Get the latest list of all available parameters;
|
|
90
130
|
-v, --version Display version information
|
91
131
|
```
|
92
132
|
|
133
|
+
Get a list of all available options using
|
134
|
+
|
135
|
+
produce enable_services --help
|
136
|
+
|
137
|
+
```
|
138
|
+
--app-group Enable App Groups
|
139
|
+
--associated-domains Enable Associated Domains
|
140
|
+
--data-protection STRING Enable Data Protection, suitable values are "complete", "unlessopen" and "untilfirstauth"
|
141
|
+
--healthkit Enable HealthKit
|
142
|
+
--homekit Enable HomeKit
|
143
|
+
--wireless-conf Enable Wireless Accessory Configuration
|
144
|
+
--icloud STRING Enable iCloud, suitable values are "legacy" and "cloudkit"
|
145
|
+
--inter-app-audio Enable Inter-App-Audio
|
146
|
+
--passbook Enable Passbook
|
147
|
+
--push-notification Enable Push notification (only enables the service, does not configure certificates)
|
148
|
+
--vpn-conf Enable VPN Configuration
|
149
|
+
```
|
150
|
+
|
151
|
+
produce disable_services --help
|
152
|
+
|
153
|
+
```
|
154
|
+
--app-group Disable App Groups
|
155
|
+
--associated-domains Disable Associated Domains
|
156
|
+
--data-protection Disable Data Protection
|
157
|
+
--healthkit Disable HealthKit
|
158
|
+
--homekit Disable HomeKit
|
159
|
+
--wireless-conf Disable Wireless Accessory Configuration
|
160
|
+
--icloud Disable iCloud
|
161
|
+
--inter-app-audio Disable Inter-App-Audio
|
162
|
+
--passbook Disable Passbook
|
163
|
+
--push-notification Disable Push notifications
|
164
|
+
--vpn-conf Disable VPN Configuration
|
165
|
+
```
|
166
|
+
|
93
167
|
## Environment Variables
|
94
168
|
In case you want to pass more information to `produce` using environment variables:
|
95
169
|
|
96
170
|
- `PRODUCE_USERNAME` (your iTunes Connect username)
|
97
171
|
- `PRODUCE_APP_IDENTIFIER` (the bundle identifier of the new app)
|
98
172
|
- `PRODUCE_APP_NAME` (the name of the new app)
|
173
|
+
- `PRODUCE_GROUP_IDENTIFIER` (the group identifier of the new app group)
|
174
|
+
- `PRODUCE_GROUP_NAME` (the name of the new app group)
|
99
175
|
- `PRODUCE_LANGUAGE` (the language you want your app to use, e.g. `English`, `German`)
|
100
176
|
- `PRODUCE_VERSION` (the initial app version)
|
101
177
|
- `PRODUCE_SKU` (the SKU you want to use, which must be a unique number)
|
102
178
|
- `PRODUCE_SKIP_ITC` (should iTunes Connect app be created)
|
103
179
|
- `PRODUCE_SKIP_DEVCENTER` (should Apple Developer Portal app be created)
|
104
180
|
- `PRODUCE_TEAM_ID` (the Team ID, e.g. `Q2CBPK58CA`)
|
105
|
-
- `PRODUCE_TEAM_NAME` (the Team Name, e.g. `Felix Krause`)
|
181
|
+
- `PRODUCE_TEAM_NAME` (the Team Name, e.g. `Felix Krause`)
|
106
182
|
|
107
183
|
|
108
184
|
## [`fastlane`](https://github.com/KrauseFx/fastlane) Integration
|
@@ -150,7 +226,7 @@ You'll still have to fill out the remaining information (like screenshots, app d
|
|
150
226
|
- [`codes`](https://github.com/KrauseFx/codes): Create promo codes for iOS Apps using the command line
|
151
227
|
- [`spaceship`](https://github.com/fastlane/spaceship): Ruby library to access the Apple Dev Center and iTunes Connect
|
152
228
|
- [`pilot`](https://github.com/fastlane/pilot): The best way to manage your TestFlight testers and builds from your terminal
|
153
|
-
- [`boarding`](https://github.com/fastlane/boarding): The easiest way to invite your TestFlight beta testers
|
229
|
+
- [`boarding`](https://github.com/fastlane/boarding): The easiest way to invite your TestFlight beta testers
|
154
230
|
|
155
231
|
##### [Like this tool? Be the first to know about updates and new fastlane tools](https://tinyletter.com/krausefx)
|
156
232
|
|
data/bin/produce
CHANGED
@@ -35,6 +35,90 @@ class ProduceApplication
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
+
command :enable_services do |c|
|
39
|
+
c.syntax = 'produce enable_services -a APP_IDENTIFIER SERVICE1, SERVICE2, ...'
|
40
|
+
c.description = 'Enable specific Application Services for a specific app on the Apple Developer Portal'
|
41
|
+
c.example 'Enable HealthKit, HomeKit and Passbook', 'produce enable_services -a com.example.app --healthkit --homekit --passbook'
|
42
|
+
|
43
|
+
c.option '--app-group', 'Enable App Groups'
|
44
|
+
c.option '--associated-domains', 'Enable Associated Domains'
|
45
|
+
c.option '--data-protection STRING', String, 'Enable Data Protection, suitable values are "complete", "unlessopen" and "untilfirstauth"'
|
46
|
+
c.option '--healthkit', 'Enable HealthKit'
|
47
|
+
c.option '--homekit', 'Enable HomeKit'
|
48
|
+
c.option '--wireless-conf', 'Enable Wireless Accessory Configuration'
|
49
|
+
c.option '--icloud STRING', String, 'Enable iCloud, suitable values are "legacy" and "cloudkit"'
|
50
|
+
c.option '--inter-app-audio', 'Enable Inter-App-Audio'
|
51
|
+
c.option '--passbook', 'Enable Passbook'
|
52
|
+
c.option '--push-notification', 'Enable Push notification (only enables the service, does not configure certificates)'
|
53
|
+
c.option '--vpn-conf', 'Enable VPN Configuration'
|
54
|
+
|
55
|
+
c.action do |args, options|
|
56
|
+
# Filter the options so that we can still build the configuration
|
57
|
+
allowed_keys = Produce::Options.available_options.collect { |config| config.key }
|
58
|
+
Produce.config = FastlaneCore::Configuration.create(Produce::Options.available_options, options.__hash__.select { |key, value| allowed_keys.include? key })
|
59
|
+
|
60
|
+
require 'produce/service'
|
61
|
+
Produce::Service.enable(options, args)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
command :disable_services do |c|
|
66
|
+
c.syntax = 'produce disable_services -a APP_IDENTIFIER SERVICE1, SERVICE2, ...'
|
67
|
+
c.description = 'Disable specific Application Services for a specific app on the Apple Developer Portal'
|
68
|
+
c.example 'Disable HealthKit', 'produce disable_services -a com.example.app --healthkit'
|
69
|
+
|
70
|
+
c.option '--app-group', 'Disable App Groups'
|
71
|
+
c.option '--associated-domains', 'Disable Associated Domains'
|
72
|
+
c.option '--data-protection', 'Disable Data Protection'
|
73
|
+
c.option '--healthkit', 'Disable HealthKit'
|
74
|
+
c.option '--homekit', 'Disable HomeKit'
|
75
|
+
c.option '--wireless-conf', 'Disable Wireless Accessory Configuration'
|
76
|
+
c.option '--icloud', 'Disable iCloud'
|
77
|
+
c.option '--inter-app-audio', 'Disable Inter-App-Audio'
|
78
|
+
c.option '--passbook', 'Disable Passbook'
|
79
|
+
c.option '--push-notification', 'Disable Push notifications'
|
80
|
+
c.option '--vpn-conf', 'Disable VPN Configuration'
|
81
|
+
|
82
|
+
c.action do |args, options|
|
83
|
+
# Filter the options so that we can still build the configuration
|
84
|
+
allowed_keys = Produce::Options.available_options.collect { |config| config.key }
|
85
|
+
Produce.config = FastlaneCore::Configuration.create(Produce::Options.available_options, options.__hash__.select { |key, value| allowed_keys.include? key })
|
86
|
+
|
87
|
+
require 'produce/service'
|
88
|
+
Produce::Service.disable(options, args)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
command :group do |c|
|
93
|
+
c.syntax = 'produce group'
|
94
|
+
c.description = 'Ensure that a specific App Group exists'
|
95
|
+
c.example 'Create group', 'produce group -g group.example.app -n "Example App Group"'
|
96
|
+
|
97
|
+
c.option '-n', '--group_name STRING', String, 'Name for the group that is created (PRODUCE_GROUP_NAME)'
|
98
|
+
c.option '-g', '--group_identifier STRING', String, 'Group identifier for the group (PRODUCE_GROUP_IDENTIFIER)'
|
99
|
+
|
100
|
+
c.action do |args, options|
|
101
|
+
allowed_keys = Produce::Options.available_options.collect { |config| config.key }
|
102
|
+
Produce.config = FastlaneCore::Configuration.create(Produce::Options.available_options, options.__hash__.select { |key, value| allowed_keys.include? key })
|
103
|
+
|
104
|
+
require 'produce/group'
|
105
|
+
Produce::Group.new.create(options, args)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
command :associate_group do |c|
|
110
|
+
c.syntax = 'produce associate_group -a APP_IDENTIFIER GROUP_IDENTIFIER1, GROUP_IDENTIFIER2, ...'
|
111
|
+
c.description = 'Associate with a group, which is create if needed or simply located otherwise'
|
112
|
+
c.example 'Associate with group', 'produce associate-group -a com.example.app group.example.com'
|
113
|
+
|
114
|
+
c.action do |args, options|
|
115
|
+
Produce.config = FastlaneCore::Configuration.create(Produce::Options.available_options, options.__hash__)
|
116
|
+
|
117
|
+
require 'produce/group'
|
118
|
+
Produce::Group.new.associate(options, args)
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
38
122
|
default_command :create
|
39
123
|
|
40
124
|
run!
|
@@ -0,0 +1,95 @@
|
|
1
|
+
require 'spaceship'
|
2
|
+
require 'babosa'
|
3
|
+
|
4
|
+
module Produce
|
5
|
+
class Group
|
6
|
+
def create(options, args)
|
7
|
+
login
|
8
|
+
|
9
|
+
ENV["CREATED_NEW_GROUP_ID"] = Time.now.to_i.to_s
|
10
|
+
|
11
|
+
group_identifier = options.group_identifier || ask("Group identifier: ")
|
12
|
+
|
13
|
+
if app_group_exists? group_identifier
|
14
|
+
Helper.log.info "[DevCenter] Group '#{options.group_name} (#{options.group_identifier})' already exists, nothing to do on the Dev Center".green
|
15
|
+
ENV["CREATED_NEW_GROUP_ID"] = nil
|
16
|
+
# Nothing to do here
|
17
|
+
else
|
18
|
+
unless options.group_name
|
19
|
+
group_name = group_identifier.split(".").map(&:capitalize).reverse.join(' ')
|
20
|
+
group_name = valid_name_for(group_name)
|
21
|
+
else
|
22
|
+
group_name = valid_name_for(options.group_name)
|
23
|
+
end
|
24
|
+
|
25
|
+
Helper.log.info "Creating new app group '#{group_name}' with identifier '#{group_identifier}' on the Apple Dev Center".green
|
26
|
+
|
27
|
+
group = Spaceship.app_group.create!(group_id: group_identifier,
|
28
|
+
name: group_name)
|
29
|
+
|
30
|
+
Helper.log.info "Created group #{group.app_group_id}"
|
31
|
+
|
32
|
+
raise "Something went wrong when creating the new app group - it's not listed in the app groups list" unless app_group_exists? group_identifier
|
33
|
+
|
34
|
+
ENV["CREATED_NEW_GROUP_ID"] = Time.now.to_i.to_s
|
35
|
+
|
36
|
+
Helper.log.info "Finished creating new app group '#{group_name}' on the Dev Center".green
|
37
|
+
end
|
38
|
+
|
39
|
+
return true
|
40
|
+
end
|
41
|
+
|
42
|
+
def associate(options, args)
|
43
|
+
login
|
44
|
+
|
45
|
+
if !app_exists?
|
46
|
+
Helper.log.info "[DevCenter] App '#{Produce.config[:app_identifier]}' does not exist, nothing to associate with the groups".red
|
47
|
+
else
|
48
|
+
app = Spaceship.app.find(app_identifier)
|
49
|
+
raise "Something went wrong when fetching the app - it's not listed in the apps list" unless app != nil
|
50
|
+
|
51
|
+
new_groups = Array.new
|
52
|
+
|
53
|
+
Helper.log.info "Validating groups before association"
|
54
|
+
|
55
|
+
for group_identifier in args
|
56
|
+
if !app_group_exists? group_identifier
|
57
|
+
Helper.log.info "[DevCenter] App group '#{group_identifier}' does not exist, please create it first, skipping for now".red
|
58
|
+
else
|
59
|
+
new_groups.push(Spaceship.app_group.find(group_identifier))
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
Helper.log.info "Finalising association with #{new_groups.count} groups"
|
64
|
+
app.associate_groups(new_groups)
|
65
|
+
Helper.log.info "Done!".green
|
66
|
+
end
|
67
|
+
|
68
|
+
return true
|
69
|
+
end
|
70
|
+
|
71
|
+
def login
|
72
|
+
Helper.log.info "Starting login"
|
73
|
+
Spaceship.login(Produce.config[:username], nil)
|
74
|
+
Spaceship.select_team
|
75
|
+
Helper.log.info "Successfully logged in"
|
76
|
+
end
|
77
|
+
|
78
|
+
def app_identifier
|
79
|
+
Produce.config[:app_identifier].to_s
|
80
|
+
end
|
81
|
+
|
82
|
+
def app_group_exists? (identifier)
|
83
|
+
Spaceship.app_group.find(identifier) != nil
|
84
|
+
end
|
85
|
+
|
86
|
+
def app_exists?
|
87
|
+
Spaceship.app.find(app_identifier) != nil
|
88
|
+
end
|
89
|
+
|
90
|
+
def valid_name_for(input)
|
91
|
+
latinazed = input.to_slug.transliterate.to_s # remove accents
|
92
|
+
latinazed.gsub(/[^0-9A-Za-z\d\s]/, '') # remove non-valid characters
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
data/lib/produce/options.rb
CHANGED
@@ -39,7 +39,7 @@ module Produce
|
|
39
39
|
description: "Primary Language (e.g. 'English', 'German')",
|
40
40
|
default_value: "English",
|
41
41
|
verify_block: Proc.new do |language|
|
42
|
-
|
42
|
+
|
43
43
|
end),
|
44
44
|
FastlaneCore::ConfigItem.new(key: :company_name,
|
45
45
|
short_option: "-c",
|
@@ -47,7 +47,7 @@ module Produce
|
|
47
47
|
description: "The name of your comapny. Only required if it's the first app you create",
|
48
48
|
optional: true,
|
49
49
|
verify_block: Proc.new do |language|
|
50
|
-
|
50
|
+
|
51
51
|
end),
|
52
52
|
FastlaneCore::ConfigItem.new(key: :skip_itc,
|
53
53
|
short_option: "-i",
|
@@ -78,8 +78,7 @@ module Produce
|
|
78
78
|
default_value: CredentialsManager::AppfileConfig.try_fetch_value(:team_name),
|
79
79
|
verify_block: Proc.new do |value|
|
80
80
|
ENV["FASTLANE_TEAM_NAME"] = value
|
81
|
-
end)
|
82
|
-
|
81
|
+
end)
|
83
82
|
]
|
84
83
|
end
|
85
84
|
end
|
@@ -0,0 +1,186 @@
|
|
1
|
+
module Produce
|
2
|
+
class Service
|
3
|
+
def self.enable(options, args)
|
4
|
+
self.new.enable(options, args)
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.disable(options, args)
|
8
|
+
self.new.disable(options, args)
|
9
|
+
end
|
10
|
+
|
11
|
+
def enable(options, args)
|
12
|
+
unless app
|
13
|
+
Helper.log.info "[DevCenter] App '#{Produce.config[:app_identifier]}' does not exist".red
|
14
|
+
return
|
15
|
+
end
|
16
|
+
|
17
|
+
Helper.log.info "[DevCenter] App found '#{app.name}'".green
|
18
|
+
Helper.log.info "Enabling services"
|
19
|
+
enabled = update(true, app, options)
|
20
|
+
Helper.log.info "Done! Enabled #{enabled} services.".green
|
21
|
+
end
|
22
|
+
|
23
|
+
def disable(options, args)
|
24
|
+
unless app
|
25
|
+
Helper.log.info "[DevCenter] App '#{Produce.config[:app_identifier]}' does not exist".red
|
26
|
+
return
|
27
|
+
end
|
28
|
+
|
29
|
+
Helper.log.info "[DevCenter] App found '#{app.name}'".green
|
30
|
+
Helper.log.info "Disabling services"
|
31
|
+
disabled = update(false, app, options)
|
32
|
+
Helper.log.info "Done! Disabled #{disabled} services.".green
|
33
|
+
end
|
34
|
+
|
35
|
+
def valid_services_for(options)
|
36
|
+
allowed_keys = [:app_group, :associated_domains, :data_protection, :healthkit, :homekit,
|
37
|
+
:wireless_conf, :icloud, :inter_app_audio, :passbook, :push_notification, :vpn_conf]
|
38
|
+
options.__hash__.select { |key, value| allowed_keys.include? key }
|
39
|
+
end
|
40
|
+
|
41
|
+
def update(on, app, options)
|
42
|
+
updated = valid_services_for(options).count
|
43
|
+
|
44
|
+
if options.app_group
|
45
|
+
Helper.log.info "\tApp Groups"
|
46
|
+
|
47
|
+
if on
|
48
|
+
app.update_service(Spaceship.app_service.app_group.on)
|
49
|
+
else
|
50
|
+
app.update_service(Spaceship.app_service.app_group.off)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
if options.associated_domains
|
55
|
+
Helper.log.info "\tAssociated Domains"
|
56
|
+
|
57
|
+
if on
|
58
|
+
app.update_service(Spaceship.app_service.associated_domains.on)
|
59
|
+
else
|
60
|
+
app.update_service(Spaceship.app_service.associated_domains.off)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
if options.data_protection
|
65
|
+
Helper.log.info "\tData Protection"
|
66
|
+
|
67
|
+
if on
|
68
|
+
case options.data_protection
|
69
|
+
when "complete"
|
70
|
+
app.update_service(Spaceship.app_service.data_protection.complete)
|
71
|
+
when "unlessopen"
|
72
|
+
app.update_service(Spaceship.app_service.data_proection.unless_open)
|
73
|
+
when "untilfirstauth"
|
74
|
+
app.update_service(Spaceship.app_service.data_protection.until_first_auth)
|
75
|
+
else
|
76
|
+
raise "Unknown service '#{options.data_protection}'. Valid values: 'complete', 'unlessopen', 'untilfirstauth'".red
|
77
|
+
end
|
78
|
+
else
|
79
|
+
app.update_service(Spaceship.app_service.data_protection.off)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
if options.healthkit
|
84
|
+
Helper.log.info "\tHealthKit"
|
85
|
+
|
86
|
+
if on
|
87
|
+
app.update_service(Spaceship.app_service.health_kit.on)
|
88
|
+
else
|
89
|
+
app.update_service(Spaceship.app_service.health_kit.off)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
if options.homekit
|
94
|
+
Helper.log.info "\tHomeKit"
|
95
|
+
|
96
|
+
if on
|
97
|
+
app.update_service(Spaceship.app_service.home_kit.on)
|
98
|
+
else
|
99
|
+
app.update_service(Spaceship.app_service.home_kit.off)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
if options.wireless_conf
|
104
|
+
Helper.log.info "\tWireless Accessory Configuration"
|
105
|
+
|
106
|
+
if on
|
107
|
+
app.update_service(Spaceship.app_service.wireless_accessory.on)
|
108
|
+
else
|
109
|
+
app.update_service(Spaceship.app_service.wireless_accessory.off)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
if options.icloud
|
114
|
+
Helper.log.info "\tiCloud"
|
115
|
+
|
116
|
+
if on
|
117
|
+
case options.icloud
|
118
|
+
when "legacy"
|
119
|
+
app.update_service(Spaceship.app_service.icloud.on)
|
120
|
+
app.update_service(Spaceship.app_service.cloud_kit.xcode5_compatible)
|
121
|
+
when "cloudkit"
|
122
|
+
app.update_service(Spaceship.app_service.icloud.on)
|
123
|
+
app.update_service(Spaceship.app_service.cloud_kit.cloud_kit)
|
124
|
+
else
|
125
|
+
raise "Unknown service '#{options.icloud}'. Valid values: 'legacy', 'cloudkit'".red
|
126
|
+
end
|
127
|
+
else
|
128
|
+
app.update_service(Spaceship.app_service.icloud.off)
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
if options.inter_app_audio
|
133
|
+
Helper.log.info "\tInter-App Audio"
|
134
|
+
|
135
|
+
if on
|
136
|
+
app.update_service(Spaceship.app_service.inter_app_audio.on)
|
137
|
+
else
|
138
|
+
app.update_service(Spaceship.app_service.inter_app_audio.off)
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
if options.passbook
|
143
|
+
Helper.log.info "\tPassbook"
|
144
|
+
|
145
|
+
if on
|
146
|
+
app.update_service(Spaceship.app_service.passbook.on)
|
147
|
+
else
|
148
|
+
app.update_service(Spaceship.app_service.passbook.off)
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
if options.push_notification
|
153
|
+
Helper.log.info "\tPush Notifications"
|
154
|
+
|
155
|
+
if on
|
156
|
+
app.update_service(Spaceship.app_service.push_notification.on)
|
157
|
+
else
|
158
|
+
app.update_service(Spaceship.app_service.push_notification.off)
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
if options.vpn_conf
|
163
|
+
Helper.log.info "\tVPN Configuration"
|
164
|
+
|
165
|
+
if on
|
166
|
+
app.update_service(Spaceship.app_service.vpn_configuration.on)
|
167
|
+
else
|
168
|
+
app.update_service(Spaceship.app_service.vpn_configuration.off)
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
updated
|
173
|
+
end
|
174
|
+
|
175
|
+
def app
|
176
|
+
return @app if @app
|
177
|
+
|
178
|
+
Helper.log.info "Starting login"
|
179
|
+
Spaceship.login(Produce.config[:username], nil)
|
180
|
+
Spaceship.select_team
|
181
|
+
Helper.log.info "Successfully logged in"
|
182
|
+
|
183
|
+
@app ||= Spaceship.app.find(Produce.config[:app_identifier].to_s)
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
data/lib/produce/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: produce
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Krause
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-08-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fastlane_core
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.4.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.4.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -152,9 +152,11 @@ files:
|
|
152
152
|
- lib/produce/available_default_languages.rb
|
153
153
|
- lib/produce/dependency_checker.rb
|
154
154
|
- lib/produce/developer_center.rb
|
155
|
+
- lib/produce/group.rb
|
155
156
|
- lib/produce/itunes_connect.rb
|
156
157
|
- lib/produce/manager.rb
|
157
158
|
- lib/produce/options.rb
|
159
|
+
- lib/produce/service.rb
|
158
160
|
- lib/produce/version.rb
|
159
161
|
homepage: https://fastlane.tools
|
160
162
|
licenses:
|