droiuby 0.3.3 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8c6ff04f6a5e9cb16a20c96bdbebecda9f3020f7
4
- data.tar.gz: ad821125f554248da8b1deef8f152172357e0a78
3
+ metadata.gz: 66f1b851db7272ef16731e1dbb62d891b3596a30
4
+ data.tar.gz: e83fb1c37367b7b0f758a34416c417e38057180b
5
5
  SHA512:
6
- metadata.gz: bf675b9c51881c61d0f929d2e059bcf0972b9c73003abda80397ba95bb4cb192fa25705072efc957cf6fa17f28260ee9942c50da7aa44b07f7793f58edd802ce
7
- data.tar.gz: 3eac88fb9fc301bc9b01cff02b2cf788edbe8221fe94602ad1c0d7a3c3dc1c380b6f5137fb270ecb362a9efe00d53fdbf1f03922d1f2e429af96db369ad85828
6
+ metadata.gz: c039489821c83bad6fc91006b43bab08bb51e507bf44bb6cce8516dcca7d2769ed79b516650af91480ff4961511471f700f51f5abf9b92c4db683fe7d2b4627a
7
+ data.tar.gz: ce55b3bd6ac358fb298e595f594b5a054d57b602a9eeea52b0687ad449f825ebe65602b27cc973d360ced125c958ebe74756b1b9a830400bb7af56f2f82918c8
data/bin/drby CHANGED
@@ -10,13 +10,16 @@ require 'json'
10
10
  $droiuby_host = ENV['DROIUBY_HOST'] || '10.0.2.2'
11
11
  $device_ip = ENV['DROIUBY_DEVICE'] || nil
12
12
  $app_name = nil
13
+ $no_project = false
14
+ $show_help = false
15
+ $ant_args = nil
13
16
 
14
17
  options = OptionParser.new do |o|
15
18
  o.banner =
16
19
  "Usage: drby autostart true|false INSTANCE_NAME [options] # Set specified instance to start on droiuby launch
17
20
  drby console [options] # Launch an interactive console to the target Android Device running Droiuby
18
21
  drby framework update [FOLDER] [options] # updates the droiuby framework from folder (default src_framework)
19
- drby go [PROJECT_NAME] [options] # packages an app and uploads to an Android Device running Droiuby
22
+ drby go [PROJECT_NAME] [options] [--no-project] # packages an app and uploads to an Android Device running Droiuby
20
23
  drby list [options] # Lists the app instances running on the phone
21
24
  drby live [PROJECT_NAME] [options] # runs a web instance of the app and tells Droiuby to load it.
22
25
  drby new PROJECT_NAME [options] # Create a new project
@@ -27,12 +30,16 @@ options = OptionParser.new do |o|
27
30
  drby switch INSTANCE_NAME [options] # Switch to the specified instance
28
31
  drby bundle # unzips all gems in vendor/cache for deployment to droiuby\n"
29
32
 
33
+
30
34
  o.separator ""
31
35
  o.separator "options:"
36
+ o.on('-X','--ant-args','additional params to pass to ant') { |b| $ant_args = b}
37
+ o.on('-h','--help','show this help screen') {|b| $show_help = true}
32
38
  o.on('-n','--name app_name','The name of the app that appears in the launcher') {|b| $app_name =b }
33
39
  o.on('-p','--package java_package','The java package name to use') {|b| $java_package = b}
34
40
  o.on('-h','--host HOST_IP','The IP Address of the host computer (for droiuby live mode)') { |b| $droiuby_host = b }
35
41
  o.on('-d','--device DEVICE_IP','The IP Address of the Android Device') { |b| $device_ip = b }
42
+ o.on('-P','--no-project','Tells drby go to ignore the android project if present') {|b| $no_project = true}
36
43
  o.parse!
37
44
  end
38
45
 
@@ -174,7 +181,7 @@ case command
174
181
  end
175
182
  end
176
183
 
177
- project.execute(project_name, $device_ip, $droiuby_host)
184
+ project.execute(project_name, $device_ip, $droiuby_host, $no_project, $ant_args)
178
185
  when 'bundle'
