gooddata 0.6.0 → 0.6.2

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 (208) hide show
  1. checksums.yaml +13 -5
  2. data/.rubocop.yml +23 -0
  3. data/.travis.yml +9 -4
  4. data/CLI.md +439 -0
  5. data/Gemfile +0 -1
  6. data/README.md +2 -2
  7. data/Rakefile +60 -8
  8. data/doc/templates/default/module/setup.rb +1 -1
  9. data/examples.rb +2 -0
  10. data/gooddata +2 -0
  11. data/gooddata.gemspec +12 -8
  12. data/lib/gooddata.rb +0 -2
  13. data/lib/gooddata/bricks/base_downloader.rb +52 -47
  14. data/lib/gooddata/bricks/brick.rb +20 -31
  15. data/lib/gooddata/bricks/bricks.rb +1 -1
  16. data/lib/gooddata/bricks/middleware/base_middleware.rb +9 -7
  17. data/lib/gooddata/bricks/middleware/bench_middleware.rb +12 -10
  18. data/lib/gooddata/bricks/middleware/bulk_salesforce_middleware.rb +28 -28
  19. data/lib/gooddata/bricks/middleware/fs_upload_middleware.rb +20 -16
  20. data/lib/gooddata/bricks/middleware/gooddata_middleware.rb +21 -19
  21. data/lib/gooddata/bricks/middleware/logger_middleware.rb +10 -8
  22. data/lib/gooddata/bricks/middleware/restforce_middleware.rb +36 -34
  23. data/lib/gooddata/bricks/middleware/stdout_middleware.rb +11 -9
  24. data/lib/gooddata/bricks/middleware/twitter_middleware.rb +14 -12
  25. data/lib/gooddata/bricks/pipeline.rb +28 -0
  26. data/lib/gooddata/bricks/utils.rb +10 -8
  27. data/lib/gooddata/cli/cli.rb +1 -6
  28. data/lib/gooddata/cli/commands/auth_cmd.rb +1 -1
  29. data/lib/gooddata/cli/commands/console_cmd.rb +7 -5
  30. data/lib/gooddata/cli/commands/domain_cmd.rb +45 -0
  31. data/lib/gooddata/cli/commands/process_cmd.rb +42 -5
  32. data/lib/gooddata/cli/commands/project_cmd.rb +96 -36
  33. data/lib/gooddata/cli/commands/projects_cmd.rb +21 -0
  34. data/lib/gooddata/cli/commands/role_cmd.rb +28 -0
  35. data/lib/gooddata/cli/commands/run_ruby_cmd.rb +5 -5
  36. data/lib/gooddata/cli/commands/scaffold_cmd.rb +1 -1
  37. data/lib/gooddata/cli/commands/{profile_cmd.rb → user_cmd.rb} +7 -9
  38. data/lib/gooddata/cli/shared.rb +3 -2
  39. data/lib/gooddata/client.rb +16 -304
  40. data/lib/gooddata/commands/api.rb +13 -5
  41. data/lib/gooddata/commands/auth.rb +47 -40
  42. data/lib/gooddata/commands/base.rb +4 -2
  43. data/lib/gooddata/commands/commands.rb +1 -1
  44. data/lib/gooddata/commands/datasets.rb +20 -7
  45. data/lib/gooddata/commands/domain.rb +23 -0
  46. data/lib/gooddata/commands/process.rb +23 -117
  47. data/lib/gooddata/commands/project.rb +147 -0
  48. data/lib/gooddata/commands/projects.rb +8 -102
  49. data/lib/gooddata/commands/role.rb +26 -0
  50. data/lib/gooddata/commands/runners.rb +41 -38
  51. data/lib/gooddata/commands/scaffold.rb +46 -43
  52. data/lib/gooddata/commands/user.rb +33 -0
  53. data/lib/gooddata/connection.rb +43 -353
  54. data/lib/gooddata/core/connection.rb +389 -0
  55. data/lib/gooddata/core/core.rb +5 -4
  56. data/lib/gooddata/core/logging.rb +48 -0
  57. data/lib/gooddata/core/nil_logger.rb +13 -0
  58. data/lib/gooddata/core/project.rb +70 -0
  59. data/lib/gooddata/core/rest.rb +120 -0
  60. data/lib/gooddata/core/threaded.rb +14 -0
  61. data/lib/gooddata/core/user.rb +19 -0
  62. data/lib/gooddata/data/data.rb +2 -1
  63. data/lib/gooddata/data/guesser.rb +16 -12
  64. data/lib/gooddata/exceptions/command_failed.rb +1 -1
  65. data/lib/gooddata/exceptions/exceptions.rb +2 -1
  66. data/lib/gooddata/exceptions/no_project_error.rb +11 -0
  67. data/lib/gooddata/exceptions/project_not_found.rb +1 -1
  68. data/lib/gooddata/extensions/big_decimal.rb +6 -2
  69. data/lib/gooddata/extract.rb +10 -8
  70. data/lib/gooddata/goodzilla/goodzilla.rb +61 -59
  71. data/lib/gooddata/helpers.rb +15 -9
  72. data/lib/gooddata/models/account_settings.rb +124 -0
  73. data/lib/gooddata/models/attributes/anchor.rb +37 -0
  74. data/lib/gooddata/models/attributes/attributes.rb +8 -0
  75. data/lib/gooddata/models/attributes/date_attribute.rb +25 -0
  76. data/lib/gooddata/models/attributes/time_attribute.rb +24 -0
  77. data/lib/gooddata/models/columns/attribute.rb +71 -0
  78. data/lib/gooddata/models/columns/columns.rb +8 -0
  79. data/lib/gooddata/models/columns/date_column.rb +63 -0
  80. data/lib/gooddata/models/columns/fact_model.rb +54 -0
  81. data/lib/gooddata/models/columns/label.rb +55 -0
  82. data/lib/gooddata/models/columns/reference.rb +57 -0
  83. data/lib/gooddata/models/dashboard_builder.rb +26 -0
  84. data/lib/gooddata/models/data_result.rb +10 -9
  85. data/lib/gooddata/models/domain.rb +131 -0
  86. data/lib/gooddata/models/empty_result.rb +5 -8
  87. data/lib/gooddata/models/facts/facts.rb +8 -0
  88. data/lib/gooddata/models/facts/time_fact.rb +20 -0
  89. data/lib/gooddata/models/folders/attribute_folder.rb +20 -0
  90. data/lib/gooddata/models/folders/fact_folder.rb +20 -0
  91. data/lib/gooddata/models/folders/folders.rb +8 -0
  92. data/lib/gooddata/models/invitation.rb +78 -0
  93. data/lib/gooddata/models/links.rb +6 -6
  94. data/lib/gooddata/models/md_object.rb +25 -0
  95. data/lib/gooddata/models/metadata.rb +160 -62
  96. data/lib/gooddata/models/metadata/attribute.rb +81 -0
  97. data/lib/gooddata/models/metadata/column.rb +61 -0
  98. data/lib/gooddata/models/{dashboard.rb → metadata/dashboard.rb} +12 -7
  99. data/lib/gooddata/models/{data_set.rb → metadata/data_set.rb} +5 -4
  100. data/lib/gooddata/models/metadata/date_dimension.rb +26 -0
  101. data/lib/gooddata/models/metadata/display_form.rb +61 -0
  102. data/lib/gooddata/models/metadata/fact.rb +36 -0
  103. data/lib/gooddata/models/metadata/folder.rb +24 -0
  104. data/lib/gooddata/models/metadata/metadata.rb +8 -0
  105. data/lib/gooddata/models/metadata/metric.rb +197 -0
  106. data/lib/gooddata/models/metadata/report.rb +115 -0
  107. data/lib/gooddata/models/{report_definition.rb → metadata/report_definition.rb} +16 -10
  108. data/lib/gooddata/models/metadata/schema.rb +227 -0
  109. data/lib/gooddata/models/model.rb +38 -1339
  110. data/lib/gooddata/models/models.rb +5 -2
  111. data/lib/gooddata/models/module_constants.rb +29 -0
  112. data/lib/gooddata/models/process.rb +142 -13
  113. data/lib/gooddata/models/profile.rb +4 -6
  114. data/lib/gooddata/models/project.rb +406 -136
  115. data/lib/gooddata/models/project_blueprint.rb +221 -0
  116. data/lib/gooddata/models/project_builder.rb +136 -0
  117. data/lib/gooddata/models/project_creator.rb +138 -0
  118. data/lib/gooddata/models/project_metadata.rb +11 -10
  119. data/lib/gooddata/models/project_role.rb +92 -0
  120. data/lib/gooddata/models/references/date_reference.rb +44 -0
  121. data/lib/gooddata/models/references/references.rb +8 -0
  122. data/lib/gooddata/models/references/time_reference.rb +13 -0
  123. data/lib/gooddata/models/report_data_result.rb +11 -11
  124. data/lib/gooddata/models/schedule.rb +284 -0
  125. data/lib/gooddata/models/schema_blueprint.rb +158 -0
  126. data/lib/gooddata/models/schema_builder.rb +81 -0
  127. data/lib/gooddata/models/tab_builder.rb +23 -0
  128. data/lib/gooddata/models/user.rb +165 -0
  129. data/lib/gooddata/version.rb +1 -1
  130. data/lib/templates/project/data/devs.csv +1 -1
  131. data/lib/templates/project/data/repos.csv +1 -1
  132. data/lib/templates/project/model/model.rb.erb +7 -11
  133. data/spec/bricks/bricks_spec.rb +2 -0
  134. data/spec/data/test-ci-data.csv +2 -0
  135. data/spec/data/test_project_model_spec.json +7 -27
  136. data/spec/helpers/blueprint_helper.rb +2 -0
  137. data/spec/helpers/cli_helper.rb +2 -0
  138. data/spec/helpers/connection_helper.rb +14 -1
  139. data/spec/helpers/project_helper.rb +16 -0
  140. data/spec/helpers/schema_helper.rb +16 -0
  141. data/spec/integration/command_projects_spec.rb +7 -7
  142. data/spec/integration/create_from_template_spec.rb +2 -2
  143. data/spec/integration/full_project_spec.rb +160 -7
  144. data/spec/integration/partial_md_export_import_spec.rb +3 -3
  145. data/spec/logging_in_logging_out_spec.rb +2 -1
  146. data/spec/spec_helper.rb +26 -4
  147. data/spec/unit/bricks/bricks_spec.rb +15 -7
  148. data/spec/unit/bricks/middleware/bench_middleware_spec.rb +2 -0
  149. data/spec/unit/bricks/middleware/bulk_salesforce_middleware_spec.rb +2 -0
  150. data/spec/unit/bricks/middleware/gooddata_middleware_spec.rb +2 -0
  151. data/spec/unit/bricks/middleware/logger_middleware_spec.rb +2 -0
  152. data/spec/unit/bricks/middleware/restforce_middleware_spec.rb +2 -0
  153. data/spec/unit/bricks/middleware/stdout_middleware_spec.rb +2 -0
  154. data/spec/unit/bricks/middleware/twitter_middleware_spec.rb +2 -0
  155. data/spec/unit/cli/cli_spec.rb +2 -0
  156. data/spec/unit/cli/commands/cmd_api_spec.rb +23 -15
  157. data/spec/unit/cli/commands/cmd_auth_spec.rb +8 -4
  158. data/spec/unit/cli/commands/cmd_domain_spec.rb +82 -0
  159. data/spec/unit/cli/commands/cmd_process_spec.rb +29 -13
  160. data/spec/unit/cli/commands/cmd_project_spec.rb +51 -30
  161. data/spec/unit/cli/commands/cmd_role_spec.rb +44 -0
  162. data/spec/unit/cli/commands/cmd_run_ruby_spec.rb +8 -4
  163. data/spec/unit/cli/commands/cmd_scaffold_spec.rb +48 -11
  164. data/spec/unit/cli/commands/cmd_user_spec.rb +29 -0
  165. data/spec/unit/commands/command_api_spec.rb +1 -1
  166. data/spec/unit/commands/command_auth_spec.rb +100 -18
  167. data/spec/unit/commands/command_dataset_spec.rb +4 -0
  168. data/spec/unit/commands/command_process_spec.rb +9 -4
  169. data/spec/unit/commands/command_projects_spec.rb +10 -6
  170. data/spec/unit/commands/command_scaffold_spec.rb +5 -1
  171. data/spec/unit/commands/command_user_spec.rb +22 -0
  172. data/spec/unit/core/connection_spec.rb +35 -6
  173. data/spec/unit/core/logging_spec.rb +65 -0
  174. data/spec/unit/core/nil_logger_spec.rb +9 -0
  175. data/spec/unit/core/project_spec.rb +51 -0
  176. data/spec/unit/core/rest_spec.rb +33 -0
  177. data/spec/unit/data/guesser_spec.rb +5 -0
  178. data/spec/unit/godzilla/goodzilla_spec.rb +2 -0
  179. data/spec/unit/models/account_settings_spec.rb +28 -0
  180. data/spec/unit/models/anchor_spec.rb +32 -0
  181. data/spec/unit/models/attribute_column_spec.rb +7 -0
  182. data/spec/unit/models/domain_spec.rb +45 -0
  183. data/spec/unit/models/invitation_spec.rb +13 -0
  184. data/spec/unit/models/md_object_spec.rb +47 -0
  185. data/spec/unit/models/metric.rb +92 -0
  186. data/spec/unit/{model → models}/model_spec.rb +9 -7
  187. data/spec/unit/models/project_blueprint_spec.rb +202 -0
  188. data/spec/unit/models/project_creator.rb +73 -0
  189. data/spec/unit/models/project_role_spec.rb +90 -0
  190. data/spec/unit/models/project_spec.rb +143 -0
  191. data/spec/unit/models/schedule_spec.rb +491 -0
  192. data/spec/unit/{model → models}/schema_builder_spec.rb +2 -0
  193. data/spec/unit/{model → models}/tools_spec.rb +13 -7
  194. data/spec/unit/models/user_spec.rb +16 -0
  195. data/test/test_upload.rb +2 -0
  196. metadata +189 -86
  197. data/lib/gooddata/commands/profile.rb +0 -11
  198. data/lib/gooddata/models/attribute.rb +0 -29
  199. data/lib/gooddata/models/display_form.rb +0 -9
  200. data/lib/gooddata/models/fact.rb +0 -19
  201. data/lib/gooddata/models/metric.rb +0 -99
  202. data/lib/gooddata/models/report.rb +0 -89
  203. data/spec/data/blueprint_valid.json +0 -37
  204. data/spec/unit/cli/commands/cmd_profile_spec.rb +0 -16
  205. data/spec/unit/commands/command_profile_spec.rb +0 -18
  206. data/spec/unit/core/core_spec.rb +0 -7
  207. data/spec/unit/model/blueprint_spec.rb +0 -132
  208. data/spec/unit/model/project_blueprint_spec.rb +0 -44
