droiuby 0.3.4 → 0.3.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/drby +10 -2
- data/lib/droiuby/scripts/project.rb +56 -12
- data/lib/droiuby/scripts/templates/ruby/index-hybrid.rb.erb +10 -0
- data/lib/droiuby/spec/bootstrap.rb +6 -0
- data/lib/droiuby/spec/helper.rb +51 -1
- data/lib/droiuby/spec/mock_objects/droiuby_app.rb +3 -7
- data/lib/droiuby/spec/mock_objects/java_classes/execution_bundle.rb +9 -0
- data/lib/droiuby/spec/mock_objects/java_classes/ruby_container_payload.rb +17 -0
- data/lib/droiuby/spec/mock_objects/java_classes/view.rb +10 -0
- data/lib/droiuby/spec/mock_objects/mock_environment.rb +36 -0
- data/lib/droiuby/spec/mock_objects/mock_template_parser.rb +6 -0
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db6154ab45831e35e2dd08e540db6d528d4f39ad
|
4
|
+
data.tar.gz: 6b963f5f8334d787f13ac2fabec2211b7434e88e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 445e4037a22975ff5c9cc5f6e89c666f0aa3ededee21f1adf2debc894071d907c5be6af5645d25dd01569bc09b3d94e53a6e3b2ad18b5789d8d503499bb0cc41
|
7
|
+
data.tar.gz: f2363511ba50edc097090ff2a2567991cdc80825caa47d0ba82d9cbbe4647abb5e3f16bfc4d43302e89c7e6a5b61d084a01054980c42c918d0275fb96be8a4a8
|
data/bin/drby
CHANGED
@@ -23,6 +23,7 @@ options = OptionParser.new do |o|
|
|
23
23
|
drby list [options] # Lists the app instances running on the phone
|
24
24
|
drby live [PROJECT_NAME] [options] # runs a web instance of the app and tells Droiuby to load it.
|
25
25
|
drby new PROJECT_NAME [options] # Create a new project
|
26
|
+
drby new hybrid PROJECT_NAME [options] # Create a new hybrid project
|
26
27
|
drby pack [PROJECT_NAME] [options] # zips and packages an app
|
27
28
|
drby standalone [PROJECT_NAME] --package JAVA_PACKAGE # creates a standalone android project for the current app
|
28
29
|
[--name APP_NAME]
|
@@ -58,7 +59,14 @@ project = Project.new
|
|
58
59
|
|
59
60
|
case command
|
60
61
|
when 'new'
|
61
|
-
|
62
|
+
n = 1
|
63
|
+
hybrid_mode = false
|
64
|
+
if ARGV[n] == 'hybrid'
|
65
|
+
n+=1
|
66
|
+
hybrid_mode = true
|
67
|
+
end
|
68
|
+
|
69
|
+
project_name = ARGV[n]
|
62
70
|
|
63
71
|
if project_name.blank?
|
64
72
|
puts "PROJECT_NAME is required"
|
@@ -72,7 +80,7 @@ case command
|
|
72
80
|
$app_name
|
73
81
|
end
|
74
82
|
|
75
|
-
project.create(project_name, app_name, '')
|
83
|
+
project.create(project_name, app_name, '', hybrid_mode ? 'hybrid' : 'droiuby')
|
76
84
|
when 'reload'
|
77
85
|
project_name = ARGV[1]
|
78
86
|
project.package(project_name, nil, 'true')
|
@@ -140,15 +140,24 @@ class Project < Thor
|
|
140
140
|
end
|
141
141
|
|
142
142
|
desc "standalone NAME [PACKAGE_NAME]", "create an android project for this app with the specified java package name"
|
143
|
-
def standalone(name, package_name, title = nil, output_dir = 'projects')
|
143
|
+
def standalone(name, package_name, title = nil, output_dir = 'projects', repository = nil, branch = nil)
|
144
144
|
|
145
145
|
if output_dir.blank?
|
146
146
|
output_dir = Dir.pwd
|
147
147
|
end
|
148
148
|
|
149
|
-
|
149
|
+
if package_name == :prompt
|
150
|
+
say("Please enter the Java Package Name to be used for your app (e.g. com.awesome.sample ):")
|
151
|
+
package_name = ask("Package Name: ")
|
152
|
+
end
|
150
153
|
|
151
|
-
|
154
|
+
dest_folder = nil
|
155
|
+
unless name.nil?
|
156
|
+
dest_folder = File.join(output_dir,"#{name}")
|
157
|
+
Dir.chdir dest_folder
|
158
|
+
else
|
159
|
+
dest_folder = Dir.pwd
|
160
|
+
end
|
152
161
|
|
153
162
|
if title.nil?
|
154
163
|
|
@@ -160,12 +169,19 @@ class Project < Thor
|
|
160
169
|
|
161
170
|
end
|
162
171
|
|
163
|
-
template_repository = ENV['droiuby_template'] || 'https://github.com/jedld/droiuby-template.git'
|
164
|
-
template_directory = File.expand_path(
|
172
|
+
template_repository = ENV['droiuby_template'] || repository || 'https://github.com/jedld/droiuby-template.git'
|
173
|
+
template_directory = File.expand_path("~/.droiuby/android_project_templates.#{branch.nil? ? 'master' : branch}")
|
165
174
|
|
166
175
|
unless File.exists?(template_directory)
|
167
176
|
say "no cached copy yet. obtaining template project from repository"
|
168
|
-
|
177
|
+
|
178
|
+
branch = unless branch.nil?
|
179
|
+
"-b #{branch}"
|
180
|
+
else
|
181
|
+
""
|
182
|
+
end
|
183
|
+
|
184
|
+
`git clone #{branch} --depth 1 #{template_repository} #{template_directory}`
|
169
185
|
else
|
170
186
|
say "checking for template updates..."
|
171
187
|
Dir.chdir template_directory
|
@@ -178,8 +194,15 @@ class Project < Thor
|
|
178
194
|
|
179
195
|
Dir.chdir File.join(dest_folder,'project')
|
180
196
|
|
197
|
+
say "creating android porject in #{dest_folder}"
|
181
198
|
require "#{File.join(dest_folder,'project','init.rb')}"
|
182
199
|
|
200
|
+
dest_folder = if dest_folder.end_with? '/'
|
201
|
+
dest_folder
|
202
|
+
else
|
203
|
+
"#{dest_folder}/"
|
204
|
+
end
|
205
|
+
|
183
206
|
archive_name = File.basename(dest_folder.sub!(%r[/$],'')) if archive_name.nil?
|
184
207
|
|
185
208
|
init = Init.new
|
@@ -193,7 +216,7 @@ class Project < Thor
|
|
193
216
|
|
194
217
|
desc "create PROJECT_NAME [APP_NAME] [WORKSPACE_DIR]","create a new droiuby project with NAME"
|
195
218
|
|
196
|
-
def create(name, app_name = :prompt, output_dir = 'projects')
|
219
|
+
def create(name, app_name = :prompt, output_dir = 'projects', type = 'droiuby')
|
197
220
|
@name = name
|
198
221
|
if app_name.nil?
|
199
222
|
@app_name = app_name
|
@@ -205,7 +228,14 @@ class Project < Thor
|
|
205
228
|
@description = name
|
206
229
|
@launcher_icon = ''
|
207
230
|
@base_url = ''
|
208
|
-
|
231
|
+
if type == 'droiuby'
|
232
|
+
@main_xml = File.join("app","views","index.xml")
|
233
|
+
elsif type == 'hybrid'
|
234
|
+
@main_xml = File.join("app","activities","index.rb")
|
235
|
+
else
|
236
|
+
say_error "Invalid project type specified"
|
237
|
+
exit(1);
|
238
|
+
end
|
209
239
|
|
210
240
|
if output_dir.blank?
|
211
241
|
output_dir = Dir.pwd
|
@@ -215,17 +245,31 @@ class Project < Thor
|
|
215
245
|
template File.join('ruby','Gemfile.erb'), File.join(dest_folder,"Gemfile")
|
216
246
|
template File.join('ruby','config.droiuby.erb'), File.join(dest_folder,"config.droiuby")
|
217
247
|
template File.join('ruby','gitignore.erb'), File.join(dest_folder,".gitignore")
|
218
|
-
|
248
|
+
|
249
|
+
if type == 'droiuby'
|
250
|
+
template File.join('ruby','index.xml.erb'), File.join(dest_folder,"app","views","index.xml")
|
251
|
+
end
|
252
|
+
|
219
253
|
template File.join('ruby','application.css.erb'), File.join(dest_folder,"app","views","styles","application.css")
|
220
|
-
|
254
|
+
if type == 'droiuby'
|
255
|
+
template File.join('ruby','index.rb.erb'), File.join(dest_folder,"app","activities","index.rb")
|
256
|
+
elsif type == 'hybrid'
|
257
|
+
template File.join('ruby','index-hybrid.rb.erb'), File.join(dest_folder,"app","activities","index.rb")
|
258
|
+
end
|
221
259
|
template File.join('ruby','index_spec.rb.erb'), File.join(dest_folder,"spec","activities","index_spec.rb")
|
222
260
|
template File.join('ruby','spec_helper.rb.erb'), File.join(dest_folder,"spec","spec_helper.rb")
|
223
261
|
|
224
262
|
empty_directory File.join(dest_folder,"lib")
|
225
|
-
|
263
|
+
|
226
264
|
Dir.chdir dest_folder
|
265
|
+
if type == 'hybrid'
|
266
|
+
standalone(nil, :prompt, nil, nil, nil, 'hybrid-mode')
|
267
|
+
end
|
268
|
+
|
269
|
+
say "running bundle install"
|
227
270
|
`bundle install`
|
228
|
-
|
271
|
+
|
272
|
+
|
229
273
|
end
|
230
274
|
|
231
275
|
desc "package NAME [WORKSPACE_DIR] [true|false]","package a project"
|
data/lib/droiuby/spec/helper.rb
CHANGED
@@ -2,13 +2,43 @@ $:.unshift Dir.pwd
|
|
2
2
|
|
3
3
|
require File.join(File.dirname(__FILE__),'loader')
|
4
4
|
$autoload_path << File.join('app','activities')
|
5
|
+
$working_directory = Dir.pwd
|
5
6
|
|
7
|
+
Dir[File.join("#{File.dirname(__FILE__)}",'mock_objects','java_classes',"*.rb")].each {|f| require f}
|
8
|
+
Dir[File.join("#{File.dirname(__FILE__)}",'mock_objects',"*.rb")].each {|f| require f}
|
9
|
+
|
10
|
+
|
11
|
+
class Java
|
12
|
+
|
13
|
+
class Stubber
|
14
|
+
def RubyContainerPayload
|
15
|
+
MockObjects::JavaClasses::RubyContainerPayload.new
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.droiuby
|
20
|
+
self
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.client
|
24
|
+
self
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.core
|
28
|
+
Stubber.new
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.com
|
32
|
+
self
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
6
36
|
|
7
37
|
#Droiuby Mock Framework class
|
8
38
|
class DroiubyFramework
|
9
39
|
|
10
40
|
def before_activity_setup
|
11
|
-
fname = "#{File.dirname(__FILE__)}
|
41
|
+
fname = "#{File.dirname(__FILE__)}/bootstrap.rb"
|
12
42
|
@bootstrap = @bootstrap || File.read(fname)
|
13
43
|
eval(@bootstrap, TOPLEVEL_BINDING, fname, __LINE__)
|
14
44
|
end
|
@@ -59,3 +89,23 @@ class DroiubyFramework
|
|
59
89
|
end
|
60
90
|
|
61
91
|
$framework = DroiubyFramework.new
|
92
|
+
|
93
|
+
def set_mock_environment(environment = nil)
|
94
|
+
puts "new environment"
|
95
|
+
if environment.nil?
|
96
|
+
doc = Nokogiri.XML(File.read('config.droiuby'))
|
97
|
+
|
98
|
+
title = ''
|
99
|
+
params = {}
|
100
|
+
doc.css('app_descriptor').tap do |e|
|
101
|
+
%w[name description base_url main framework].each do |attr|
|
102
|
+
params[attr.to_sym] = e.css(attr).first.content
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
$mock_environment = MockEnvironment.new(params)
|
107
|
+
else
|
108
|
+
$mock_environment = environment
|
109
|
+
end
|
110
|
+
$mock_environment
|
111
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module MockObjects
|
2
|
+
module JavaClasses
|
3
|
+
|
4
|
+
class RubyContainerPayload
|
5
|
+
|
6
|
+
def java_method(method, params)
|
7
|
+
puts "method #{method} : #{params.inspect}"
|
8
|
+
end
|
9
|
+
|
10
|
+
def getExecutionBundle
|
11
|
+
MockObjects::JavaClasses::ExecutionBundle.new
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
class MockEnvironment
|
2
|
+
|
3
|
+
attr_accessor :current_app, :app_name, :base_url, :main_url
|
4
|
+
|
5
|
+
def initialize(params = {})
|
6
|
+
@current_app = DroiubyApp.new
|
7
|
+
@app_name = params[:app_name] || ''
|
8
|
+
@base_url = params[:base_url] || ''
|
9
|
+
@main_url = params[:main_url] || ''
|
10
|
+
@mock_view_heirarchy = []
|
11
|
+
end
|
12
|
+
|
13
|
+
def before_setup(activity_instance, template)
|
14
|
+
if (activity_instance.kind_of? Activity)
|
15
|
+
$framework.before_activity_setup
|
16
|
+
else
|
17
|
+
doc = Nokogiri.XML(File.read(template))
|
18
|
+
|
19
|
+
doc.css('app_descriptor name').each do |element|
|
20
|
+
title = element.content
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def on_create(activity_instance, refresh = false)
|
27
|
+
skip_content_view = if activity_instance.respond_to? :before_content_render
|
28
|
+
activity_instance.before_content_render unless refresh
|
29
|
+
end
|
30
|
+
|
31
|
+
set_content_view unless skip_content_view
|
32
|
+
|
33
|
+
instance.on_create
|
34
|
+
instance
|
35
|
+
end
|
36
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: droiuby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joseph Emmanuel Dayo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-04-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -115,13 +115,20 @@ files:
|
|
115
115
|
- lib/droiuby/scripts/templates/ruby/application.css.erb
|
116
116
|
- lib/droiuby/scripts/templates/ruby/config.droiuby.erb
|
117
117
|
- lib/droiuby/scripts/templates/ruby/gitignore.erb
|
118
|
+
- lib/droiuby/scripts/templates/ruby/index-hybrid.rb.erb
|
118
119
|
- lib/droiuby/scripts/templates/ruby/index.rb.erb
|
119
120
|
- lib/droiuby/scripts/templates/ruby/index.xml.erb
|
120
121
|
- lib/droiuby/scripts/templates/ruby/index_spec.rb.erb
|
121
122
|
- lib/droiuby/scripts/templates/ruby/spec_helper.rb.erb
|
123
|
+
- lib/droiuby/spec/bootstrap.rb
|
122
124
|
- lib/droiuby/spec/helper.rb
|
123
125
|
- lib/droiuby/spec/loader.rb
|
124
126
|
- lib/droiuby/spec/mock_objects/droiuby_app.rb
|
127
|
+
- lib/droiuby/spec/mock_objects/java_classes/execution_bundle.rb
|
128
|
+
- lib/droiuby/spec/mock_objects/java_classes/ruby_container_payload.rb
|
129
|
+
- lib/droiuby/spec/mock_objects/java_classes/view.rb
|
130
|
+
- lib/droiuby/spec/mock_objects/mock_environment.rb
|
131
|
+
- lib/droiuby/spec/mock_objects/mock_template_parser.rb
|
125
132
|
- lib/droiuby/spec/mock_objects/system_wrapper.rb
|
126
133
|
- lib/droiuby/support/asset.rb
|
127
134
|
- lib/droiuby/support/autoload.rb
|