shenzhen 0.6.1 → 0.7.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/Gemfile.lock +3 -3
- data/README.md +9 -1
- data/lib/shenzhen/commands.rb +1 -0
- data/lib/shenzhen/commands/build.rb +8 -5
- data/lib/shenzhen/plugins/deploygate.rb +85 -0
- data/lib/shenzhen/plugins/ftp.rb +6 -2
- data/lib/shenzhen/plugins/hockeyapp.rb +6 -0
- data/lib/shenzhen/version.rb +1 -1
- data/shenzhen.gemspec +1 -0
- metadata +5 -4
- data/shenzhen-0.6.0.gem +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 85602b6a9a8491276f05e77aa8e341cfe7a016b3
|
4
|
+
data.tar.gz: de056fb52dae78399884bc642923f64c10a2aeea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5f9a41eb3d14cc5952fc74665ce3178f4b9978258a8f0b0ae0eaacd2bd3672e41611433dac5cb09374613d9b3004b5c2c64f9ae54cec883a16536119b6602579
|
7
|
+
data.tar.gz: 9f034524a871061cc6a7635793060312b8a839e3f4b634874504cd8619c415b346ffd22b1b210ea29aae0a9c8a021b85ab7cb8eeaaa4bb16ab98608a9241b876
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
shenzhen (0.
|
4
|
+
shenzhen (0.7.0)
|
5
5
|
aws-sdk (~> 1.0)
|
6
6
|
commander (~> 4.1)
|
7
7
|
dotenv (~> 0.7)
|
@@ -20,7 +20,7 @@ GEM
|
|
20
20
|
json (~> 1.4)
|
21
21
|
nokogiri (>= 1.4.4)
|
22
22
|
uuidtools (~> 2.1)
|
23
|
-
commander (4.
|
23
|
+
commander (4.2.0)
|
24
24
|
highline (~> 1.6.11)
|
25
25
|
diff-lcs (1.2.5)
|
26
26
|
dotenv (0.10.0)
|
@@ -38,7 +38,7 @@ GEM
|
|
38
38
|
nokogiri (1.6.1)
|
39
39
|
mini_portile (~> 0.5.0)
|
40
40
|
plist (3.1.0)
|
41
|
-
rake (10.
|
41
|
+
rake (10.3.1)
|
42
42
|
rspec (2.14.1)
|
43
43
|
rspec-core (~> 2.14.0)
|
44
44
|
rspec-expectations (~> 2.14.0)
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|

|
2
2
|
|
3
|
-
Create `.ipa` files and then distribute them with [TestFlight](https://testflightapp.com/) or [HockeyApp](http://www.hockeyapp.net), all from the command line!
|
3
|
+
Create `.ipa` files and then distribute them with [TestFlight](https://testflightapp.com/) or [HockeyApp](http://www.hockeyapp.net) or [DeployGate](https://deploygate.com), all from the command line!
|
4
4
|
|
5
5
|
Less cumbersome than clicking around in Xcode, and less hassle than rolling your own build script--Shenzhen radically improves the process of getting new builds out to testers and enterprises.
|
6
6
|
|
@@ -34,6 +34,7 @@ Shenzhen adds the `ipa` command to your PATH:
|
|
34
34
|
build Create a new .ipa file for your app
|
35
35
|
distribute:testflight Distribute an .ipa file over TestFlight
|
36
36
|
distribute:hockeyapp Distribute an .ipa file over HockeyApp
|
37
|
+
distribute:deploygate Distribute an .ipa file over deploygate
|
37
38
|
distribute:ftp Distribute an .ipa file over FTP
|
38
39
|
distribute:S3 Distribute an .ipa file over Amazon S3
|
39
40
|
info Show mobile provisioning information about an .ipa file
|
@@ -65,6 +66,13 @@ Shenzhen adds the `ipa` command to your PATH:
|
|
65
66
|
|
66
67
|
> Shenzhen will load credentials from the environment variable `HOCKEYAPP_API_TOKEN` unless otherwise specified.
|
67
68
|
|
69
|
+
#### DeployGate Distribution
|
70
|
+
|
71
|
+
$ ipa distribute:deploygate -a API_TOKEN -u USER_NAME
|
72
|
+
|
73
|
+
> Shenzhen will load credentials from the environment variable `DEPLOYGATE_API_TOKEN` and `DEPLOYGATE_USER_NAME` unless otherwise specified.
|
74
|
+
|
75
|
+
|
68
76
|
#### FTP Distribution
|
69
77
|
|
70
78
|
$ ipa distribute:ftp --host HOST -u USER -p PASSWORD -P FTP_PATH
|
data/lib/shenzhen/commands.rb
CHANGED
@@ -9,6 +9,7 @@ command :build do |c|
|
|
9
9
|
c.option '-p', '--project PROJECT', 'Project (.xcodeproj) file to use to build app (automatically detected in current directory, overridden by --workspace option, if passed)'
|
10
10
|
c.option '-c', '--configuration CONFIGURATION', 'Configuration used to build'
|
11
11
|
c.option '-s', '--scheme SCHEME', 'Scheme used to build app'
|
12
|
+
c.option '--xcconfig XCCONFIG', 'use an extra XCCONFIG file to build the app'
|
12
13
|
c.option '--[no-]clean', 'Clean project before building'
|
13
14
|
c.option '--[no-]archive', 'Archive project after building'
|
14
15
|
c.option '-d', '--destination DESTINATION', 'Destination. Defaults to current directory'
|
@@ -27,6 +28,7 @@ command :build do |c|
|
|
27
28
|
@scheme = options.scheme
|
28
29
|
@sdk = options.sdk || 'iphoneos'
|
29
30
|
@configuration = options.configuration
|
31
|
+
@xcconfig = options.xcconfig
|
30
32
|
@destination = options.destination || Dir.pwd
|
31
33
|
FileUtils.mkdir_p(@destination) unless File.directory?(@destination)
|
32
34
|
|
@@ -43,11 +45,12 @@ command :build do |c|
|
|
43
45
|
@configuration = options.configuration
|
44
46
|
|
45
47
|
flags = []
|
46
|
-
flags <<
|
47
|
-
flags <<
|
48
|
-
flags <<
|
49
|
-
flags <<
|
50
|
-
flags <<
|
48
|
+
flags << %{-sdk #{@sdk}}
|
49
|
+
flags << %{-workspace "#{@workspace}"} if @workspace
|
50
|
+
flags << %{-project "#{@project}"} if @project
|
51
|
+
flags << %{-scheme "#{@scheme}"} if @scheme
|
52
|
+
flags << %{-configuration "#{@configuration}"} if @configuration
|
53
|
+
flags << %{-xcconfig "#{@xcconfig}"} if @xcconfig
|
51
54
|
|
52
55
|
@target, @xcodebuild_settings = Shenzhen::XcodeBuild.settings(*flags).detect{|target, settings| settings['WRAPPER_EXTENSION'] == "app"}
|
53
56
|
say_error "App settings could not be found." and abort unless @xcodebuild_settings
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'openssl'
|
3
|
+
require 'faraday'
|
4
|
+
require 'faraday_middleware'
|
5
|
+
|
6
|
+
module Shenzhen::Plugins
|
7
|
+
module DeployGate
|
8
|
+
class Client
|
9
|
+
HOSTNAME = 'deploygate.com'
|
10
|
+
|
11
|
+
def initialize(api_token, user_name)
|
12
|
+
@api_token, @user_name = api_token, user_name
|
13
|
+
@connection = Faraday.new(:url => "http://#{HOSTNAME}", :request => { :timeout => 120 }) do |builder|
|
14
|
+
builder.request :multipart
|
15
|
+
builder.request :json
|
16
|
+
builder.response :json, :content_type => /\bjson$/
|
17
|
+
builder.use FaradayMiddleware::FollowRedirects
|
18
|
+
builder.adapter :net_http
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def upload_build(ipa, options)
|
23
|
+
options.update({
|
24
|
+
:token => @api_token,
|
25
|
+
:file => Faraday::UploadIO.new(ipa, 'application/octet-stream'),
|
26
|
+
:message => options[:message] || ''
|
27
|
+
})
|
28
|
+
|
29
|
+
@connection.post("/api/users/#{@user_name}/apps", options).on_complete do |env|
|
30
|
+
yield env[:status], env[:body] if block_given?
|
31
|
+
end
|
32
|
+
|
33
|
+
rescue Faraday::Error::TimeoutError
|
34
|
+
say_error "Timed out while uploading build. Check https://deploygate.com/ to see if the upload was completed." and abort
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
command :'distribute:deploygate' do |c|
|
41
|
+
c.syntax = "ipa distribute:deploygate [options]"
|
42
|
+
c.summary = "Distribute an .ipa file over deploygate"
|
43
|
+
c.description = ""
|
44
|
+
c.option '-f', '--file FILE', ".ipa file for the build"
|
45
|
+
c.option '-a', '--api_token TOKEN', "API Token. Available at https://deploygate.com/settings"
|
46
|
+
c.option '-u', '--user_name USER_NAME', "User Name. Available at https://deploygate.com/settings"
|
47
|
+
c.option '-m', '--message MESSAGE', "Release message for the build"
|
48
|
+
|
49
|
+
c.action do |args, options|
|
50
|
+
determine_file! unless @file = options.file
|
51
|
+
say_error "Missing or unspecified .ipa file" and abort unless @file and File.exist?(@file)
|
52
|
+
|
53
|
+
determine_deploygate_api_token! unless @api_token = options.api_token || ENV['DEPLOYGATE_API_TOKEN']
|
54
|
+
say_error "Missing API Token" and abort unless @api_token
|
55
|
+
|
56
|
+
determine_deploygate_user_name! unless @user_name = options.user_name || ENV['DEPLOYGATE_USER_NAME']
|
57
|
+
say_error "Missing User Name" and abort unless @api_token
|
58
|
+
|
59
|
+
@message = options.message
|
60
|
+
|
61
|
+
parameters = {}
|
62
|
+
parameters[:file] = @file
|
63
|
+
parameters[:message] = @message
|
64
|
+
parameters[:replace] = "true" if options.replace
|
65
|
+
|
66
|
+
client = Shenzhen::Plugins::DeployGate::Client.new(@api_token, @user_name)
|
67
|
+
response = client.upload_build(@file, parameters)
|
68
|
+
case response.status
|
69
|
+
when 200...300
|
70
|
+
say_ok "Build successfully uploaded to DeployGate"
|
71
|
+
else
|
72
|
+
say_error "Error uploading to DeployGate: #{response.body}" and abort
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
private
|
77
|
+
|
78
|
+
def determine_deploygate_api_token!
|
79
|
+
@api_token ||= ask "API Token:"
|
80
|
+
end
|
81
|
+
|
82
|
+
def determine_deploygate_user_name!
|
83
|
+
@user_name ||= ask "User Name:"
|
84
|
+
end
|
85
|
+
end
|
data/lib/shenzhen/plugins/ftp.rb
CHANGED
@@ -130,8 +130,11 @@ command :'distribute:ftp' do |c|
|
|
130
130
|
determine_user! unless @user = options.user
|
131
131
|
say_error "Missing FTP user" and abort unless @user
|
132
132
|
|
133
|
-
|
134
|
-
|
133
|
+
@password = options.password
|
134
|
+
if !@password && options.protocol != :sftp
|
135
|
+
determine_password!
|
136
|
+
say_error "Missing FTP password" and abort unless @password
|
137
|
+
end
|
135
138
|
|
136
139
|
@path = options.path || ""
|
137
140
|
|
@@ -147,6 +150,7 @@ command :'distribute:ftp' do |c|
|
|
147
150
|
say_ok "Build successfully uploaded to FTP"
|
148
151
|
rescue => exception
|
149
152
|
say_error "Error while uploading to FTP: #{exception}"
|
153
|
+
raise if options.trace
|
150
154
|
end
|
151
155
|
end
|
152
156
|
|
@@ -57,6 +57,9 @@ command :'distribute:hockeyapp' do |c|
|
|
57
57
|
c.option '--notify', "Notify permitted teammates to install the build"
|
58
58
|
c.option '--downloadOff', "Upload but don't allow download of this version just yet"
|
59
59
|
c.option '--mandatory', "Make this update mandatory"
|
60
|
+
c.option '--commit-sha SHA', "The Git commit SHA for this build"
|
61
|
+
c.option '--build-server-url URL', "The URL of the build job on your build server"
|
62
|
+
c.option '--repository-url URL', "The URL of your source repository"
|
60
63
|
|
61
64
|
c.action do |args, options|
|
62
65
|
determine_file! unless @file = options.file
|
@@ -88,6 +91,9 @@ command :'distribute:hockeyapp' do |c|
|
|
88
91
|
else
|
89
92
|
"2"
|
90
93
|
end
|
94
|
+
parameters[:commit_sha] = options.commit_sha if options.commit_sha
|
95
|
+
parameters[:build_server_url] = options.build_server_url if options.build_server_url
|
96
|
+
parameters[:repository_url] = options.repository_url if options.repository_url
|
91
97
|
|
92
98
|
client = Shenzhen::Plugins::HockeyApp::Client.new(@api_token)
|
93
99
|
response = client.upload_build(@file, parameters)
|
data/lib/shenzhen/version.rb
CHANGED
data/shenzhen.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shenzhen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mattt Thompson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-05-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: commander
|
@@ -193,6 +193,7 @@ files:
|
|
193
193
|
- ./lib/shenzhen/commands/info.rb
|
194
194
|
- ./lib/shenzhen/commands.rb
|
195
195
|
- ./lib/shenzhen/plistbuddy.rb
|
196
|
+
- ./lib/shenzhen/plugins/deploygate.rb
|
196
197
|
- ./lib/shenzhen/plugins/ftp.rb
|
197
198
|
- ./lib/shenzhen/plugins/hockeyapp.rb
|
198
199
|
- ./lib/shenzhen/plugins/s3.rb
|
@@ -203,11 +204,11 @@ files:
|
|
203
204
|
- ./LICENSE
|
204
205
|
- ./Rakefile
|
205
206
|
- ./README.md
|
206
|
-
- ./shenzhen-0.6.0.gem
|
207
207
|
- ./shenzhen.gemspec
|
208
208
|
- bin/ipa
|
209
209
|
homepage: http://nomad-cli.com
|
210
|
-
licenses:
|
210
|
+
licenses:
|
211
|
+
- MIT
|
211
212
|
metadata: {}
|
212
213
|
post_install_message:
|
213
214
|
rdoc_options: []
|
data/shenzhen-0.6.0.gem
DELETED
Binary file
|