zillabyte-cli 0.0.17 → 0.0.18

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ODVkNDFiMGFlMjc2OWM5MzU2NmY3MzdjZWJiYzIwY2RkNWU2MTdlYQ==
4
+ M2YzNzJlOTE4Mzk3Y2QxZmYwMTY1NjNiNWUxYTBlZTg5ODk4OTgyNg==
5
5
  data.tar.gz: !binary |-
6
- ZGI4OTFhZTY3N2E2NDhhZDNmNjBhNTFhNTExZTg4ODgzMTcwYjk3Zg==
7
- SHA512:
6
+ OGFkNGQ1MDYxMTE2NzJhMDIyNGJjMjc4YzNiNTQ2YmUzYjljZTRmMA==
7
+ !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- YWJkZDg3ZGQ2N2E4N2UxNDY4MTRmMDUwNjZhMWY2NjEyNzE1NDE5YWFjNzY0
10
- MTRkZTQwZjU1NDUxMmVkMTM2ODE5YWMwNzQ4MzU1ZDE3MWE5ZjQ2MTNjZGY0
11
- YmFlOTc5YmJjNzg3OTY4NGVjNGM0YTc3YjU4NTE4YmI1YjIyMmM=
9
+ NzQzM2E2NjIxYmZmZjhhNzlkYmQzMjgyNzkzMTg2YjRkMDQ4YTY1ZDQxY2Rk
10
+ MjU0NTU2MGMwYWJjNjgxYmE3NDk5MjNmZmJkNDdhOTBhZWViYzdkN2JlNWIw
11
+ MTMyZGZiYjYwNjdkNzI1Y2YyN2JlZWI2NDY2N2NiOTIyZjY5NjY=
12
12
  data.tar.gz: !binary |-
13
- ZmMyZDU5Yzg5NjNlOWQyM2UyZTBlMjA3MThhN2M2M2VkMWI3YzYyOGRhMGQz
14
- ZmI5OWM4NDNlNGYyOWFjMDdkNjRlYzM5NTA5MjFjNzlkZGI5MDdlODk1NTA3
15
- MzI0N2RjMjQzMWZmNzJkMjA1MTUzYzlhODgwMGE5OWY4ZGMxZWQ=
13
+ YTllY2ZjNjViNTM3ZjcwODhlOGM5MDZhMWQ5YjAyZGMzMGY0MGZhOGNlNTcz
14
+ MGQzYjM1MzJkZmI5ZmQwZmJjYjQzNDk5MDI0MDY0N2JmNmVlZjJiYjcxNDY5
15
+ YWM1NmI3ZjE0NTJkM2ZiMzc4YzhlMDhmODJlMzAzOWFlNjBmMWY=
@@ -14,15 +14,14 @@ class Zillabyte::API::Apps < Zillabyte::API::Base
14
14
  res = @api.request(
15
15
  :expects => 200,
16
16
  :method => :get,
17
- :path => "/flows"
17
+ :path => "/flows",
18
+ :body => options.to_json
18
19
  )
19
20
 
20
21
  res.body
21
22
 
22
23
  end
23
24
 
24
-
25
-
26
25
 
27
26
  # GET /flows/id
28
27
  def get(id, options = {})
@@ -42,8 +41,6 @@ class Zillabyte::API::Apps < Zillabyte::API::Base
42
41
 
43
42
  end
44
43
 
45
-
46
-
47
44
 
48
45
  # GET /flows/id/kill
49
46
  def kill(id, options = {})
@@ -115,29 +112,29 @@ class Zillabyte::API::Apps < Zillabyte::API::Base
115
112
  end
116
113
 
117
114
 
118
- # GET /flows/id
115
+ # GET /flows/id/download
119
116
  def pull_to_directory(id, dir, session = nil, options = {})
120
117
 
121
118
  # Get the resource. note query params
