droiuby 0.0.3 → 0.0.4

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.
Files changed (3) hide show
  1. data/bin/drby +8 -2
  2. data/lib/droiuby/project.rb +74 -28
  3. metadata +68 -55
data/bin/drby CHANGED
@@ -34,6 +34,8 @@ case command
34
34
  device_ip = ARGV[2]
35
35
  elsif ARGV.size == 2
36
36
  device_ip = ARGV[1]
37
+ elsif ARGV.size == 1
38
+ device_ip = nil
37
39
  else
38
40
  puts "zips and uploads app to device"
39
41
  puts "usage: "
@@ -44,7 +46,8 @@ case command
44
46
 
45
47
 
46
48
  project = Project.new
47
- project.execute(project_name, device_ip, ENV['DROIUBY_HOST'])
49
+ droiuby_host = ENV['DROIUBY_HOST'] || '10.0.2.2'
50
+ project.execute(project_name, device_ip, droiuby_host)
48
51
  when 'live'
49
52
  project_name = nil
50
53
  if ARGV.size == 3
@@ -52,6 +55,8 @@ case command
52
55
  device_ip = ARGV[2]
53
56
  elsif ARGV.size == 2
54
57
  device_ip = ARGV[1]
58
+ elsif ARGV.size == 1
59
+ device_ip = nil
55
60
  else
56
61
  puts "starts a live web server and point droiuby to it"
57
62
  puts "usage: "
@@ -60,7 +65,8 @@ case command
60
65
  exit(1)
61
66
  end
62
67
  project = Project.new
63
- project.live(project_name, device_ip, ENV['DROIUBY_HOST'], '')
68
+ droiuby_host = ENV['DROIUBY_HOST'] || '10.0.2.2'
69
+ project.live(project_name, device_ip, droiuby_host, '')
64
70
  else
65
71
  puts "invalid command"
66
72
  puts "Should be:"
@@ -1,12 +1,10 @@
1
1
  require 'rubygems'
2
-
3
2
  require 'net/http'
4
3
  require 'net/http/post/multipart'
5
4
  require 'zip'
6
5
  require 'thor'
7
6
  require "uri"
8
7
  require 'cgi'
9
-
10
8
  require 'active_support/core_ext/object'
11
9
  require 'active_support/core_ext/string'
12
10
 
@@ -18,6 +16,16 @@ class Project < Thor
18
16
 
19
17
  desc "launch device IP [URL]","Tell droiuby to connect to app hosted at URL"
20
18
  def launch(device_ip, url)
19
+
20
+ if device_ip.nil?
21
+ device_ip = '127.0.0.1'
22
+ begin
23
+ `adb forward tcp:4000 tcp:4000`
24
+ rescue Exception=>e
25
+ puts e.inspect
26
+ end
27
+ end
28
+
21
29
  url_str = "http://#{device_ip}:4000/control?cmd=launch&url=#{CGI::escape(url)}"
22
30
  puts "loading application at url #{url}"
23
31
  puts url_str
@@ -29,17 +37,18 @@ class Project < Thor
29
37
  end
30
38
 
31
39
  desc "create NAME [WORKSPACE_DIR]","create a new droiuby project with NAME"
40
+
32
41
  def create(name, output_dir = 'projects')
33
42
  @name = name
34
43
  @description = name
35
44
  @launcher_icon = ''
36
45
  @base_url = ''
37
46
  @main_xml = 'index.xml'
38
-
47
+
39
48
  if output_dir.blank?
40
49
  output_dir = Dir.pwd
41
50
  end
42
-
51
+
43
52
  dest_folder = File.join(output_dir,"#{name}")
44
53
  template File.join('ruby','config.droiuby.erb'), File.join(dest_folder,"config.droiuby")
45
54
  template File.join('ruby','gitignore.erb'), File.join(dest_folder,".gitignore")
@@ -53,30 +62,39 @@ class Project < Thor
53
62
 
54
63
  def package(name, source_dir = 'projects', force = "false")