179
186
  project.bundle
180
187
  when 'live'
@@ -78,15 +78,15 @@ class Project < Thor
78
78
  desc "list [DEVICE IP]","List running app instances"
79
79
  def list(device_ip = nil)
80
80
  device_ip = map_device_ip(device_ip)
81
- url_str = "http://#{device_ip}:4000/control?cmd=list"
82
- puts url_str
83
- uri = URI.parse(url_str)
84
- # Shortcut
85
- response = Net::HTTP.get_response(uri)
86
- result = JSON.parse(response.body)
87
- result['list'].split(',').each do |item|
88
- puts item
89
- end
81
+ url_str = "http://#{device_ip}:4000/control?cmd=list"
82
+ puts url_str
83
+ uri = URI.parse(url_str)
84
+ # Shortcut
85
+ response = Net::HTTP.get_response(uri)
86
+ result = JSON.parse(response.body)
87
+ result['list'].split(',').each do |item|
88
+ puts item
89
+ end
90
90
  end
91
91
 
92
92
  desc "cmd [command] [DEVICE_IP]", "Send command to a Droiuby instance"
@@ -218,6 +218,9 @@ class Project < Thor
218
218
  template File.join('ruby','index.xml.erb'), File.join(dest_folder,"app","views","index.xml")
219
219
  template File.join('ruby','application.css.erb'), File.join(dest_folder,"app","views","styles","application.css")
220
220
  template File.join('ruby','index.rb.erb'), File.join(dest_folder,"app","activities","index.rb")
221
+ template File.join('ruby','index_spec.rb.erb'), File.join(dest_folder,"spec","activities","index_spec.rb")
222
+ template File.join('ruby','spec_helper.rb.erb'), File.join(dest_folder,"spec","spec_helper.rb")
223
+
221
224
  empty_directory File.join(dest_folder,"lib")
222
225
  say "running bundle install"
223
226
  Dir.chdir dest_folder
@@ -358,8 +361,8 @@ class Project < Thor
358
361
  upload 'framework', device_ip, File.join(Dir.pwd,"framework_src"), true
359
362
  end
360
363
 
361
- desc "execute NAME DEVICE_IP [WORKSPACE_DIR]","package and execute a droiuby application to target device running droiuby client"
362
- def execute(name, device_ip, source_dir = 'projects')
364
+ desc "execute NAME DEVICE_IP [WORKSPACE_DIR] [IGNORE_PROJECT] [ANT_ARGS]","package and execute a droiuby application to target device running droiuby client"
365
+ def execute(name, device_ip, source_dir = 'projects', ignore_project = false, ant_args = nil)
363
366
 
364
367
  package name, source_dir, "true"
365
368
 
@@ -373,7 +376,7 @@ class Project < Thor
373
376
  project_directory = File.join(src_dir,'project')
374
377
 
375
378
  say "exsits? #{project_directory}"
376
- if File.exists? project_directory
379
+ if !ignore_project && File.exists?(project_directory)
377
380
  say "Android Project exists. Building debug project instead ..."
378
381
  Dir.chdir(project_directory)
379
382
  doc = Nokogiri.XML(File.read('AndroidManifest.xml'))
@@ -390,7 +393,11 @@ class Project < Thor
390
393
  `adb shell am start -S --activity-clear-top --activity-brought-to-front -n #{package_name}/.StartupActivity`
391
394
  else
392
395
  say "No device connected. will just build the project"
393
- puts `ant debug`
396
+ if ant_args.nil?
397
+ puts `ant debug`
398
+ else
399
+ puts `ant #{ant_args}`
400
+ end
394
401
  end
395
402
  else
396
403
  upload name, device_ip, source_dir
