gooddata 0.6.0.pre2 → 0.6.0.pre3
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.
- data/bin/gooddata +14 -4
- data/gooddata.gemspec +3 -2
- data/lib/gooddata.rb +2 -0
- data/lib/gooddata/bricks/brick.rb +40 -0
- data/lib/gooddata/bricks/middleware/bench_middleware.rb +14 -0
- data/lib/gooddata/bricks/middleware/gooddata_middleware.rb +22 -0
- data/lib/gooddata/bricks/middleware/logger_middleware.rb +14 -0
- data/lib/gooddata/bricks/middleware/middleware.rb +11 -0
- data/lib/gooddata/bricks/middleware/stdout_middleware.rb +12 -0
- data/lib/gooddata/bricks/middleware/twitter_middleware.rb +19 -0
- data/lib/gooddata/bricks/utils.rb +12 -0
- data/lib/gooddata/client.rb +1 -4
- data/lib/gooddata/commands/process.rb +6 -6
- data/lib/gooddata/commands/runners.rb +17 -12
- data/lib/gooddata/models/dashboard.rb +0 -1
- data/lib/gooddata/models/process.rb +0 -1
- data/lib/gooddata/version.rb +1 -1
- data/lib/templates/bricks/brick.rb.erb +1 -1
- data/lib/templates/bricks/main.rb.erb +1 -1
- metadata +32 -8
data/bin/gooddata
CHANGED
@@ -44,6 +44,11 @@ desc 'Verbose mode'
|
|
44
44
|
arg_name 'verbose'
|
45
45
|
switch [:v,:verbose]
|
46
46
|
|
47
|
+
desc 'Http logger on stdout'
|
48
|
+
arg_name 'logger'
|
49
|
+
switch [:l,:logger]
|
50
|
+
|
51
|
+
|
47
52
|
desc 'Describe list here'
|
48
53
|
arg_name 'Describe arguments to list here'
|
49
54
|
command :process do |c|
|
@@ -230,17 +235,22 @@ command :run_ruby do |c|
|
|
230
235
|
|
231
236
|
|
232
237
|
c.action do |global_options, options, args|
|
233
|
-
|
238
|
+
options[:params] = if (options[:params])
|
239
|
+
JSON.parse(File.read(options[:params]), :symbolize_names => true)
|
240
|
+
else
|
241
|
+
{}
|
242
|
+
end
|
243
|
+
|
234
244
|
opts = options.merge(global_options).merge({:project_id => options[:project], "project_id" => options[:project], :type => "RUBY"})
|
235
|
-
|
236
245
|
if options[:remote]
|
246
|
+
fail "You have to specify name of the deploy when deploying remotely" if options[:name].nil? || options[:name].empty?
|
237
247
|
require 'gooddata/commands/process'
|
238
248
|
GoodData::Command::Process.run(options[:dir], opts) do
|
239
249
|
puts "would run"
|
240
250
|
end
|
241
251
|
else
|
242
252
|
require 'gooddata/commands/runners'
|
243
|
-
GoodData::Command::Runners.
|
253
|
+
GoodData::Command::Runners.run_ruby_locally(options[:dir], opts)
|
244
254
|
end
|
245
255
|
end
|
246
256
|
end
|
@@ -260,7 +270,7 @@ end
|
|
260
270
|
|
261
271
|
pre do |global,command,options,args|
|
262
272
|
require 'logger'
|
263
|
-
GoodData.logger = Logger.new(STDOUT)
|
273
|
+
GoodData.logger = Logger.new(STDOUT) if global[:l]
|
264
274
|
username = global[:username]
|
265
275
|
password = global[:password]
|
266
276
|
|
data/gooddata.gemspec
CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.authors = ["Pavel Kolesnikov", "Thomas Watson Steen"]
|
14
14
|
s.summary = %q{A convenient Ruby wrapper around the GoodData RESTful API}
|
15
15
|
s.date = %q{2012-12-17}
|
16
|
-
s.description = %q{Use the
|
16
|
+
s.description = %q{Use the GoodData::Client class to integrate GoodData into your own application or use the CLI to work with GoodData directly from the command line.}
|
17
17
|
s.email = %q{pavel@gooddata.com}
|
18
18
|
s.executables = ["gooddata"]
|
19
19
|
s.extra_rdoc_files = [
|
@@ -25,12 +25,12 @@ Gem::Specification.new do |s|
|
|
25
25
|
s.require_paths = ["lib"]
|
26
26
|
s.rubygems_version = "1.3.7"
|
27
27
|
|
28
|
-
s.add_development_dependency "bundler"
|
29
28
|
s.add_development_dependency "thoughtbot-shoulda"
|
30
29
|
s.add_development_dependency "pry"
|
31
30
|
s.add_development_dependency "rake"
|
32
31
|
s.add_development_dependency "rspec"
|
33
32
|
|
33
|
+
s.add_dependency "bundler"
|
34
34
|
s.add_dependency "parseconfig"
|
35
35
|
s.add_dependency "json_pure"
|
36
36
|
s.add_dependency "rest-client"
|
@@ -40,6 +40,7 @@ Gem::Specification.new do |s|
|
|
40
40
|
s.add_dependency "gli"
|
41
41
|
s.add_dependency "pry"
|
42
42
|
s.add_dependency "erubis"
|
43
|
+
s.add_dependency "activesupport"
|
43
44
|
|
44
45
|
end
|
45
46
|
|
data/lib/gooddata.rb
CHANGED
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'gooddata/bricks/utils'
|
2
|
+
require 'gooddata/bricks/middleware/middleware'
|
3
|
+
require 'gooddata/bricks/middleware/bench_middleware'
|
4
|
+
require 'gooddata/bricks/middleware/gooddata_middleware'
|
5
|
+
require 'gooddata/bricks/middleware/logger_middleware'
|
6
|
+
require 'gooddata/bricks/middleware/stdout_middleware'
|
7
|
+
|
8
|
+
module GoodData
|
9
|
+
module Bricks
|
10
|
+
|
11
|
+
class Pipeline
|
12
|
+
def self.prepare(pipeline)
|
13
|
+
pipeline.reverse.reduce(nil) {|memo, app| memo.nil? ? app.new : app.new(memo)}
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class Brick
|
18
|
+
|
19
|
+
def log(message)
|
20
|
+
logger = @params[:gdc_logger]
|
21
|
+
logger.info(message) unless logger.nil?
|
22
|
+
end
|
23
|
+
|
24
|
+
def name
|
25
|
+
self.class
|
26
|
+
end
|
27
|
+
|
28
|
+
def version
|
29
|
+
fail "Method version should be reimplemented"
|
30
|
+
end
|
31
|
+
|
32
|
+
def call(params={})
|
33
|
+
@params = params
|
34
|
+
""
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'benchmark'
|
2
|
+
|
3
|
+
class BenchMiddleware < GoodData::Bricks::Middleware
|
4
|
+
|
5
|
+
def call(params)
|
6
|
+
puts "Starting timer"
|
7
|
+
result = nil
|
8
|
+
report = Benchmark.measure { result = @app.call(params) }
|
9
|
+
puts "Stopping timer"
|
10
|
+
pp report
|
11
|
+
result
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'gooddata'
|
2
|
+
|
3
|
+
class GoodDataMiddleware < GoodData::Bricks::Middleware
|
4
|
+
|
5
|
+
def call(params)
|
6
|
+
logger = params[:gdc_logger]
|
7
|
+
token_name = :GDC_SST
|
8
|
+
protocol_name = :GDC_PROTOCOL
|
9
|
+
server_name = :GDC_SERVER
|
10
|
+
|
11
|
+
fail "SST (SuperSecureToken) not present in params" if params[token_name].nil?
|
12
|
+
logger.info "Connecting to GD with SST"
|
13
|
+
server = if !params[protocol_name].empty? && !params[server_name].empty?
|
14
|
+
params[protocol_name] + "://" + params[server_name]
|
15
|
+
end
|
16
|
+
|
17
|
+
GoodData.connect_with_sst(params[token_name], {:server => server})
|
18
|
+
GoodData.logger = logger
|
19
|
+
@app.call(params)
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'logger'
|
2
|
+
|
3
|
+
class LoggerMiddleware < GoodData::Bricks::Middleware
|
4
|
+
|
5
|
+
def call(params)
|
6
|
+
logger = params[:gdc_logger] = params[:GDC_LOGGER_FILE].nil? ? Logger.new(STDOUT) : Logger.new(params[:GDC_LOGGER_FILE])
|
7
|
+
logger.info("Pipeline starts")
|
8
|
+
|
9
|
+
returning(@app.call(params)) do |result|
|
10
|
+
logger.info("Pipeline ending")
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class STDOUTLoggingMiddleware < GoodData::Bricks::Middleware
|
2
|
+
|
3
|
+
def call(params)
|
4
|
+
logger = Logger.new(STDOUT)
|
5
|
+
params[:logger] = logger
|
6
|
+
logger.info("Pipeline starting with STDOUT logger")
|
7
|
+
returning(@app.call(params)) do
|
8
|
+
logger.info("Pipeline ending")
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'twitter'
|
2
|
+
|
3
|
+
class TwitterMiddleware < GoodData::Bricks::Middleware
|
4
|
+
|
5
|
+
def call(params)
|
6
|
+
|
7
|
+
client = Twitter::REST::Client.new do |config|
|
8
|
+
config.consumer_key = params[:twitter_consumer_key]
|
9
|
+
config.consumer_secret = params[:twitter_consumer_secret]
|
10
|
+
config.access_token = params[:twitter_access_token]
|
11
|
+
config.access_token_secret = params[:twitter_access_token_secret]
|
12
|
+
end
|
13
|
+
|
14
|
+
returning(@app.call(params)) do |result|
|
15
|
+
client.update(result)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
data/lib/gooddata/client.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'gooddata/version'
|
2
2
|
require 'gooddata/connection'
|
3
|
-
require 'active_support/core_ext/string'
|
4
3
|
|
5
4
|
# fastercsv is built in Ruby 1.9
|
6
5
|
if RUBY_VERSION < "1.9"
|
@@ -112,9 +111,7 @@ module GoodData
|
|
112
111
|
# * +options+ - :cookies => you can specify a hash of cookies
|
113
112
|
#
|
114
113
|
def create_authenticated_connection(options={})
|
115
|
-
|
116
|
-
|
117
|
-
connect("", "", url, options)
|
114
|
+
connect(options)
|
118
115
|
server_cookies = options[:cookies]
|
119
116
|
connection.merge_cookies!(server_cookies)
|
120
117
|
connection.status = :logged_in
|
@@ -34,7 +34,7 @@ module GoodData::Command
|
|
34
34
|
|
35
35
|
|
36
36
|
type = options[:type] || fail("Type of deployment is not specified")
|
37
|
-
deploy_name =
|
37
|
+
deploy_name = options[:name]
|
38
38
|
verbose = options[:verbose] || false
|
39
39
|
project_pid = options[:project_pid]
|
40
40
|
puts HighLine::color("Deploying #{dir}", HighLine::BOLD) if verbose
|
@@ -78,8 +78,8 @@ module GoodData::Command
|
|
78
78
|
if type == :ruby
|
79
79
|
result = GoodData.post(link, {
|
80
80
|
:execution => {
|
81
|
-
:graph => dir + "main.rb",
|
82
|
-
:params =>
|
81
|
+
:graph => (dir + "main.rb").to_s,
|
82
|
+
:params => options[:params]
|
83
83
|
}
|
84
84
|
})
|
85
85
|
begin
|
@@ -117,17 +117,17 @@ module GoodData::Command
|
|
117
117
|
def self.run(dir, options={})
|
118
118
|
email = options[:email]
|
119
119
|
verbose = options[:v]
|
120
|
-
|
121
120
|
dir = Pathname(dir)
|
121
|
+
name = options[:name] || "Temporary deploy[#{dir}][#{options[:project_name]}]"
|
122
122
|
|
123
|
-
with_deploy(dir, options.merge(:name =>
|
123
|
+
with_deploy(dir, options.merge(:name => name)) do |deploy_response|
|
124
124
|
puts HighLine::color("Executing", HighLine::BOLD) if verbose
|
125
125
|
# if email.nil?
|
126
126
|
# result = execute_process(deploy_response["process"]["links"]["executions"], dir, options)
|
127
127
|
# else
|
128
128
|
# create_email_channel(options) do |channel_response|
|
129
129
|
# subscribe_on_finish(:success, channel_response, deploy_response, options)
|
130
|
-
result = execute_process(deploy_response["process"]["links"]["executions"], dir)
|
130
|
+
result = execute_process(deploy_response["process"]["links"]["executions"], dir, options)
|
131
131
|
# end
|
132
132
|
# end
|
133
133
|
end
|
@@ -1,33 +1,38 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
|
1
3
|
module GoodData::Command
|
2
4
|
class Runners
|
3
5
|
|
4
|
-
def self.
|
6
|
+
def self.run_ruby_locally(brick_dir, options={})
|
5
7
|
pid = options[:project]
|
6
8
|
fail "You have to specify a project ID" if pid.nil?
|
7
|
-
fail "You have to specify directory of the brick
|
9
|
+
fail "You have to specify directory of the brick run" if brick_dir.nil?
|
10
|
+
fail "You specified file as a birck run directory. You have to specify directory." if File.exist?(brick_dir) && !File.directory?(brick_dir)
|
8
11
|
|
9
|
-
params =
|
10
|
-
JSON.parse(File.read(options[:params]), :symbolize_names => true)
|
11
|
-
else
|
12
|
-
{}
|
13
|
-
end
|
12
|
+
params = options[:params] || {}
|
14
13
|
|
15
14
|
GoodData.connection.connect!
|
16
15
|
sst = GoodData.connection.cookies[:cookies]["GDCAuthSST"]
|
17
|
-
|
16
|
+
pwd = Pathname.new(Dir.pwd)
|
18
17
|
logger_stream = STDOUT
|
18
|
+
|
19
|
+
server_uri = URI(options[:server]) unless options[:server].nil?
|
20
|
+
scheme = server_uri.nil? ? "" : server_uri.scheme
|
21
|
+
hostname = server_uri.nil? ? "" : server_uri.host
|
22
|
+
|
19
23
|
script_body = <<-script_body
|
20
24
|
require 'fileutils'
|
21
|
-
FileUtils::cd(\"#{brick_dir}\") do\
|
25
|
+
FileUtils::cd(\"#{pwd+brick_dir}\") do\
|
22
26
|
require 'bundler/setup'
|
23
27
|
eval(File.read(\"main.rb\")).call({
|
24
|
-
:
|
25
|
-
:
|
28
|
+
:GDC_SST => \"#{sst}\",
|
29
|
+
:GDC_PROJECT_ID => \"#{pid}\",
|
30
|
+
:GDC_PROTOCOL => \"#{scheme}\",
|
31
|
+
:GDC_SERVER => \"#{hostname}\"
|
26
32
|
}.merge(#{params}))
|
27
33
|
end
|
28
34
|
script_body
|
29
35
|
|
30
|
-
|
31
36
|
Bundler.with_clean_env do
|
32
37
|
system("ruby", "-e", script_body)
|
33
38
|
end
|
data/lib/gooddata/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gooddata
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.0.
|
4
|
+
version: 0.6.0.pre3
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ cert_chain: []
|
|
13
13
|
date: 2012-12-17 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
16
|
+
name: thoughtbot-shoulda
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
- !ruby/object:Gem::Version
|
30
30
|
version: '0'
|
31
31
|
- !ruby/object:Gem::Dependency
|
32
|
-
name:
|
32
|
+
name: pry
|
33
33
|
requirement: !ruby/object:Gem::Requirement
|
34
34
|
none: false
|
35
35
|
requirements:
|
@@ -45,7 +45,7 @@ dependencies:
|
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '0'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
48
|
+
name: rake
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
@@ -61,7 +61,7 @@ dependencies:
|
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: '0'
|
63
63
|
- !ruby/object:Gem::Dependency
|
64
|
-
name:
|
64
|
+
name: rspec
|
65
65
|
requirement: !ruby/object:Gem::Requirement
|
66
66
|
none: false
|
67
67
|
requirements:
|
@@ -77,14 +77,14 @@ dependencies:
|
|
77
77
|
- !ruby/object:Gem::Version
|
78
78
|
version: '0'
|
79
79
|
- !ruby/object:Gem::Dependency
|
80
|
-
name:
|
80
|
+
name: bundler
|
81
81
|
requirement: !ruby/object:Gem::Requirement
|
82
82
|
none: false
|
83
83
|
requirements:
|
84
84
|
- - ! '>='
|
85
85
|
- !ruby/object:Gem::Version
|
86
86
|
version: '0'
|
87
|
-
type: :
|
87
|
+
type: :runtime
|
88
88
|
prerelease: false
|
89
89
|
version_requirements: !ruby/object:Gem::Requirement
|
90
90
|
none: false
|
@@ -236,7 +236,23 @@ dependencies:
|
|
236
236
|
- - ! '>='
|
237
237
|
- !ruby/object:Gem::Version
|
238
238
|
version: '0'
|
239
|
-
|
239
|
+
- !ruby/object:Gem::Dependency
|
240
|
+
name: activesupport
|
241
|
+
requirement: !ruby/object:Gem::Requirement
|
242
|
+
none: false
|
243
|
+
requirements:
|
244
|
+
- - ! '>='
|
245
|
+
- !ruby/object:Gem::Version
|
246
|
+
version: '0'
|
247
|
+
type: :runtime
|
248
|
+
prerelease: false
|
249
|
+
version_requirements: !ruby/object:Gem::Requirement
|
250
|
+
none: false
|
251
|
+
requirements:
|
252
|
+
- - ! '>='
|
253
|
+
- !ruby/object:Gem::Version
|
254
|
+
version: '0'
|
255
|
+
description: Use the GoodData::Client class to integrate GoodData into your own application
|
240
256
|
or use the CLI to work with GoodData directly from the command line.
|
241
257
|
email: pavel@gooddata.com
|
242
258
|
executables:
|
@@ -258,6 +274,14 @@ files:
|
|
258
274
|
- examples.rb
|
259
275
|
- gooddata.gemspec
|
260
276
|
- lib/gooddata.rb
|
277
|
+
- lib/gooddata/bricks/brick.rb
|
278
|
+
- lib/gooddata/bricks/middleware/bench_middleware.rb
|
279
|
+
- lib/gooddata/bricks/middleware/gooddata_middleware.rb
|
280
|
+
- lib/gooddata/bricks/middleware/logger_middleware.rb
|
281
|
+
- lib/gooddata/bricks/middleware/middleware.rb
|
282
|
+
- lib/gooddata/bricks/middleware/stdout_middleware.rb
|
283
|
+
- lib/gooddata/bricks/middleware/twitter_middleware.rb
|
284
|
+
- lib/gooddata/bricks/utils.rb
|
261
285
|
- lib/gooddata/client.rb
|
262
286
|
- lib/gooddata/commands/api.rb
|
263
287
|
- lib/gooddata/commands/auth.rb
|