55
64
  src_folder = if name.blank?
56
- Dir.pwd
57
- else
58
- File.join(source_dir, name)
59
- end
65
+ Dir.pwd
66
+ else
67
+ File.join(source_dir, name)
68
+ end
60
69
  say "compress #{src_folder}"
61
70
  compress(src_folder, force)
62
71
  end
63
72
 
64
73
  require 'webrick'
65
74
  include WEBrick
66
-
75
+
67
76
  desc "live NAME DEVICE_IP [HOST NAME] [SOURCE]", "Allow live editing of apps by starting a web server and pointing droiuby to the local instance"
68
- def live(name, device_ip, host_name = nil, source_dir = 'projects')
69
77
 
78
+ def live(name, device_ip = nil, host_name = nil, source_dir = 'projects')
70
79
 
71
80
  source_dir_args = source_dir ? source_dir : 'projects'
72
81
  host_name_args = host_name ? host_name : Socket.gethostname
73
-
82
+
74
83
  src_dir = if name.blank?
75
84
  Dir.pwd
76
85
  else
77
86
  File.join(source_dir_args, name)
78
87
  end
79
88
 
89
+ if device_ip.nil?
90
+ device_ip = '127.0.0.1'
91
+ begin
92
+ `adb forward tcp:4000 tcp:4000`
93
+ rescue Exception=>e
94
+ puts e.inspect
95
+ end
96
+ end
97
+
80
98
  port = 2000
81
99
 
82
100
  ready = false
@@ -97,36 +115,51 @@ class Project < Thor
97
115
  server.start
98
116
  end
99
117
 
100
-
101
118
  desc "upload NAME DEVICE_IP [WORKSPACE_DIR]","uploads a droiuby application to target device running droiuby client"
102
- def upload(name, device_ip, source_dir = 'projects')
103
-
104
- source_dir = if name.blank?
119
+
120
+ def upload(name, device_ip, source_dir = 'projects', framework = false)
121
+
122
+ source_dir = if name.blank? || framework
105
123
  Dir.pwd
106
124
  else
107
125
  File.join(source_dir, name)
108
- end
126
+ end
127
+
128
+ if device_ip.nil?
129
+ device_ip = '127.0.0.1'
130
+ begin
131
+ `adb forward tcp:4000 tcp:4000`
132
+ rescue Exception=>e
133
+ puts e.inspect
134
+ end
135
+ end
109
136
 
110
- src_package = unless name.blank?
137
+ src_package = if framework
138
+ File.join(source_dir,'framework_src','build',"#{name}.zip")
139
+ elsif !name.blank?
111
140
  File.join(source_dir,name,'build',"#{name}.zip")
112
141
  else
113
142
  name = File.basename(source_dir)
114
143
  File.join(source_dir,'build',"#{name}.zip")
115
144
  end
116
-
117
145
 
118
146
  url_str = "http://#{device_ip}:4000/upload"
119
147
  uri = URI.parse(url_str)
120
148
  say "uploading #{src_package} to #{url_str} -> #{uri.host}:#{uri.port}"
121
149
  File.open(src_package) do |zip|
122
- req = Net::HTTP::Post::Multipart.new uri.path,
123
- "name" => name,
124
- "run" => "true",
125
- "file" => UploadIO.new(zip, "application/zip", src_package,"content-disposition" => "form-data; name=\"file\"; filename=\"#{File.basename(src_package)}\"\r\n")
150
+
151
+ params = {
152
+ "name" => name,
153
+ "run" => "true",
154
+ "file" => UploadIO.new(zip, "application/zip", src_package,"content-disposition" => "form-data; name=\"file\"; filename=\"#{File.basename(src_package)}\"\r\n")}
155
+
156
+
157
+ params.merge!(framework: 'true') if framework
158
+ req = Net::HTTP::Post::Multipart.new uri.path, params
126
159
 
127
160
  retries = 0
128
161
  res = nil
129
-
162
+
130
163
  while (retries < 3)