@@ -1,3 +1,5 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
- gem 'droiuby'
3
+ gem 'droiuby'
4
+ gem 'rspec'
5
+ gem 'rr'
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe Index do
4
+
5
+ context "#on_create" do
6
+
7
+ before do
8
+ @instance = described_class.new
9
+ end
10
+
11
+ it "sets up the activity" do
12
+ @instance.on_create
13
+ end
14
+ end
15
+
16
+ end
@@ -0,0 +1,13 @@
1
+ require 'droiuby/spec/helper'
2
+
3
+ ENV["DROIUBY_ENV"] ||= 'test'
4
+
5
+ RSpec.configure do |config|
6
+ # ## Mock Framework
7
+ #
8
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
9
+ #
10
+ # config.mock_with :mocha
11
+ # config.mock_with :flexmock
12
+ config.mock_with :rr
13
+ end
@@ -0,0 +1,61 @@
1
+ $:.unshift Dir.pwd
2
+
3
+ require File.join(File.dirname(__FILE__),'loader')
4
+ $autoload_path << File.join('app','activities')
5
+
6
+
7
+ #Droiuby Mock Framework class
8
+ class DroiubyFramework
9
+
10
+ def before_activity_setup
11
+ fname = "#{File.dirname(__FILE__)}/../bootstrap.rb"
12
+ @bootstrap = @bootstrap || File.read(fname)
13
+ eval(@bootstrap, TOPLEVEL_BINDING, fname, __LINE__)
14
+ end
15
+
16
+ def preload
17
+ fname = "#{File.dirname(__FILE__)}/preload.rb"
18
+ @preload = @preload || File.read(fname)
19
+ eval(@preload, TOPLEVEL_BINDING, fname, __LINE__)
20
+ end
21
+
22
+ def on_click(view)
23
+ end
24
+
25
+ def script(controller, refresh = false)
26
+ klass = controller.camelize.constantize
27
+ instance = klass.new
28
+
29
+ skip_content_view = if instance.respond_to? :before_content_render
30
+ instance.before_content_render unless refresh
31
+ end
32
+
33
+ set_content_view unless skip_content_view
34
+
35
+ instance.on_create
36
+ instance
37
+ end
38
+
39
+ def resolve_view(name, node)
40
+ name_parts = name.split('#')
41
+
42
+ klass_str = if name_parts.size > 1
43
+ "#{name_parts[0].camelize}::#{name_parts[1].camelize}"
44
+ else
45
+ name.camelize
46
+ end
47
+
48
+ puts klass_str
49
+ klass = klass_str.constantize
50
+
51
+ instance = klass.new(_current_activity)
52
+ if instance.class < ViewWrapper
53
+ instance.native
54
+ else
55
+ instance._proxy_class([Java::android.content.Context.java_class], [_current_activity])
56
+ end
57
+ end
58
+
59
+ end
60
+
61
+ $framework = DroiubyFramework.new
@@ -0,0 +1,17 @@
1
+ require 'droiuby/support/utils'
2
+ require 'droiuby/support/fixnum'
3
+ require 'droiuby/support/autoload'
4
+ require 'droiuby/wrappers/collection/view_array'
5
+ require 'droiuby/wrappers/proxy_builder/interface_builder'
6
+ require 'droiuby/wrappers/listeners/auto_wrap'
7
+ require 'droiuby/wrappers/listeners/on_web_console_ready_listener'
8
+ require 'droiuby/support/string'
9
+ require 'droiuby/support/thread'
10
+ require 'droiuby/support/object'
11
+ require 'droiuby/support/to_query'
12
+ require 'droiuby/support/asset'
13
+ require 'droiuby/wrappers/java_helpers/java_method_helper'
14
+ require 'droiuby/wrappers/java_helpers/view_helper'
15
+ require 'droiuby/plugins/plugins'
16
+ require 'droiuby/application'
17
+ require 'droiuby/android'
@@ -0,0 +1,11 @@
1
+ class DroiubyApp
2
+
3
+ def initialize(working_directory = nil)
4
+ @working_directory = working_directory
5
+ end
6
+
7
+ def getWorkingDirectory
8
+ @working_directory
9
+ end
10
+
11
+ end
@@ -0,0 +1,5 @@
1
+ module Droiuby
2
+ class SystemWrapper
3
+
4
+ end
5
+ end
@@ -2,46 +2,51 @@ class BitmapDrawableWrapper
2
2
  def initialize(drawable)
3
3
  @native = drawable
4
4
  end
5
-
5
+
6
6
  def native
7
7
  @native