122
- session.display "downloading ##{id}" if session
119
+ type = options[:type]
120
+ session.display "downloading ##{id}" if session && type.nil?
123
121
  res = @api.request(
124
122
  :expects => 200,
125
123
  :method => :get,
126
- :path => "/flows/#{id}/download"
127
- #:path => "/flows/#{id}?indirect_url=1"
128
- #:path => "/flows/#{id}?tar=1"
124
+ :path => "/flows/#{id}/download",
125
+ :body => options.to_json
129
126
  )
130
-
127
+
131
128
  hash = res.body
132
129
  unless hash['status'] == 'error'
133
130
  if(hash['tar'])
134
- session.display "unpacking to #{dir}" if session
131
+ session.display "unpacking to #{dir}" if type.nil?
135
132
  tar = StringIO.new(Base64.decode64(hash['tar']))
136
133
  hash.delete('tar')
137
134
  Zillabyte::Common::Tar.untar(tar, dir)
138
- #If you get an uri instead of the tar, then download the file directly from s3
135
+ #If you get an uri instead of the tar, then download the file directly from s3
139
136
  elsif(hash['uri'])
140
- session.display "downloading ##{id} to #{dir}" if session
137
+ session.display "downloading ##{id} to #{dir}" if type.nil?
141
138
  uri = URI(hash['uri'])
142
139
  try_again = 1
143
140
  while(try_again)
@@ -191,7 +188,7 @@ class Zillabyte::API::Apps < Zillabyte::API::Base
191
188
  options = {
192
189
  :name => hash['name'],
193
190
  :meta => hash,
194
- # :tar => Base64.encode64(tar.read)
191
+ # :tar => Base64.encode64(tar.read)
195
192
  }.merge(options)
196
193
 
197
194
  session.display("uploading #{tar.size} bytes... ", false) if session && type.nil?
@@ -259,7 +256,7 @@ class Zillabyte::API::Apps < Zillabyte::API::Base
259
256
  command = "cd \"#{dir}\"; PYTHONPATH=~/zb1/multilang/python/Zillabyte python \"#{full_script}\" #{arg}"
260
257
  end
261
258
  when "js"
262
- # command = "#{Zillabyte::API::CASPERJS_BIN} #{Zillabyte::API::API_CLIENT_JS} \"#{full_script}\" --info"
259
+ #command = "#{Zillabyte::API::CASPERJS_BIN} #{Zillabyte::API::API_CLIENT_JS} \"#{full_script}\" --info"
263
260
  command = "cd \"#{dir}\"; NODE_PATH=~/zb1/multilang/js/src/lib #{Zillabyte::API::NODEJS_BIN} \"#{full_script}\" #{arg}"
264
261
  else
265
262
  session.error "unsupported language: #{hash["language"]}" if session
@@ -7,7 +7,7 @@ class Zillabyte::API::Data < Zillabyte::API::Base
7
7
  res = @api.request(
8
8
  :expects => 200,
9
9
  :method => :get,
10
- :path => "/relations/#{id}",
10
+ :path => "/relations/#{CGI.escape(id)}",
11
11
  :body => options.to_json
12
12
  )
13
13
  res.body
@@ -28,7 +28,7 @@ class Zillabyte::API::Data < Zillabyte::API::Base
28
28
  res = @api.request(
29
29
  :expects => 200,
30
30
  :method => :post,
31
- :path => "/relations/#{id}/pull",
31
+ :path => "/relations/#{CGI.escape(id)}/pull",
32
32
  :body => options.to_json
33
33
  )
34
34
  res.body
@@ -38,7 +38,7 @@ class Zillabyte::API::Data < Zillabyte::API::Base
38
38
  res = @api.request(
39
39
  :expects => 200,
40
40
  :method => :post,
41
- :path => "/relations/#{id}/pull_to_s3",
41
+ :path => "/relations/#{CGI.escape(id)}/pull_to_s3",
42
42
  :body => options.to_json
43
43
  )
44
44
  res.body