131
164
  sleep 1 + retries
132
165
  begin
@@ -139,7 +172,7 @@ class Project < Thor
139
172
  next
140
173
  end
141
174
  end
142
-
175
+
143
176
  if res && res.code == "200"
144
177
 
145
178
  say_status 'upload', src_package
@@ -147,15 +180,23 @@ class Project < Thor
147
180
  if res
148
181
  say_status 'upload','res.body', :red
149
182
  else
150
- say_status 'upload',"upload failed. cannot connect to #{url_str}", :red
183
+ say_status 'upload',"upload failed. cannot connect to #{url_str}", :red
151
184
  end
152
-
185
+
153
186
  end
154
187
 
155
188
  end
156
189
  end
157
190
 
191
+ desc "framework DEVICE_IP","updates the droiuby framework using code from framework_src"
192
+
193
+ def framework(device_ip = nil, source_dir = 'framework_src')
194
+ compress(source_dir, "true", "framework")
195
+ upload 'framework', device_ip, File.join(Dir.pwd,"framework_src"), true
196
+ end
197
+
158
198
  desc "execute NAME DEVICE_IP [WORKSPACE_DIR]","package and execute a droiuby application to target device running droiuby client"
199
+
159
200
  def execute(name, device_ip, source_dir = 'projects')
160
201
  `adb shell am start -W -S --activity-clear-top --activity-brought-to-front -n com.droiuby.application/.CanvasActivity`
161
202
  package name, source_dir, "true"
@@ -164,12 +205,17 @@ class Project < Thor
164
205
 
165
206
  private
166
207
 
167
- def compress(path, force = "false")
208
+ def compress(path, force = "false", archive_name = nil)
168
209
  path.sub!(%r[/$],'')
169
210
  unless Dir.exists?(File.join(path,'build'))
170
211
  Dir.mkdir(File.join(path,'build'))
171
212
  end
172
- archive = File.join(path,'build',"#{File.basename(path)}.zip")
213
+
214
+ archive_name = File.basename(path) if archive_name.nil?
215
+
216
+
217
+ archive = File.join(path,'build',"#{archive_name}.zip")
218
+
173
219
  if force=='true' || file_collision(archive)
174
220
 
175
221
  FileUtils.rm archive, :force=>true
metadata CHANGED
@@ -1,112 +1,112 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: droiuby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
5
- prerelease:
4
+ version: 0.0.4
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Joseph Emmanuel Dayo
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-11-15 00:00:00.000000000 Z
12
+ date: 2013-11-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- version_requirements: !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
17
18
  requirements:
18
- - - '>='
19
+ - - ! '>='
19
20
  - !ruby/object:Gem::Version
20
21
  version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
21
25
  none: false
22
- requirement: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - '>='
27
+ - - ! '>='
25
28
  - !ruby/object:Gem::Version
26
29
  version: '0'
27
- none: false
28
- prerelease: false
29
- type: :runtime
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: thor
32
- version_requirements: !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
33
34
  requirements:
34
- - - '>='
35
+ - - ! '>='
35
36
  - !ruby/object:Gem::Version
36
37
  version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
37
41
  none: false
38
- requirement: !ruby/object:Gem::Requirement
39
42
  requirements:
40
- - - '>='
43
+ - - ! '>='
41
44
  - !ruby/object:Gem::Version
42
45
  version: '0'
43
- none: false
44
- prerelease: false
45
- type: :runtime
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: rubyzip
48
- version_requirements: !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
49
50
  requirements:
50
- - - '>='
51
+ - - ! '>='
51
52
  - !ruby/object:Gem::Version
52
53
  version: 1.0.0
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
53
57
  none: false
54
- requirement: !ruby/object:Gem::Requirement
55
58
  requirements:
56
- - - '>='
59
+ - - ! '>='
57
60
  - !ruby/object:Gem::Version
58
61
  version: 1.0.0
59
- none: false
60
- prerelease: false
61
- type: :runtime
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: multipart-post
64
- version_requirements: !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
65
66
  requirements:
66
- - - '>='
67
+ - - ! '>='
67
68
  - !ruby/object:Gem::Version
68
69
  version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
69
73
  none: false
70
- requirement: !ruby/object:Gem::Requirement
71
74
  requirements:
72
- - - '>='
75
+ - - ! '>='
73
76
  - !ruby/object:Gem::Version
74
77
  version: '0'
75
- none: false
76
- prerelease: false
77
- type: :runtime
78
78
  - !ruby/object:Gem::Dependency
79
79
  name: properties-ruby
80
- version_requirements: !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
81
82
  requirements:
82
- - - '>='
83
+ - - ! '>='
83
84
  - !ruby/object:Gem::Version
84
85
  version: '0'
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
85
89
  none: false
86
- requirement: !ruby/object:Gem::Requirement
87
90
  requirements:
88
- - - '>='
91
+ - - ! '>='
89
92
  - !ruby/object:Gem::Version
90
93
  version: '0'
91
- none: false
92
- prerelease: false
93
- type: :runtime
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: activesupport
96
- version_requirements: !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
97
98
  requirements:
98
- - - '>='
99
+ - - ! '>='
99
100
  - !ruby/object:Gem::Version
100
101
  version: '0'
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
101
105
  none: false
102
- requirement: !ruby/object:Gem::Requirement
103
106
  requirements:
104
- - - '>='
107
+ - - ! '>='
105
108
  - !ruby/object:Gem::Version
106
109
  version: '0'
107
- none: false
108
- prerelease: false
109
- type: :runtime
110
110
  description: Android development using ruby
111
111
  email: joseph.dayo@gmail.com
112
112
  executables:
@@ -116,35 +116,48 @@ extra_rdoc_files: []
116
116
  files:
117
117
  - lib/droiuby.rb
118
118
  - lib/droiuby/project.rb
119
- - lib/droiuby/templates/ruby/config.droiuby.erb
120
119
  - lib/droiuby/templates/ruby/gitignore.erb
120
+ - lib/droiuby/templates/ruby/config.droiuby.erb
121
+ - lib/droiuby/templates/ruby/application.css.erb
121
122
  - lib/droiuby/templates/ruby/index.rb.erb
122
123
  - lib/droiuby/templates/ruby/index.xml.erb
123
- - lib/droiuby/templates/ruby/application.css.erb
124
124
  - bin/drby
125
125
  homepage: http://rubygems.org/gems/droiuby
126
126
  licenses:
127
127
  - MIT
128
- post_install_message:
128
+ post_install_message: ! 'Droiuby Gem Installed!
129
+
130
+ Post Install work:
131
+
132
+ 1.Go install the droiuby development app here:
133
+
134
+ 2. Download the android sdk (http://developer.android.com/sdk/index.html)
135
+
136
+ 3. Setup your PATH to include <sdk directory>/sdk/platform-tools (make sure adb
137
+ works)
138
+
139
+ 4. Attach your android phone to your PC via USB and start rocking!!
140
+
141
+ '
129
142
  rdoc_options: []
130
143
  require_paths:
131
144
  - lib
132
145
  required_ruby_version: !ruby/object:Gem::Requirement
146
+ none: false
133
147
  requirements:
134
- - - '>='
148
+ - - ! '>='
135
149
  - !ruby/object:Gem::Version
136
150
  version: '0'
137
- none: false
138
151
  required_rubygems_version: !ruby/object:Gem::Requirement
152
+ none: false
139
153
  requirements:
140
- - - '>='
154
+ - - ! '>='
141
155
  - !ruby/object:Gem::Version
142
156
  version: '0'
143
- none: false
144
157
  requirements: []
145
- rubyforge_project:
158
+ rubyforge_project:
146
159
  rubygems_version: 1.8.24
147
- signing_key:
160
+ signing_key:
148
161
  specification_version: 3
149
162
  summary: Droiuby GEM
150
163
  test_files: []