8
8
  end
9
-
9
+
10
10
  def to_bitmap
11
11
  @native.getBitmap
12
12
  end
13
-
13
+
14
14
  def height
15
15
  @native.getIntrinsicHeight
16
16
  end
17
-
17
+
18
18
  def width
19
19
  @native.getIntrinsicWidth
20
20
  end
21
21
  end
22
22
 
23
23
  class AssetHandler
24
-
25
- def initialize(url)
24
+
25
+ def initialize(url, asset_type)
26
26
  @url = url
27
+ @asset_type = case asset_type
28
+ when :image
29
+ Java::com.droiuby.client.core.utils.Utils::ASSET_TYPE_IMAGE
30
+ end
31
+
27
32
  end
28
-
29
- def self.download(url)
30
- AssetHandler.new(url)
33
+
34
+ def self.download(url, asset_type = :image)
35
+ AssetHandler.new(url, asset_type)
31
36
  end
32
-
37
+
33
38
  def start
34
39
  async.perform {
35
40
  result = BitmapDrawableWrapper.new(Java::com.droiuby.client.core.utils.Utils.loadAppAssetRuby(_execution_bundle, _current_app, _current_activity,
36
- @url, Java::com.droiuby.client.core.utils.Utils::ASSET_TYPE_IMAGE, Java::com.droiuby.client.core.utils.Utils::HTTP_GET))
41
+ @url, @asset_type, Java::com.droiuby.client.core.utils.Utils::HTTP_GET))
37
42
  result
38
43
  }.done { |result|
39
44
  @block.call(result)
40
45
  }.start
41
46
  end
42
-
47
+
43
48
  def done(&block)
44
49
  @block = block
45
50
  self
46
51
  end
47
- end
52
+ end
@@ -1,22 +1,21 @@
1
1
  $autoload_path = [nil,File.join('droiuby','wrappers')]
2
2
 
3
-
4
3
  module MissingHandler
5
4
  def const_missing(name)
6
5
  @looked_for ||= {}
7
6
  str_name = name.to_s
8
7
  raise "Class not found: #{name}" if @looked_for[str_name] == :missing
9
-
10
-
8
+
9
+
11
10
  name_parts = name.to_s.split('::').collect { |n| n.underscore }
12
-
13
-
11
+
12
+
14
13
  $autoload_path.each do |path|
15
- path_array = unless path.nil?
14
+ path_array = unless path.nil?
16
15
  [path] + name_parts
17
16
  else
18
17
  name_parts
19
- end
18
+ end
20
19
  require_path = File.join(*path_array)
21
20
 
22
21
  begin
@@ -25,9 +24,9 @@ module MissingHandler
25
24
  return klass if klass
26
25
  rescue LoadError=>e
27
26
  end
28
-
27
+
29
28
  end
30
-
29
+
31
30
  @looked_for[str_name] = :missing
32
31
 
33
32
  raise "Class not found: #{name}"
@@ -38,7 +37,7 @@ end
38
37
  class Object
39
38
  class << self
40
39
  alias :const_missing_old :const_missing
41
-
40
+
42
41
  include MissingHandler
43
42
  end
44
43
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: droiuby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joseph Emmanuel Dayo
@@ -117,6 +117,12 @@ files:
117
117
  - lib/droiuby/scripts/templates/ruby/gitignore.erb
118
118
  - lib/droiuby/scripts/templates/ruby/index.rb.erb
119
119
  - lib/droiuby/scripts/templates/ruby/index.xml.erb
120
+ - lib/droiuby/scripts/templates/ruby/index_spec.rb.erb
121
+ - lib/droiuby/scripts/templates/ruby/spec_helper.rb.erb
122
+ - lib/droiuby/spec/helper.rb
123
+ - lib/droiuby/spec/loader.rb
124
+ - lib/droiuby/spec/mock_objects/droiuby_app.rb
125
+ - lib/droiuby/spec/mock_objects/system_wrapper.rb
120
126
  - lib/droiuby/support/asset.rb
121
127
  - lib/droiuby/support/autoload.rb
122
128
  - lib/droiuby/support/fixnum.rb