motion-deploygate 0.4.2 → 0.5
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 +21 -2
- data/lib/android.rb +12 -0
- data/lib/ios.rb +90 -0
- data/lib/motion-deploygate.rb +16 -115
- data/lib/rake/android.rb +12 -0
- data/lib/rake/ios.rb +25 -0
- data/lib/util.rb +11 -0
- metadata +9 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 154c55d0693b0199d5138ead2bddb2d9570455c6
|
4
|
+
data.tar.gz: 0cb1b10b078456c7a6eccf85343c94a218acf750
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b80aea438d5beae116ce65d44f75fa1b86813c559a9002acf8a59c4da721e937d7413446a34c9bc043e84ff62339bbcc273ca0fd69e9b3c955393fd7859efd4f
|
7
|
+
data.tar.gz: 75e9db073d27844881f8973d795b97f2267c2f265c8f1eef3aba5c7c9c582cb5dceece2b97afe8bb27343b2a0d6cead4e17bd49fdf515a15e1c61efcf334783c
|
data/README.md
CHANGED
@@ -18,6 +18,8 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
## Setup
|
20
20
|
|
21
|
+
### iOS
|
22
|
+
|
21
23
|
1. Download the DeployGate SDK for iOS from https://deploygate.com/docs/ios_sdk and unpack it. Then, copy `DeployGateSDK.framework` into `vendor` directory of your RubyMotion project. Create the `vendor` directory if it does not exist.
|
22
24
|
|
23
25
|
2. Configure the DeployGate SDK in your `Rakefile`. Set up `user_id`, `api_key` and `sdk` variables as following.
|
@@ -34,7 +36,7 @@ Motion::Project::App.setup do |app|
|
|
34
36
|
end
|
35
37
|
```
|
36
38
|
|
37
|
-
|
39
|
+
#### User authentication
|
38
40
|
|
39
41
|
If you would enable this feature, the testers can receive a notification when you will submit a new version to DeployGate.
|
40
42
|
Set up `user_infomation` and `url_scheme` variables to use the user authentication in your `Rakefile`.
|
@@ -65,6 +67,23 @@ class AppDelegate
|
|
65
67
|
end
|
66
68
|
```
|
67
69
|
|
70
|
+
### Android
|
71
|
+
|
72
|
+
Now, it can't use the feature of DeployGate Android SDK (see [#2](https://github.com/Watson1978/motion-deploygate/issues/2)).
|
73
|
+
|
74
|
+
1. Configure in order to submit app to DeployGate in your `Rakefile`. Set up `user_id` variables as following.
|
75
|
+
|
76
|
+
```ruby
|
77
|
+
Motion::Project::App.setup do |app|
|
78
|
+
...
|
79
|
+
app.development do
|
80
|
+
app.deploygate.user_id = '<user_id>'
|
81
|
+
end
|
82
|
+
...
|
83
|
+
end
|
84
|
+
```
|
85
|
+
|
86
|
+
|
68
87
|
## Usage
|
69
88
|
|
70
89
|
### Submit your app to DeployGate
|
@@ -76,7 +95,7 @@ end
|
|
76
95
|
|
77
96
|
The `message` parameter is optional, and its content will be used as the description of submission.
|
78
97
|
|
79
|
-
### Symbolicate a crashlog
|
98
|
+
### Symbolicate a crashlog (iOS only)
|
80
99
|
|
81
100
|
Download a crashlog from DeployGate then run the following command to symbolicate a crashlog.
|
82
101
|
|
data/lib/android.rb
ADDED
data/lib/ios.rb
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
module DeployGateIOS
|
2
|
+
def user_id=(id)
|
3
|
+
@user_id = id
|
4
|
+
end
|
5
|
+
|
6
|
+
def api_key=(key)
|
7
|
+
@api_key = key
|
8
|
+
end
|
9
|
+
|
10
|
+
def user_infomation=(bool)
|
11
|
+
@user_infomation = bool
|
12
|
+
end
|
13
|
+
alias :user_information= :user_infomation=
|
14
|
+
|
15
|
+
def url_scheme=(scheme)
|
16
|
+
@config.info_plist['CFBundleURLTypes'] = [
|
17
|
+
{
|
18
|
+
'CFBundleURLName' => @config.identifier,
|
19
|
+
'CFBundleURLSchemes' => [scheme]
|
20
|
+
}
|
21
|
+
]
|
22
|
+
end
|
23
|
+
|
24
|
+
def sdk=(sdk)
|
25
|
+
@sdk = sdk
|
26
|
+
@config.vendor_project(
|
27
|
+
sdk,
|
28
|
+
:static,
|
29
|
+
:products => ['DeployGateSDK'],
|
30
|
+
:headers_dir => 'Headers'
|
31
|
+
)
|
32
|
+
@config.frameworks << 'SystemConfiguration'
|
33
|
+
create_launcher
|
34
|
+
apply_patch
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def create_launcher
|
40
|
+
return unless @user_id && @api_key
|
41
|
+
|
42
|
+
launcher_code = <<EOF
|
43
|
+
# This file is automatically generated. Do not edit.
|
44
|
+
|
45
|
+
if Object.const_defined?('DeployGateSDK') and !UIDevice.currentDevice.model.include?('Simulator')
|
46
|
+
NSNotificationCenter.defaultCenter.addObserverForName(UIApplicationDidFinishLaunchingNotification, object:nil, queue:nil, usingBlock:lambda do |notification|
|
47
|
+
DeployGateSDK.sharedInstance.launchApplicationWithAuthor('#{@user_id}', key:'#{@api_key}', userInfomationEnabled:#{@user_infomation})
|
48
|
+
end)
|
49
|
+
|
50
|
+
class #{@config.delegate_class}
|
51
|
+
unless #{@config.delegate_class}.method_defined?("application:openURL:sourceApplication:annotation:")
|
52
|
+
def application(application, openURL:url, sourceApplication:sourceApplication, annotation:annotation)
|
53
|
+
return DeployGateSDK.sharedInstance.handleOpenUrl(url, sourceApplication:sourceApplication, annotation:annotation)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
EOF
|
60
|
+
launcher_file = './app/deploygate_launcher.rb'
|
61
|
+
if !File.exist?(launcher_file) or File.read(launcher_file) != launcher_code
|
62
|
+
File.open(launcher_file, 'w') { |io| io.write(launcher_code) }
|
63
|
+
end
|
64
|
+
@config.files.unshift(launcher_file)
|
65
|
+
end
|
66
|
+
|
67
|
+
def apply_patch
|
68
|
+
Dir.glob(File.join(@sdk, "Headers") + "/*.h") do |file|
|
69
|
+
file = File.expand_path(file)
|
70
|
+
data = File.read(file)
|
71
|
+
new_data = []
|
72
|
+
data.each_line do |line|
|
73
|
+
# replace "typedef enum" declaration to avoid http://hipbyte.myjetbrains.com/youtrack/issue/RM-479
|
74
|
+
if line.strip == "typedef enum DeployGateSDKOption : NSUInteger {"
|
75
|
+
new_data << "typedef enum DeployGateSDKOption {\n"
|
76
|
+
else
|
77
|
+
new_data << line
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
new_data = new_data.join
|
82
|
+
if data != new_data
|
83
|
+
File.open(file, "w") do |io|
|
84
|
+
io.write new_data
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
data/lib/motion-deploygate.rb
CHANGED
@@ -4,102 +4,29 @@ unless defined?(Motion::Project::Config)
|
|
4
4
|
raise "This file must be required within a RubyMotion project Rakefile."
|
5
5
|
end
|
6
6
|
|
7
|
+
require_relative 'util'
|
8
|
+
require_relative 'ios'
|
9
|
+
require_relative 'android'
|
10
|
+
|
11
|
+
if MotionDeployGate.android?
|
12
|
+
require_relative 'rake/android'
|
13
|
+
else
|
14
|
+
require_relative 'rake/ios'
|
15
|
+
end
|
16
|
+
|
7
17
|
class DeployGateConfig
|
8
18
|
attr_reader :user_id
|
9
19
|
|
20
|
+
if MotionDeployGate.android?
|
21
|
+
include DeployGateAndroid
|
22
|
+
else
|
23
|
+
include DeployGateIOS
|
24
|
+
end
|
25
|
+
|
10
26
|
def initialize(config)
|
11
27
|
@config = config
|
12
28
|
@user_infomation = false
|
13
29
|
end
|
14
|
-
|
15
|
-
def user_id=(id)
|
16
|
-
@user_id = id
|
17
|
-
end
|
18
|
-
|
19
|
-
def api_key=(key)
|
20
|
-
@api_key = key
|
21
|
-
end
|
22
|
-
|
23
|
-
def user_infomation=(bool)
|
24
|
-
@user_infomation = bool
|
25
|
-
end
|
26
|
-
alias :user_information= :user_infomation=
|
27
|
-
|
28
|
-
def url_scheme=(scheme)
|
29
|
-
@config.info_plist['CFBundleURLTypes'] = [
|
30
|
-
{
|
31
|
-
'CFBundleURLName' => @config.identifier,
|
32
|
-
'CFBundleURLSchemes' => [scheme]
|
33
|
-
}
|
34
|
-
]
|
35
|
-
end
|
36
|
-
|
37
|
-
def sdk=(sdk)
|
38
|
-
@sdk = sdk
|
39
|
-
@config.vendor_project(
|
40
|
-
sdk,
|
41
|
-
:static,
|
42
|
-
:products => ['DeployGateSDK'],
|
43
|
-
:headers_dir => 'Headers'
|
44
|
-
)
|
45
|
-
@config.frameworks << 'SystemConfiguration'
|
46
|
-
create_launcher
|
47
|
-
apply_patch
|
48
|
-
end
|
49
|
-
|
50
|
-
private
|
51
|
-
|
52
|
-
def create_launcher
|
53
|
-
return unless @user_id && @api_key
|
54
|
-
|
55
|
-
launcher_code = <<EOF
|
56
|
-
# This file is automatically generated. Do not edit.
|
57
|
-
|
58
|
-
if Object.const_defined?('DeployGateSDK') and !UIDevice.currentDevice.model.include?('Simulator')
|
59
|
-
NSNotificationCenter.defaultCenter.addObserverForName(UIApplicationDidFinishLaunchingNotification, object:nil, queue:nil, usingBlock:lambda do |notification|
|
60
|
-
DeployGateSDK.sharedInstance.launchApplicationWithAuthor('#{@user_id}', key:'#{@api_key}', userInfomationEnabled:#{@user_infomation})
|
61
|
-
end)
|
62
|
-
|
63
|
-
class #{@config.delegate_class}
|
64
|
-
unless #{@config.delegate_class}.method_defined?("application:openURL:sourceApplication:annotation:")
|
65
|
-
def application(application, openURL:url, sourceApplication:sourceApplication, annotation:annotation)
|
66
|
-
return DeployGateSDK.sharedInstance.handleOpenUrl(url, sourceApplication:sourceApplication, annotation:annotation)
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
end
|
72
|
-
EOF
|
73
|
-
launcher_file = './app/deploygate_launcher.rb'
|
74
|
-
if !File.exist?(launcher_file) or File.read(launcher_file) != launcher_code
|
75
|
-
File.open(launcher_file, 'w') { |io| io.write(launcher_code) }
|
76
|
-
end
|
77
|
-
@config.files.unshift(launcher_file)
|
78
|
-
end
|
79
|
-
|
80
|
-
def apply_patch
|
81
|
-
Dir.glob(File.join(@sdk, "Headers") + "/*.h") do |file|
|
82
|
-
file = File.expand_path(file)
|
83
|
-
data = File.read(file)
|
84
|
-
new_data = []
|
85
|
-
data.each_line do |line|
|
86
|
-
# replace "typedef enum" declaration to avoid http://hipbyte.myjetbrains.com/youtrack/issue/RM-479
|
87
|
-
if line.strip == "typedef enum DeployGateSDKOption : NSUInteger {"
|
88
|
-
new_data << "typedef enum DeployGateSDKOption {\n"
|
89
|
-
else
|
90
|
-
new_data << line
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
new_data = new_data.join
|
95
|
-
if data != new_data
|
96
|
-
File.open(file, "w") do |io|
|
97
|
-
io.write new_data
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
30
|
end
|
104
31
|
|
105
32
|
module Motion; module Project; class Config
|
@@ -110,29 +37,3 @@ module Motion; module Project; class Config
|
|
110
37
|
end
|
111
38
|
|
112
39
|
end; end; end
|
113
|
-
|
114
|
-
namespace :deploygate do
|
115
|
-
desc "Submit an archive to DeployGate"
|
116
|
-
task :submit do
|
117
|
-
config = App.config
|
118
|
-
|
119
|
-
Rake::Task["archive"].invoke
|
120
|
-
App.info "DeployGate", "Submit #{config.name}.ipa to DeployGate"
|
121
|
-
app_path = "build/iPhoneOS-#{config.deployment_target}-#{config.build_mode.to_s.capitalize}/#{config.name}.ipa"
|
122
|
-
message = ENV['message'] ? "-m \"#{ENV['message']}\"" : ""
|
123
|
-
sh "dgate push #{config.deploygate.user_id} \"#{app_path}\" #{message}"
|
124
|
-
end
|
125
|
-
|
126
|
-
desc "Symbolicate a crash log"
|
127
|
-
task :symbolicate do
|
128
|
-
config = App.config
|
129
|
-
crashlog_path = File.expand_path(ENV['file'] || "")
|
130
|
-
if ENV['file'].to_s == "" || !File.exist?(crashlog_path)
|
131
|
-
App.fail "Usage: \"rake deploygate:symbolicate file=file_path_to_crashlog\""
|
132
|
-
end
|
133
|
-
|
134
|
-
symbolicatecrash = "#{config.xcode_dir}/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash"
|
135
|
-
dsym_path = App.config.app_bundle_dsym('iPhoneOS')
|
136
|
-
sh "DEVELOPER_DIR=#{config.xcode_dir} #{symbolicatecrash} \"#{crashlog_path}\" \"#{dsym_path}\""
|
137
|
-
end
|
138
|
-
end
|
data/lib/rake/android.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
namespace :deploygate do
|
2
|
+
desc "Submit an archive to DeployGate"
|
3
|
+
task :submit do
|
4
|
+
config = App.config
|
5
|
+
|
6
|
+
Rake::Task["build"].invoke
|
7
|
+
App.info "DeployGate", "Submit #{config.name}.apk to DeployGate"
|
8
|
+
app_path = "build/#{config.build_mode.to_s.capitalize}-#{config.api_version}/#{config.name}.apk"
|
9
|
+
message = ENV['message'] ? "-m \"#{ENV['message']}\"" : ""
|
10
|
+
sh "dgate push #{config.deploygate.user_id} \"#{app_path}\" #{message}"
|
11
|
+
end
|
12
|
+
end
|
data/lib/rake/ios.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
namespace :deploygate do
|
2
|
+
desc "Submit an archive to DeployGate"
|
3
|
+
task :submit do
|
4
|
+
config = App.config
|
5
|
+
|
6
|
+
Rake::Task["archive"].invoke
|
7
|
+
App.info "DeployGate", "Submit #{config.name}.ipa to DeployGate"
|
8
|
+
app_path = "build/iPhoneOS-#{config.deployment_target}-#{config.build_mode.to_s.capitalize}/#{config.name}.ipa"
|
9
|
+
message = ENV['message'] ? "-m \"#{ENV['message']}\"" : ""
|
10
|
+
sh "dgate push #{config.deploygate.user_id} \"#{app_path}\" #{message}"
|
11
|
+
end
|
12
|
+
|
13
|
+
desc "Symbolicate a crash log"
|
14
|
+
task :symbolicate do
|
15
|
+
config = App.config
|
16
|
+
crashlog_path = File.expand_path(ENV['file'] || "")
|
17
|
+
if ENV['file'].to_s == "" || !File.exist?(crashlog_path)
|
18
|
+
App.fail "Usage: \"rake deploygate:symbolicate file=file_path_to_crashlog\""
|
19
|
+
end
|
20
|
+
|
21
|
+
symbolicatecrash = "#{config.xcode_dir}/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash"
|
22
|
+
dsym_path = App.config.app_bundle_dsym('iPhoneOS')
|
23
|
+
sh "DEVELOPER_DIR=#{config.xcode_dir} #{symbolicatecrash} \"#{crashlog_path}\" \"#{dsym_path}\""
|
24
|
+
end
|
25
|
+
end
|
data/lib/util.rb
ADDED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: motion-deploygate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.5'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Watson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -38,7 +38,7 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
-
description: DeployGate integration for RubyMotion projects
|
41
|
+
description: DeployGate integration for RubyMotion iOS/Android projects
|
42
42
|
email:
|
43
43
|
- watson1978@gmail.com
|
44
44
|
executables: []
|
@@ -46,7 +46,12 @@ extensions: []
|
|
46
46
|
extra_rdoc_files: []
|
47
47
|
files:
|
48
48
|
- README.md
|
49
|
+
- lib/android.rb
|
50
|
+
- lib/ios.rb
|
49
51
|
- lib/motion-deploygate.rb
|
52
|
+
- lib/rake/android.rb
|
53
|
+
- lib/rake/ios.rb
|
54
|
+
- lib/util.rb
|
50
55
|
homepage: https://github.com/Watson1978/motion-deploygate
|
51
56
|
licenses:
|
52
57
|
- MIT
|
@@ -70,5 +75,5 @@ rubyforge_project:
|
|
70
75
|
rubygems_version: 2.4.5
|
71
76
|
signing_key:
|
72
77
|
specification_version: 4
|
73
|
-
summary: DeployGate integration for RubyMotion projects
|
78
|
+
summary: DeployGate integration for RubyMotion iOS/Android projects
|
74
79
|
test_files: []
|