@@ -53,7 +53,7 @@ class Zillabyte::API::Data < Zillabyte::API::Base
53
53
  # schema
54
54
  # relations
55
55
  }.merge(options)
56
-
56
+
57
57
  res = @api.request(
58
58
  :expects => 200,
59
59
  :method => :post,
@@ -66,12 +66,13 @@ class Zillabyte::API::Data < Zillabyte::API::Base
66
66
  end
67
67
 
68
68
 
69
- def delete(id, option={})
69
+ def delete(id, options={})
70
70
 
71
71
  res = @api.request(
72
72
  :expects => 200,
73
73
  :method => :delete,
74
- :path => "/relations/#{id}"
74
+ :path => "/relations/#{CGI.escape(id)}",
75
+ :body => options.to_json
75
76
  )
76
77
 
77
78
  res.body
@@ -84,7 +85,7 @@ class Zillabyte::API::Data < Zillabyte::API::Base
84
85
  res = @api.request(
85
86
  :expects => 200,
86
87
  :method => :post,
87
- :path => "/relations/#{id}/append",
88
+ :path => "/relations/#{CGI.escape(id)}/append",
88
89
  :body => options.to_json
89
90
  )
90
91
  hash = res.body
data/lib/zillabyte/api.rb CHANGED
@@ -65,13 +65,17 @@ class Zillabyte::API
65
65
  end
66
66
 
67
67
  type = nil
68
- if @options
69
- type = @options[:type]
68
+ if params[:body]
69
+ begin
70
+ param_hash = JSON.parse(params[:body])
71
+ type = param_hash["type"]
72
+ rescue JSON::ParserError => e
73
+ @session.error("invalid parameters", type)
74
+ end
70
75
  end
71
76
 
72
-
73
77
  begin
74
-
78
+
75
79
  # If a block is given, then we assume we're streaming (i.e. for logs)
76
80
  if block_given?
77
81
 
@@ -111,11 +115,13 @@ class Zillabyte::API
111
115
  end
112
116
  end
113
117
  end
114
-
118
+
115
119
  # Execute the request
116
120
  response = @connection.request(params)
117
121
 
118
122
 
123
+
124
+
119
125
  rescue Excon::Errors::HTTPStatusError => error
120
126
 
121
127
 
@@ -125,6 +131,7 @@ class Zillabyte::API
125
131
  hash = JSON.parse(error.response.body)
126
132
  if hash['error_message']
127
133
  @session.error(hash['error_message'], type)
134
+
128
135
  end
129
136
  rescue JSON::ParserError => e
130
137
  # Trickle to generic message below
@@ -108,13 +108,17 @@ class Zillabyte::Command::Apps < Zillabyte::Command::Base
108
108
  # $ zillabyte apps:pull .
109
109
  #
110
110
  def pull
111
-
112
- id = options[:id] || shift_argument
111
+
112
+ app_id = options[:id] || shift_argument
113
+
114
+ if !(app_id =~ /^\d*$/)
115
+ options[:is_name] = true
116
+ end
117
+
113
118
  dir = options[:directory] || shift_argument
114
119
  type = options[:type]
115
-
116
120
 
117
- error("no id given", type) if id.nil?
121
+ error("no id given", type) if app_id.nil?
118
122
  error("no directory given", type) if dir.nil?
119
123
 
120
124
  # Create if not exists..
@@ -126,7 +130,7 @@ class Zillabyte::Command::Apps < Zillabyte::Command::Base
126
130
  FileUtils.mkdir_p(dir)
127
131
  end
128
132
 
129
- res = api.apps.pull_to_directory id, dir, session
133
+ res = api.apps.pull_to_directory app_id, dir, session, options
130
134
 
131
135
  if res['error']
132
136
  error("error: #{res['error_message']}", type)
@@ -150,10 +154,13 @@ class Zillabyte::Command::Apps < Zillabyte::Command::Base
150
154
  # --type TYPE # specify an output type i.e. json
151
155
  #
152
156
  def delete
153
- id = options[:id] || shift_argument
154
- if id.nil?
155
- id = read_name_from_conf(options)
156
- options[:flow_name] = true
157
+ app_id = options[:id] || shift_argument
158
+
159
+ if app_id.nil?
160
+ app_id = read_name_from_conf(options)
161
+ options[:is_name] = true
162
+ elsif !(app_id =~ /^\d*$/)
163
+ options[:is_name] = true
157
164
  end
158
165
  forced = options[:force]
159
166
  type = options[:type]
@@ -176,7 +183,7 @@ class Zillabyte::Command::Apps < Zillabyte::Command::Base
176
183
  confirmed = forced || confirm == "yes"
177
184
 
178
185
  if confirmed
179
- response = api.apps.delete(id, options)
186
+ response = api.apps.delete(app_id, options)
180
187
  if type == "json"
181
188
  display {}.to_json
182
189
  else
@@ -195,7 +202,6 @@ class Zillabyte::Command::Apps < Zillabyte::Command::Base
195
202
  def prep
196
203
 
197
204
  dir = options[:directory] || shift_argument || Dir.pwd
198
-
199
205
  meta = Zillabyte::CLI::Config.get_config_info(dir)
200
206
 
201
207
  case meta["language"]
@@ -203,7 +209,7 @@ class Zillabyte::Command::Apps < Zillabyte::Command::Base
203
209
 
204
210
  # Execute in the bundler context
205
211
  full_script = File.join(dir, meta["script"])
206
- cmd = "cd \"#{meta['home_dir']}\"; unset BUNDLE_GEMFILE; bundle install"
212
+ cmd = "cd \"#{meta['home_dir']}\"; unset BUNDLE_GEMFILE; unset RUBYOPT; bundle install"
207
213
  exec(cmd)
208
214
 
209
215
  when "python"
@@ -258,7 +264,7 @@ class Zillabyte::Command::Apps < Zillabyte::Command::Base
258
264
 
259
265
 
260
266
 
261
- # apps:logs APP_ID [OPERATION_NAME]
267
+ # apps:logs ID [OPERATION_NAME]
262
268
  #
263
269
  # streams logs from the distributed workers
264
270
  #
@@ -267,7 +273,14 @@ class Zillabyte::Command::Apps < Zillabyte::Command::Base
267
273
  #
268
274
  def logs
269
275
 
270
- app_id = options[:app] || shift_argument
276
+ app_id = options[:id] || shift_argument
277
+ if app_id.nil?
278
+ app_id = read_name_from_conf(options)
279
+ options[:is_name] = true
280
+ elsif !(app_id =~ /^\d*$/)
281
+ options[:is_name] = true
282
+ end
283
+
271
284
  operation_id = options[:operation] || shift_argument || '_ALL_'
272
285
  category = options[:verbose] || '_ALL_'
273
286
  type = options[:type]
@@ -275,16 +288,10 @@ class Zillabyte::Command::Apps < Zillabyte::Command::Base
275
288
  carry_settings = {
276
289
  :category => category
277
290
  }
278
- api_options = {}
279
291
 
280
- if app_id.nil?
281
- app_id = read_name_from_conf(options)
282
- api_options[:flow_name] = true
283
- end
284
-
285
292
  display "Retrieving logs for app ##{app_id}...please wait..." if type.nil?
286
293
  lf = LogFormatter::Operation.new
287
- self.api.logs.get(app_id, operation_id, api_options) do |line|
294
+ self.api.logs.get(app_id, operation_id, options) do |line|
288
295
 
289
296
  error(line['error_message'], type) if line['error']
290
297
  lf.print_log_line(line) if type.nil?
@@ -309,7 +316,9 @@ class Zillabyte::Command::Apps < Zillabyte::Command::Base
309
316
  # No name?
310
317
  if app_id.nil?
311
318
  app_id = read_name_from_conf(options)
312
- options[:flow_name] = true
319
+ options[:is_name] = true
320
+ elsif !(app_id =~ /^\d*$/)
321
+ options[:is_name] = true
313
322
  end
314
323
 
315
324
  type = options[:type]
@@ -372,7 +381,9 @@ class Zillabyte::Command::Apps < Zillabyte::Command::Base
372
381
 
373
382
  if app_id.nil?
374
383
  app_id = read_name_from_conf(options)
375
- options[:flow_name] = true
384
+ options[:is_name] = true
385
+ elsif !(app_id =~ /^\d*$/)
386
+ options[:is_name] = true
376
387
  end
377
388
 
378
389
  if trigger_next
@@ -401,7 +412,7 @@ class Zillabyte::Command::Apps < Zillabyte::Command::Base
401
412
  if response["job_id"]
402
413
  options[:job_id] = response["job_id"]
403
414
  app_id = response["flow_id"]
404
- options.delete :flow_name
415
+ options.delete :is_name
405
416
 
406
417
  start = Time.now.utc
407
418
  display "Next cycle request sent. If your app was RETIRED this may take slightly longer." if type.nil?
@@ -892,12 +903,14 @@ class Zillabyte::Command::Apps < Zillabyte::Command::Base
892
903
  #
893
904
  def kill
894
905
 
895
- id = options[:id] || shift_argument
906
+ app_id = options[:id] || shift_argument
896
907
  type = options[:type]
897
908
 
898
- if id.nil?
899
- id = read_name_from_conf(options)
900
- options[:flow_name] = true
909
+ if app_id.nil?
910
+ app_id = read_name_from_conf(options)
911
+ options[:is_name] = true
912
+ elsif !(app_id =~ /^\d*$/)
913
+ options[:is_name] = true
901
914
  end
902
915
 
903
916
  display "Killing app ##{id}...please wait..." if type.nil?
@@ -80,9 +80,9 @@ class Zillabyte::Command::Relations < Zillabyte::Command::Base
80
80
  end
81
81
 
82
82
  confirmed = forced || confirm == "yes"
83
-
84
83
  if confirmed
85
- res = api.data.delete(id)
84
+ res = api.data.delete(id, options)
85
+
86
86
  if res['error']
87
87
  error(res['error'], type)
88
88
  else
@@ -110,7 +110,7 @@ class Zillabyte::Command::Relations < Zillabyte::Command::Base
110
110
  # --type TYPE # The output format type
111
111
  #
112
112
  def create
113
-
113
+
114
114
  name = options[:name] || shift_argument
115
115
  file = options[:file] || nil
116
116
  filetype = options[:filetype] || nil
@@ -136,7 +136,6 @@ class Zillabyte::Command::Relations < Zillabyte::Command::Base
136
136
  end
137
137
 
138
138
  res = api.data.create name, hash
139
-
140
139
  if res['error']
141
140
  error("#{res['error_message']}", type)
142
141
  else
@@ -146,7 +145,7 @@ class Zillabyte::Command::Relations < Zillabyte::Command::Base
146
145
  display "relation ##{res['id']} #{res['action']}. size: #{res['size'] || 0} rows."
147
146
  end
148
147
  end
149
-
148
+
150
149
  end
151
150
  alias_command "rl:create", "relations:create"
152
151
 
@@ -169,11 +168,11 @@ class Zillabyte::Command::Relations < Zillabyte::Command::Base
169
168
  error("no file given", type) if file.nil?
170
169
 
171
170
 
172
- relation = self.api.data.get(id)
171
+ relation = self.api.data.get(id, options)
173
172
  columns = relation["columns"].map{|col| {col["index"] => col["type"]}}
174
173
  rows = sanity_check_file(file,filetype,{"columns" => columns}, type)
175
174
 
176
- res = self.api.data.append(id, {:rows => rows})
175
+ res = self.api.data.append(id, options.merge({:rows => rows}))
177
176
  if type == "json"
178
177
  display {}.to_json
179
178
  else
@@ -189,7 +188,7 @@ class Zillabyte::Command::Relations < Zillabyte::Command::Base
189
188
  # pulls relation data into OUTPUT.gz
190
189
  #
191
190
  # --cycle_id [cycle_id] # retrieve data generated for that cycle, only if this relation is associated with an app. (defaults to the last cycle
192
- # --type TYPE # the output format type
191
+ # --type TYPE # specify a communication format (i.e json) for programmatic interaction
193
192
  #
194
193
  def pull
195
194
 
@@ -427,7 +426,7 @@ class Zillabyte::Command::Relations < Zillabyte::Command::Base
427
426
  error("specify public or private using --public")
428
427
  end
429
428
 
430
- {:schema => schema, :public => is_public, :description => description, :aliases => aliases}
429
+ {:schema => schema, :public => is_public, :description => description, :aliases => aliases, :type => type}
431
430
  end
432
431
 
433
432
 
@@ -0,0 +1,22 @@
1
+ require "zillabyte/cli/base"
2
+
3
+ # REPL console for zillabyte commands
4
+ #
5
+ class Zillabyte::Command::Repl < Zillabyte::Command::Base
6
+
7
+ # repl
8
+ #
9
+ # Start a console session for zillabyte
10
+ #
11
+ def index
12
+
13
+ while true
14
+
15
+ display "zilla> ", false
16
+ cmd = ask
17
+ exec "zillabyte #{cmd}; zillabyte repl"
18
+
19
+ end
20
+
21
+ end
22
+ end
@@ -0,0 +1,16 @@
1
+ # This is a template; feel free to change it.
2
+ # For more details, check out http://docs.zillabyte.com/quickstart/hello_world/
3
+
4
+ require 'zillabyte'
5
+
6
+ app = Zillabyte.app("hello_world_app")
7
+ .source("select * from web_pages")
8
+ .each{ |page|
9
+ if page['html'].include? "hello world"
10
+ emit :url => page['url']
11
+ end
12
+ }
13
+ .sink{
14
+ name "has_hello_world"
15
+ column "url", :string
16
+ }
@@ -1,2 +1,2 @@
1
1
  language: ruby
2
- script: simple_app.rb
2
+ script: app.rb
@@ -1,5 +1,5 @@
1
1
  module Zillabyte
2
2
  module CLI
3
- VERSION = "0.0.17"
3
+ VERSION = "0.0.18"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zillabyte-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.17
4
+ version: 0.0.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - zillabyte
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-16 00:00:00.000000000 Z
11
+ date: 2014-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -243,7 +243,6 @@ extensions: []
243
243
  extra_rdoc_files: []
244
244
  files:
245
245
  - bin/zillabyte
246
- - lib/#zillabyte-cli.rb#
247
246
  - lib/zillabyte/api/apps.rb
248
247
  - lib/zillabyte/api/base.rb
249
248
  - lib/zillabyte/api/data.rb
@@ -257,7 +256,6 @@ files:
257
256
  - lib/zillabyte/api/zillalogs.rb
258
257
  - lib/zillabyte/api.rb
259
258
  - lib/zillabyte/auth.rb
260
- - lib/zillabyte/cli/#logs.rb#
261
259
  - lib/zillabyte/cli/apps.rb
262
260
  - lib/zillabyte/cli/auth.rb
263
261
  - lib/zillabyte/cli/base.rb
@@ -270,15 +268,15 @@ files:
270
268
  - lib/zillabyte/cli/log_formatter.rb
271
269
  - lib/zillabyte/cli/query.rb
272
270
  - lib/zillabyte/cli/relations.rb
271
+ - lib/zillabyte/cli/repl.rb
273
272
  - lib/zillabyte/cli/sources.rb
274
273
  - lib/zillabyte/cli/templates/js/simple_function.js
275
274
  - lib/zillabyte/cli/templates/js/zillabyte.conf.yaml
276
- - lib/zillabyte/cli/templates/python/#simple_function.py#
277
275
  - lib/zillabyte/cli/templates/python/requirements.txt
278
276
  - lib/zillabyte/cli/templates/python/simple_function.py
279
277
  - lib/zillabyte/cli/templates/python/zillabyte.conf.yaml
278
+ - lib/zillabyte/cli/templates/ruby/app.rb
280
279
  - lib/zillabyte/cli/templates/ruby/Gemfile
281
- - lib/zillabyte/cli/templates/ruby/simple_app.rb
282
280
  - lib/zillabyte/cli/templates/ruby/zillabyte.conf.yaml
283
281
  - lib/zillabyte/cli/version.rb
284
282
  - lib/zillabyte/cli/zillalogs.rb
@@ -317,7 +315,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
317
315
  version: '0'
318
316
  requirements: []
319
317
  rubyforge_project:
320
- rubygems_version: 2.1.10
318
+ rubygems_version: 2.0.7
321
319
  signing_key:
322
320
  specification_version: 4
323
321
  summary: The Official Zillabyte CLI Gem
@@ -1,5 +0,0 @@
1
- require "zillabyte-cli/version"
2
- require "zillabyte/api"
3
- require "zillabyte/cli"
4
- require "zillabyte/common"
5
- require "zillabyte/queries"
@@ -1,12 +0,0 @@
1
- require "zillabyte/cli/base"
2
-
3
- # manage custom logs
4
- #
5
- class Zillabyte::Command::Logs < Zillabyte::Command::Base
6
-
7
-
8
-
9
-
10
-
11
-
12
- end
@@ -1,27 +0,0 @@
1
- import zillabyte
2
-
3
- def prep(controller):
4
- return
5
-
6
- # This is the heart of your algorithm. It's processed on every
7
- # web page. This algorithm is run in parallel on possibly hundreds
8
- # of machines.
9
- def execute(controller, tup):
10
- if("hello world" in tup.values["html"]):
11
- controller.emit("has_hello_world",{"url":tup.values["url"]})
12
- return
13
-
14
- zillabyte.simple_function(\
15
- # This directive instructs zillabyte to give your function every
16
- # web page in our known universe. Your function will have access
17
- # to two fields: URL and HTML
18
- matches = "select * from web_pa", \
19
-
20
- # This directive tells Zillabyte what kind of data your function
21
- # produces. In this case, we're saying we will emit a tuple that
22
- # is one-column wide and contains the field 'URL'
23
- emits = [["has_hello_world", [{"url":"string"}]]], \
24
-
25
- prepare = prep, \
26
- execute = execute\
27
- )
@@ -1,42 +0,0 @@
1
- require 'zillabyte'
2
-
3
- Zillabyte.simple_app do
4
-
5
- # This specifies the app's name and is mandatory.
6
- name "simple_app"
7
-
8
- # This directive instructs zillabyte to give your app every
9
- # web page in our known universe. Your app will have access
10
- # to two fields: URL and HTML
11
- matches "select * from web_pages"
12
-
13
- # This directive tells Zillabyte what kind of data your app
14
- # produces. In this case, we're saying we will emit a tuple that
15
- # is one-column wide and contains the field 'URL'
16
- emits [
17
- [
18
- "has_hello_world", [ {"URL"=>:string} ]
19
- ]
20
- ]
21
-
22
-
23
- # This is the heart of your algorithm. It's processed on every
24
- # web page. This algorithm is run in parallel on possibly hundreds
25
- # of machines.
26
- execute do |tuple|
27
-
28
- # get the fields
29
- url = tuple['url']
30
- html = tuple['html']
31
-
32
- # For the purpose of this test, to show results from the test set,
33
- # we'll loosen the search to include either hello or world
34
- # instead of
35
- # if html.include?('hello world')
36
- if html.include?('hello world')
37
- emit("has_hello_world", "URL" => url)
38
- end
39
-
40
- end
41
-
42
- end