data/Gemfile CHANGED
@@ -2,4 +2,3 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in gooddata.gemspec
4
4
  gemspec
5
-
data/README.md CHANGED
@@ -17,8 +17,6 @@ The best documentation for the GoodData API can be found using these resources:
17
17
  [![Code Climate](https://codeclimate.com/github/gooddata/gooddata-ruby.png)](https://codeclimate.com/github/gooddata/gooddata-ruby)
18
18
  [![Build Status](https://travis-ci.org/gooddata/gooddata-ruby.png)](https://travis-ci.org/gooddata/gooddata-ruby)
19
19
  [![Coverage Status](https://coveralls.io/repos/gooddata/gooddata-ruby/badge.png)](https://coveralls.io/r/gooddata/gooddata-ruby)
20
- [![Build Status](https://travis-ci.org/gooddata/gooddata-ruby.png)](https://travis-ci.org/gooddata/gooddata-ruby)
21
-
22
20
 
23
21
  ## Install
24
22
 
@@ -44,6 +42,8 @@ If you are using gems just
44
42
  future version unintentionally.
45
43
  * Commit, do not mess with rakefile, version, or history.
46
44
  (if you want to have your own version, that is fine but bump version in a commit by itself we can ignore when we pull)
45
+ * run `rake test` and make sure all tests passes
46
+ * run `rake cop` and make sure you did not introduced any new coding rules issues
47
47
  * Send us a pull request. Bonus points for topic branches.
48
48
 
49
49
  ## Credits
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # encoding: UTF-8
2
+
1
3
  require 'rubygems'
2
4
 
3
5
  require 'bundler/setup'
@@ -6,6 +8,7 @@ require 'bundler/gem_tasks'
6
8
  require 'coveralls/rake/task'
7
9
 
8
10
  require 'rake/testtask'
11
+ require 'rake/notes/rake_task'
9
12
  require 'rspec/core/rake_task'
10
13
 
11
14
  require 'yard'
@@ -17,14 +20,58 @@ end
17
20
 
18
21
  Coveralls::RakeTask.new
19
22
 
20
- desc "Create rspec coverage"
21
- task :coverage do
22
- ENV['COVERAGE'] = 'true'
23
- Rake::Task["test:unit"].execute
23
+ desc 'Run continuous integration test'
24
+ task :ci do
25
+ Rake::Task['test:unit'].invoke
26
+ unless ENV['TRAVIS'] == 'true' && ENV['TRAVIS_SECURE_ENV_VARS'] == 'false'
27
+ Rake::Task['test:integration'].invoke
28
+ end
29
+ Rake::Task['test:cop'].invoke if RUBY_VERSION.start_with?('2.2') == false
30
+ Rake::Task['coveralls:push'].invoke
31
+ end
32
+
33
+ namespace :hook do
34
+ hook_path = File.join(File.dirname(__FILE__), '.git', 'hooks', 'pre-commit').to_s
35
+
36
+ desc 'Installs git pre-commit hook running rubocop'
37
+ task :install do |t|
38
+ if(File.exist?(hook_path))
39
+ puts 'Git pre-commit hook is already installed'
40
+ else
41
+ File.open(hook_path, 'w') do |file|
42
+ file.write("#! /usr/bin/env bash\n")
43
+ file.write("\n")
44
+ file.write("rake cop\n")
45
+ end
46
+ system "chmod 755 #{hook_path}"
47
+ puts 'Git commit hook was installed'
48
+ end
49
+ end
50
+
51
+ desc 'Uninstalls git pre-commit hook'
52
+ task :uninstall do |t|
53
+ res = File.exist?(hook_path)
54
+ if res
55
+ puts 'Uninstalling git pre-commit hook'
56
+ system "rm #{hook_path}"
57
+ puts 'Git pre-commit hook was uninstalled'
58
+ else
59
+ puts 'Git pre-commit hook is not installed'
60
+ end
61
+ end
62
+
63
+ desc 'Checks if is git pre-commit hook installed'
64
+ task :check do
65
+ res = File.exist?(hook_path)
66
+ if res
67
+ puts 'Git pre-commit IS installed'
68
+ else
69
+ puts 'Git pre-commit IS NOT installed'
70
+ end
71
+ end
72
+
24
73
  end
25
74
 
26
- desc 'Run tests with coveralls'
27
- task :coveralls => ['coverage', 'coveralls:push']
28
75
 
29
76
  RSpec::Core::RakeTask.new(:test)
30
77
 
@@ -44,7 +91,12 @@ namespace :test do
44
91
  t.pattern = 'test/**/test_*.rb'
45
92
  end
46
93
 
47
- task :all => [:unit, :integration]
94
+ desc "Run coding style tests"
95
+ RSpec::Core::RakeTask.new(:cop) do |t|
96
+ Rake::Task['cop'].invoke
97
+ end
98
+
99
+ task :all => [:unit, :integration, :cop]
48
100
  end
49
101
 
50
102
  desc "Run all tests"
@@ -56,4 +108,4 @@ end
56
108
 
57
109
  YARD::Rake::YardocTask.new
58
110
 
59
- task :default => [:usage]
111
+ task :default => [:usage]
@@ -37,7 +37,7 @@ def method_listing(include_specials = true)
37
37
  return @meths if @meths
38
38
  @meths = object.meths(:inherited => false, :included => !options.embed_mixins.empty?)
39
39
  if options.embed_mixins.size > 0
40
- @meths = @meths.reject {|m| options.embed_mixins_match?(m.namespace) == false }
40
+ @meths = @meths.reject {|m| !options.embed_mixins_match?(m.namespace) }
41
41
  end
42
42
  @meths = sort_listing(prune_method_listing(@meths))
43
43
  @meths
@@ -1,3 +1,5 @@
1
+ # encoding: UTF-8
2
+
1
3
  # This file shows how the GoodData Ruby API could be used from
2
4
  # a client code
3
5
  #
data/gooddata CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  require_relative "lib/gooddata/cli/cli"
4
4
 
5
+ require_relative 'lib/gooddata/models/domain'
6
+
5
7
  res = GoodData::CLI.main(ARGV)
6
8
 
7
9
  exit(res)
@@ -10,7 +10,9 @@ Gem::Specification.new do |s|
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = [
12
12
  "Pavel Kolesnikov",
13
- "Thomas Watson Steen"
13
+ "Thomas Watson Steen",
14
+ "Tomas Svarovsky",
15
+ "Tomas Korcak"
14
16
  ]
15
17
 
16
18
  s.summary = %q{A convenient Ruby wrapper around the GoodData RESTful API}
@@ -27,24 +29,26 @@ Gem::Specification.new do |s|
27
29
  s.require_paths = ["lib"]
28
30
  s.rubygems_version = "1.3.7"
29
31
 
30
- s.add_development_dependency "rake", "~> 10.2.2"
31
- s.add_development_dependency "redcarpet", "~> 3.1.1"
32
+ s.add_development_dependency "rake", "~> 10.3.1"
33
+ s.add_development_dependency "rake-notes", "~> 0.2.0"
34
+ s.add_development_dependency "redcarpet", "~> 3.1.1" if RUBY_PLATFORM != 'java'
32
35
  s.add_development_dependency "rspec", "~> 2.14.1"
33
- s.add_development_dependency "rubocop", "~> 0.20.0"
36
+ s.add_development_dependency "rubocop", "~> 0.20.1"
34
37
  s.add_development_dependency "simplecov", "~> 0.8.2"
35
38
  s.add_development_dependency "yard", "~> 0.8.7.3"
36
39
  s.add_development_dependency "yard-rspec", "~> 0.1"
37
- s.add_development_dependency "ZenTest", "~> 4.9.5"
40
+ s.add_development_dependency "ZenTest", "~> 4.10.0"
38
41
  s.add_development_dependency "coveralls", "~> 0.7.0"
39
42
 
40
- s.add_dependency "activesupport", "~> 4.0.3"
43
+ s.add_dependency "activesupport", "~> 4.1.0"
41
44
  s.add_dependency "bundler", ">= 1.6.1"
45
+ s.add_dependency 'docile', '~> 1.1.3'
42
46
  s.add_dependency "erubis", "~> 2.7.0"
43
- s.add_dependency "gli", "~> 2.9.0"
47
+ s.add_dependency "gli", "~> 2.10.0"
44
48
  s.add_dependency "highline", "~> 1.6.21"
45
49
  s.add_dependency "i18n", "~> 0.6.9"
46
50
  s.add_dependency "json_pure", "~> 1.8.1"
47
- s.add_dependency "multi_json", "~> 1.9.0"
51
+ s.add_dependency "multi_json", "~> 1.10.0"
48
52
  s.add_dependency "parseconfig", "~> 1.0.4"
49
53
  s.add_dependency "pry", "~> 0.9.12.6"
50
54
  s.add_dependency "restforce", "~> 1.4.3"
@@ -4,8 +4,6 @@
4
4
  module GoodData
5
5
  end
6
6
 
7
- require 'active_support/all'
8
-
9
7
  # Modules
10
8
  require_relative 'gooddata/bricks/bricks'
11
9
  require_relative 'gooddata/cli/cli'
@@ -1,63 +1,68 @@
1
1
  # encoding: UTF-8
2
2
 
3
- module GoodData::Bricks
4
- class BaseDownloader
5
- def initialize(params)
6
- @params = params
7
- end
3
+ require 'pathname'
8
4
 
9
- def pre_process(meta)
10
- meta
11
- end
5
+ module GoodData
6
+ module Bricks
7
+ class BaseDownloader
8
+ def initialize(params)
9
+ @params = params
10
+ end
12
11
 
13
- def download
14
- puts 'would download data'
15
- []
16
- end
12
+ def pre_process(meta)
13
+ meta
14
+ end
17
15
 
18
- def backup(meta)
19
- puts 'would send a backup list of files to backup'
20
- files = meta.reduce([]) do |memo, item|
21
- memo << item[:filename]
16
+ def download
17
+ puts 'would download data'
18
+ []
22
19
  end
23
20
 
24
- bucket_name = @params[:s3_backup_bucket_name]
21
+ def backup(meta)
22
+ puts 'would send a backup list of files to backup'
23
+ files = meta.reduce([]) do |a, e|
24
+ a << e[:filename]
25
+ end
26
+
27
+ bucket_name = @params[:s3_backup_bucket_name]
25
28
 
26
- s3 = AWS::S3.new(
27
- :access_key_id => @params[:aws_access_key_id],
28
- :secret_access_key => @params[:aws_secret_access_key])
29
+ s3 = AWS::S3.new(
30
+ :access_key_id => @params[:aws_access_key_id],
31
+ :secret_access_key => @params[:aws_secret_access_key])
29
32
 
30
- bucket = s3.buckets[bucket_name]
31
- bucket = s3.buckets.create(bucket_name) unless bucket.exists?
33
+ bucket = s3.buckets[bucket_name]
34
+ bucket = s3.buckets.create(bucket_name) unless bucket.exists?
32
35
 
33
- files.each do |file|
34
- obj = bucket.objects[file]
35
- obj.write(Pathname.new(file))
36
+ files.each do |file|
37
+ obj = bucket.objects[file]
38
+ obj.write(Pathname.new(file))
39
+ end
40
+ meta
36
41
  end
37
- meta
38
- end
39
42
 
40
- def post_process(meta)
41
- puts 'Maybe some postprocessing'
42
- meta
43
- end
43
+ def post_process(meta)
44
+ puts 'Maybe some postprocessing'
45
+ meta
46
+ end
47
+
48
+ # Run downloader
49
+ def run
50
+ downloaded_data = download
51
+ downloaded_data = pre_process(downloaded_data)
52
+ backup(downloaded_data)
53
+ downloaded_data = post_process(downloaded_data)
54
+
55
+ accumulated_state = downloaded_data.reduce([]) do |memo, item|
56
+ item.key?(:state) ? memo.concat(item[:state]) : memo
57
+ end
58
+ accumulated_state.each do |item|
59
+ key = item[:key]
60
+ val = item[:value]
44
61
 
45
- # Run downloader
46
- def run
47
- downloaded_data = download
48
- downloaded_data = pre_process(downloaded_data)
49
- backup(downloaded_data)
50
- downloaded_data = post_process(downloaded_data)
51
-
52
- downloaded_data.reduce([]) do |memo, item|
53
- item.has_key?(:state) ? memo.concat(item[:state]) : memo
54
- end.each do |item|
55
- key = item[:key]
56
- val = item[:value]
57
-
58
- puts "Saving metadata #{key} => #{val}"
59
- GoodData::ProjectMetadata[key] = val
62
+ puts "Saving metadata #{key} => #{val}"
63
+ GoodData::ProjectMetadata[key] = val
64
+ end
60
65
  end
61
66
  end
62
67
  end
63
- end
68
+ end
@@ -3,43 +3,32 @@
3
3
  require_relative 'base_downloader'
4
4
  require_relative 'utils'
5
5
 
6
- Dir[File.dirname(__FILE__) + '/commands/**/*_cmd.rb'].each do |file|
7
- require file
8
- end
9
-
10
6
  require_relative 'middleware/middleware'
11
7
 
12
- module GoodData::Bricks
13
- class Pipeline
14
- def self.prepare(pipeline)
15
- pipeline.reverse.reduce(nil) do |memo, app|
16
- if memo.nil?
17
- app.respond_to?(:new) ? (app.new) : app
18
- else
19
- app.respond_to?(:new) ? (app.new(:app => memo)) : (app.app = memo; app)
20
- end
8
+ module GoodData
9
+ module Bricks
10
+ # Brick base class
11
+ class Brick
12
+ def log(message)
13
+ logger = @params[:gdc_logger]
14
+ logger.info(message) unless logger.nil?
21
15
  end
22
- end
23
- end
24
-
25
- # Brick base class
26
- class Brick
27
- def log(message)
28
- logger = @params[:gdc_logger]
29
- logger.info(message) unless logger.nil?
30
- end
31
16
 
32
- def name
33
- self.class
34
- end
17
+ # Name of the brick
18
+ def name
19
+ self.class
20
+ end
35
21
 
36
- def version
37
- fail 'Method version should be reimplemented'
38
- end
22
+ # Version of brick, this should be implemented in subclasses
23
+ def version
24
+ fail NotImplementedError, 'Method version should be reimplemented'
25
+ end
39
26
 
40
- def call(params={})
41
- @params = params
42
- ''
27
+ # Bricks implementation which can be 'called'
28
+ def call(params = {})
29
+ @params = params
30
+ ''
31
+ end
43
32
  end
44
33
  end
45
34
  end
@@ -7,4 +7,4 @@ Dir.glob(base + '*.rb').each do |file|
7
7
  end
8
8
 
9
9
  # Require all middleware
10
- require_relative 'middleware/middleware'
10
+ require_relative 'middleware/middleware'
@@ -1,13 +1,15 @@
1
1
  # encoding: UTF-8
2
2
 
3
- module GoodData::Bricks
4
- class Middleware
5
- attr_accessor :app
3
+ module GoodData
4
+ module Bricks
5
+ class Middleware
6
+ attr_accessor :app
6
7
 
7
- include GoodData::Bricks::Utils
8
+ include Bricks::Utils
8
9
 
9
- def initialize(options={})
10
- @app = options[:app]
10
+ def initialize(options = {})
11
+ @app = options[:app]
12
+ end
11
13
  end
12
14
  end
13
- end
15
+ end
@@ -3,15 +3,17 @@
3
3
  require 'benchmark'
4
4
  require_relative 'base_middleware'
5
5
 
6
- module GoodData::Bricks
7
- class BenchMiddleware < GoodData::Bricks::Middleware
8
- def call(params)
9
- puts 'Starting timer'
10
- result = nil
11
- report = Benchmark.measure { result = @app.call(params) }
12
- puts 'Stopping timer'
13
- pp report
14
- result
6
+ module GoodData
7
+ module Bricks
8
+ class BenchMiddleware < Bricks::Middleware
9
+ def call(params)
10
+ puts 'Starting timer'
11
+ result = nil
12
+ report = Benchmark.measure { result = @app.call(params) }
13
+ puts 'Stopping timer'
14
+ pp report
15
+ result
16
+ end
15
17
  end
16
18
  end
17
- end
19
+ end
@@ -4,35 +4,35 @@ require 'salesforce_bulk'
4
4
 
5
5
  require_relative 'base_middleware'
6
6
 
7
- module GoodData::Bricks
8
- class BulkSalesforceMiddleware < GoodData::Bricks::Middleware
9
- def call(params)
10
- username = params[:salesforce_username]
11
- password = params[:salesforce_password]
12
- token = params[:salesforce_token]
13
- client_id = params[:salesforce_client_id]
14
- client_secret = params[:salesforce_client_secret]
15
- host = params[:salesforce_host]
7
+ module GoodData
8
+ module Bricks
9
+ class BulkSalesforceMiddleware < Bricks::Middleware
10
+ def call(params)
11
+ username = params[:salesforce_username]
12
+ password = params[:salesforce_password]
13
+ token = params[:salesforce_token]
14
+ client_id = params[:salesforce_client_id]
15
+ client_secret = params[:salesforce_client_secret]
16
+ host = params[:salesforce_host]
16
17
 
17
- credentials = {}
18
+ credentials = if username && password && token
19
+ {
20
+ :username => username,
21
+ :password => password,
22
+ :security_token => token
23
+ }
24
+ end
18
25
 
19
- credentials = if (username && password && token)
20
- {
21
- :username => username,
22
- :password => password,
23
- :security_token => token
24
- }
25
- end
26
-
27
- client = if credentials
28
- credentials.merge!({
29
- :client_id => client_id,
30
- :client_secret => client_secret,
31
- })
32
- credentials[:host] = host unless host.nil?
33
- SalesforceBulk::Api.new(credentials[:username], credentials[:password] + credentials[:security_token])
34
- end
35
- @app.call(params.merge(:salesforce_bulk_client => client))
26
+ client = if credentials
27
+ credentials.merge!(
28
+ :client_id => client_id,
29
+ :client_secret => client_secret
30
+ )
31
+ credentials[:host] = host unless host.nil?
32
+ SalesforceBulk::Api.new(credentials[:username], credentials[:password] + credentials[:security_token])
33
+ end
34
+ @app.call(params.merge(:salesforce_bulk_client => client))
35
+ end
36
36
  end
37
37
  end
38
- end
38
+ end