metacrunch 2.2.3 → 3.0.0

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 (57) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -1
  3. data/Gemfile +11 -13
  4. data/License.txt +1 -1
  5. data/Readme.md +139 -2
  6. data/bin/console +9 -6
  7. data/exe/metacrunch +1 -2
  8. data/lib/metacrunch/cli.rb +62 -14
  9. data/lib/metacrunch/db/reader.rb +27 -0
  10. data/lib/metacrunch/db/writer.rb +23 -0
  11. data/lib/metacrunch/db.rb +8 -0
  12. data/lib/metacrunch/fs/entry.rb +17 -0
  13. data/lib/metacrunch/{file_reader.rb → fs/reader.rb} +9 -10
  14. data/lib/metacrunch/fs.rb +6 -0
  15. data/lib/metacrunch/job/buffer.rb +26 -0
  16. data/lib/metacrunch/job/dsl/option_support.rb +102 -0
  17. data/lib/metacrunch/job/dsl.rb +42 -0
  18. data/lib/metacrunch/job.rb +149 -0
  19. data/lib/metacrunch/test_utils/dummy_callable.rb +14 -0
  20. data/lib/metacrunch/test_utils/dummy_destination.rb +21 -0
  21. data/lib/metacrunch/test_utils/dummy_source.rb +22 -0
  22. data/lib/metacrunch/test_utils.rb +7 -0
  23. data/lib/metacrunch/version.rb +1 -1
  24. data/lib/metacrunch.rb +14 -27
  25. data/metacrunch.gemspec +5 -10
  26. metadata +24 -144
  27. data/lib/metacrunch/cli/base.rb +0 -29
  28. data/lib/metacrunch/cli/command_definition.rb +0 -41
  29. data/lib/metacrunch/cli/command_registry.rb +0 -17
  30. data/lib/metacrunch/cli/main.rb +0 -16
  31. data/lib/metacrunch/command.rb +0 -27
  32. data/lib/metacrunch/file/reader/file_system_fetcher.rb +0 -21
  33. data/lib/metacrunch/file/reader/plain_file_reader.rb +0 -33
  34. data/lib/metacrunch/file/reader/scp_fetcher.rb +0 -56
  35. data/lib/metacrunch/file/reader/tar_file_reader.rb +0 -37
  36. data/lib/metacrunch/file/reader/zip_file_reader.rb +0 -30
  37. data/lib/metacrunch/file/reader.rb +0 -72
  38. data/lib/metacrunch/file/writer/plain_file_writer.rb +0 -19
  39. data/lib/metacrunch/file/writer/tar_file_writer.rb +0 -26
  40. data/lib/metacrunch/file/writer/zip_file_writer.rb +0 -29
  41. data/lib/metacrunch/file/writer.rb +0 -26
  42. data/lib/metacrunch/file.rb +0 -24
  43. data/lib/metacrunch/file_reader_entry.rb +0 -21
  44. data/lib/metacrunch/file_writer.rb +0 -40
  45. data/lib/metacrunch/hash.rb +0 -51
  46. data/lib/metacrunch/parallel.rb +0 -69
  47. data/lib/metacrunch/processor.rb +0 -10
  48. data/lib/metacrunch/snr/field.rb +0 -31
  49. data/lib/metacrunch/snr/section.rb +0 -74
  50. data/lib/metacrunch/snr.rb +0 -117
  51. data/lib/metacrunch/tar_writer.rb +0 -26
  52. data/lib/metacrunch/transformator/transformation/step.rb +0 -45
  53. data/lib/metacrunch/transformator/transformation.rb +0 -48
  54. data/lib/metacrunch/transformator.rb +0 -5
  55. data/lib/metacrunch/transformer/helper.rb +0 -29
  56. data/lib/metacrunch/transformer/step.rb +0 -37
  57. data/lib/metacrunch/transformer.rb +0 -38
@@ -0,0 +1,149 @@
1
+ module Metacrunch
2
+ class Job
3
+ require_relative "job/dsl"
4
+ require_relative "job/buffer"
5
+
6
+ attr_reader :builder, :args
7
+
8
+ class << self
9
+ def define(file_content = nil, filename: nil, args: nil, &block)
10
+ self.new(file_content, filename: filename, args: args, &block)
11
+ end
12
+ end
13
+
14
+ def initialize(file_content = nil, filename: nil, args: nil, &block)
15
+ @builder = Dsl.new(self)
16
+ @args = args
17
+
18
+ if file_content
19
+ @builder.instance_eval(file_content, filename || "")
20
+ elsif block_given?
21
+ @builder.instance_eval(&block)
22
+ end
23
+ end
24
+
25
+ def sources
26
+ @sources ||= []
27
+ end
28
+
29
+ def add_source(source)
30
+ ensure_source!(source)
31
+ sources << source
32
+ end
33
+
34
+ def destinations
35
+ @destinations ||= []
36
+ end
37
+
38
+ def add_destination(destination)
39
+ ensure_destination!(destination)
40
+ destinations << destination
41
+ end
42
+
43
+ def pre_processes
44
+ @pre_processes ||= []
45
+ end
46
+
47
+ def add_pre_process(callable = nil, &block)
48
+ add_callable_or_block(pre_processes, callable, &block)
49
+ end
50
+
51
+ def post_processes
52
+ @post_processes ||= []
53
+ end
54
+
55
+ def add_post_process(callable = nil, &block)
56
+ add_callable_or_block(post_processes, callable, &block)
57
+ end
58
+
59
+ def transformations
60
+ @transformations ||= []
61
+ end
62
+
63
+ def add_transformation(callable = nil, &block)
64
+ add_callable_or_block(transformations, callable, &block)
65
+ end
66
+
67
+ def add_transformation_buffer(size)
68
+ transformations << Metacrunch::Job::Buffer.new(size)
69
+ end
70
+
71
+ def run
72
+ run_pre_processes
73
+ run_transformations
74
+ run_post_processes
75
+ self
76
+ end
77
+
78
+ private
79
+
80
+ def add_callable_or_block(array, callable, &block)
81
+ if block_given?
82
+ array << block
83
+ elsif callable
84
+ ensure_callable!(callable)
85
+ array << callable
86
+ end
87
+ end
88
+
89
+ def ensure_callable!(object)
90
+ raise ArgumentError, "#{object} does't respond to #call." unless object.respond_to?(:call)
91
+ end
92
+
93
+ def ensure_source!(object)
94
+ raise ArgumentError, "#{object} does't respond to #each." unless object.respond_to?(:each)
95
+ end
96
+
97
+ def ensure_destination!(object)
98
+ raise ArgumentError, "#{object} does't respond to #write." unless object.respond_to?(:write)
99
+ raise ArgumentError, "#{object} does't respond to #close." unless object.respond_to?(:close)
100
+ end
101
+
102
+ def run_pre_processes
103
+ pre_processes.each(&:call)
104
+ end
105
+
106
+ def run_post_processes
107
+ post_processes.each(&:call)
108
+ end
109
+
110
+ def run_transformations
111
+ sources.each do |source|
112
+ # sources are expected to respond to `each`
113
+ source.each do |row|
114
+ _run_transformations(row)
115
+ end
116
+
117
+ # Run all transformations a last time to flush possible buffers
118
+ _run_transformations(nil, flush_buffers: true)
119
+ end
120
+
121
+ # destination implementations are expected to respond to `close`
122
+ destinations.each(&:close)
123
+ end
124
+
125
+ def _run_transformations(row, flush_buffers: false)
126
+ transformations.each do |transformation|
127
+ row = if transformation.is_a?(Buffer)
128
+ if flush_buffers
129
+ transformation.flush
130
+ else
131
+ transformation.buffer(row)
132
+ end
133
+ else
134
+ transformation.call(row) if row
135
+ end
136
+
137
+ break unless row
138
+ end
139
+
140
+ if row
141
+ destinations.each do |destination|
142
+ # destinations are expected to respond to `write(row)`
143
+ destination.write(row)
144
+ end
145
+ end
146
+ end
147
+
148
+ end
149
+ end
@@ -0,0 +1,14 @@
1
+ require_relative "../test_utils"
2
+
3
+ module Metacrunch
4
+ class TestUtils::DummyCallable
5
+
6
+ def call(*args)
7
+ @call_called = true
8
+ end
9
+
10
+ end
11
+
12
+ class TestUtils::DummyNonCallable
13
+ end
14
+ end
@@ -0,0 +1,21 @@
1
+ require_relative "../test_utils"
2
+
3
+ module Metacrunch
4
+ class TestUtils::DummyDestination
5
+
6
+ attr_reader :data
7
+
8
+ def write(row)
9
+ @write_called = true
10
+ (@data ||= []) << row
11
+ end
12
+
13
+ def close
14
+ @close_called = true
15
+ end
16
+
17
+ end
18
+
19
+ class TestUtils::InvalidDummyDestination
20
+ end
21
+ end
@@ -0,0 +1,22 @@
1
+ require_relative "../test_utils"
2
+
3
+ module Metacrunch
4
+ class TestUtils::DummySource
5
+
6
+ def initialize(count_until: 10)
7
+ @count_until = count_until
8
+ end
9
+
10
+ def each
11
+ @each_called = true
12
+
13
+ (1..@count_until).each do |number|
14
+ yield({number: number})
15
+ end
16
+ end
17
+
18
+ end
19
+
20
+ class TestUtils::InvalidDummySource
21
+ end
22
+ end
@@ -0,0 +1,7 @@
1
+ module Metacrunch
2
+ module TestUtils
3
+ require_relative "test_utils/dummy_source"
4
+ require_relative "test_utils/dummy_destination"
5
+ require_relative "test_utils/dummy_callable"
6
+ end
7
+ end
@@ -1,3 +1,3 @@
1
1
  module Metacrunch
2
- VERSION = "2.2.3"
2
+ VERSION = "3.0.0"
3
3
  end
data/lib/metacrunch.rb CHANGED
@@ -1,32 +1,19 @@
1
- require "active_support"
2
- require "active_support/core_ext"
3
- require "active_support/builder"
4
- require "parallel"
5
1
  require "rubygems"
6
- require "rubygems/package"
7
- require "thor"
8
- require "ox"
2
+ require "bundler"
9
3
 
10
- module Metacrunch
11
- require_relative "./metacrunch/version"
12
- require_relative "./metacrunch/cli"
13
- require_relative "./metacrunch/command"
14
- require_relative "./metacrunch/file"
15
- require_relative "./metacrunch/file_reader"
16
- require_relative "./metacrunch/file_reader_entry"
17
- require_relative "./metacrunch/file_writer"
18
- require_relative "./metacrunch/hash"
19
- require_relative "./metacrunch/parallel"
20
- require_relative "./metacrunch/processor"
21
- require_relative "./metacrunch/snr"
22
- require_relative "./metacrunch/tar_writer"
23
- require_relative "./metacrunch/transformator"
24
- require_relative "./metacrunch/transformer"
4
+ require "active_support"
5
+ require "active_support/core_ext"
6
+ require "commander"
7
+ require "sequel"
25
8
 
26
- def self.load_plugins
27
- Gem.find_latest_files("metacrunch_plugin.rb").each do |path|
28
- load(path)
29
- end
30
- end
9
+ begin
10
+ require "pry"
11
+ rescue LoadError ; end
31
12
 
13
+ module Metacrunch
14
+ require_relative "metacrunch/version"
15
+ require_relative "metacrunch/cli"
16
+ require_relative "metacrunch/job"
17
+ require_relative "metacrunch/fs"
18
+ require_relative "metacrunch/db"
32
19
  end
data/metacrunch.gemspec CHANGED
@@ -7,7 +7,8 @@ Gem::Specification.new do |spec|
7
7
  spec.name = "metacrunch"
8
8
  spec.version = Metacrunch::VERSION
9
9
  spec.authors = ["René Sprotte", "Michael Sievers", "Marcel Otto"]
10
- spec.summary = %q{Data processing toolkit for Ruby}
10
+ spec.email = "r.sprotte@ub.uni-paderborn.de"
11
+ spec.summary = %q{Data processing and ETL toolkit for Ruby}
11
12
  spec.homepage = "http://github.com/ubpb/metacrunch"
12
13
  spec.license = "MIT"
13
14
 
@@ -16,13 +17,7 @@ Gem::Specification.new do |spec|
16
17
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
17
18
  spec.require_paths = ["lib"]
18
19
 
19
- spec.add_dependency "activesupport", "~> 4.2", ">= 4.2.0"
20
- spec.add_dependency "builder", "~> 3.2", ">= 3.2.2"
21
- spec.add_dependency "highline", "~> 1.7"
22
- spec.add_dependency "net-scp", "~> 1.2"
23
- spec.add_dependency "net-ssh", "~> 2.9"
24
- spec.add_dependency "parallel", "~> 1.6", ">= 1.6.0"
25
- spec.add_dependency "rubyzip", ">= 1.0.0"
26
- spec.add_dependency "thor", "~> 0.19"
27
- spec.add_dependency "ox", "~> 2.1"
20
+ spec.add_dependency "activesupport", "~> 4.2"
21
+ spec.add_dependency "commander", "~> 4.4"
22
+ spec.add_dependency "sequel", "~> 4.33"
28
23
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metacrunch
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.3
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - René Sprotte
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2016-01-11 00:00:00.000000000 Z
13
+ date: 2016-05-17 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -19,9 +19,6 @@ dependencies:
19
19
  - - "~>"
20
20
  - !ruby/object:Gem::Version
21
21
  version: '4.2'
22
- - - ">="
23
- - !ruby/object:Gem::Version
24
- version: 4.2.0
25
22
  type: :runtime
26
23
  prerelease: false
27
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,135 +26,36 @@ dependencies:
29
26
  - - "~>"
30
27
  - !ruby/object:Gem::Version
31
28
  version: '4.2'
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: 4.2.0
35
- - !ruby/object:Gem::Dependency
36
- name: builder
37
- requirement: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - "~>"
40
- - !ruby/object:Gem::Version
41
- version: '3.2'
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- version: 3.2.2
45
- type: :runtime
46
- prerelease: false
47
- version_requirements: !ruby/object:Gem::Requirement
48
- requirements:
49
- - - "~>"
50
- - !ruby/object:Gem::Version
51
- version: '3.2'
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: 3.2.2
55
- - !ruby/object:Gem::Dependency
56
- name: highline
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '1.7'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '1.7'
69
- - !ruby/object:Gem::Dependency
70
- name: net-scp
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '1.2'
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '1.2'
83
- - !ruby/object:Gem::Dependency
84
- name: net-ssh
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '2.9'
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '2.9'
97
- - !ruby/object:Gem::Dependency
98
- name: parallel
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '1.6'
104
- - - ">="
105
- - !ruby/object:Gem::Version
106
- version: 1.6.0
107
- type: :runtime
108
- prerelease: false
109
- version_requirements: !ruby/object:Gem::Requirement
110
- requirements:
111
- - - "~>"
112
- - !ruby/object:Gem::Version
113
- version: '1.6'
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- version: 1.6.0
117
- - !ruby/object:Gem::Dependency
118
- name: rubyzip
119
- requirement: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - ">="
122
- - !ruby/object:Gem::Version
123
- version: 1.0.0
124
- type: :runtime
125
- prerelease: false
126
- version_requirements: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - ">="
129
- - !ruby/object:Gem::Version
130
- version: 1.0.0
131
29
  - !ruby/object:Gem::Dependency
132
- name: thor
30
+ name: commander
133
31
  requirement: !ruby/object:Gem::Requirement
134
32
  requirements:
135
33
  - - "~>"
136
34
  - !ruby/object:Gem::Version
137
- version: '0.19'
35
+ version: '4.4'
138
36
  type: :runtime
139
37
  prerelease: false
140
38
  version_requirements: !ruby/object:Gem::Requirement
141
39
  requirements:
142
40
  - - "~>"
143
41
  - !ruby/object:Gem::Version
144
- version: '0.19'
42
+ version: '4.4'
145
43
  - !ruby/object:Gem::Dependency
146
- name: ox
44
+ name: sequel
147
45
  requirement: !ruby/object:Gem::Requirement
148
46
  requirements:
149
47
  - - "~>"
150
48
  - !ruby/object:Gem::Version
151
- version: '2.1'
49
+ version: '4.33'
152
50
  type: :runtime
153
51
  prerelease: false
154
52
  version_requirements: !ruby/object:Gem::Requirement
155
53
  requirements:
156
54
  - - "~>"
157
55
  - !ruby/object:Gem::Version
158
- version: '2.1'
56
+ version: '4.33'
159
57
  description:
160
- email:
58
+ email: r.sprotte@ub.uni-paderborn.de
161
59
  executables:
162
60
  - metacrunch
163
61
  extensions: []
@@ -174,38 +72,20 @@ files:
174
72
  - exe/metacrunch
175
73
  - lib/metacrunch.rb
176
74
  - lib/metacrunch/cli.rb
177
- - lib/metacrunch/cli/base.rb
178
- - lib/metacrunch/cli/command_definition.rb
179
- - lib/metacrunch/cli/command_registry.rb
180
- - lib/metacrunch/cli/main.rb
181
- - lib/metacrunch/command.rb
182
- - lib/metacrunch/file.rb
183
- - lib/metacrunch/file/reader.rb
184
- - lib/metacrunch/file/reader/file_system_fetcher.rb
185
- - lib/metacrunch/file/reader/plain_file_reader.rb
186
- - lib/metacrunch/file/reader/scp_fetcher.rb
187
- - lib/metacrunch/file/reader/tar_file_reader.rb
188
- - lib/metacrunch/file/reader/zip_file_reader.rb
189
- - lib/metacrunch/file/writer.rb
190
- - lib/metacrunch/file/writer/plain_file_writer.rb
191
- - lib/metacrunch/file/writer/tar_file_writer.rb
192
- - lib/metacrunch/file/writer/zip_file_writer.rb
193
- - lib/metacrunch/file_reader.rb
194
- - lib/metacrunch/file_reader_entry.rb
195
- - lib/metacrunch/file_writer.rb
196
- - lib/metacrunch/hash.rb
197
- - lib/metacrunch/parallel.rb
198
- - lib/metacrunch/processor.rb
199
- - lib/metacrunch/snr.rb
200
- - lib/metacrunch/snr/field.rb
201
- - lib/metacrunch/snr/section.rb
202
- - lib/metacrunch/tar_writer.rb
203
- - lib/metacrunch/transformator.rb
204
- - lib/metacrunch/transformator/transformation.rb
205
- - lib/metacrunch/transformator/transformation/step.rb
206
- - lib/metacrunch/transformer.rb
207
- - lib/metacrunch/transformer/helper.rb
208
- - lib/metacrunch/transformer/step.rb
75
+ - lib/metacrunch/db.rb
76
+ - lib/metacrunch/db/reader.rb
77
+ - lib/metacrunch/db/writer.rb
78
+ - lib/metacrunch/fs.rb
79
+ - lib/metacrunch/fs/entry.rb
80
+ - lib/metacrunch/fs/reader.rb
81
+ - lib/metacrunch/job.rb
82
+ - lib/metacrunch/job/buffer.rb
83
+ - lib/metacrunch/job/dsl.rb
84
+ - lib/metacrunch/job/dsl/option_support.rb
85
+ - lib/metacrunch/test_utils.rb
86
+ - lib/metacrunch/test_utils/dummy_callable.rb
87
+ - lib/metacrunch/test_utils/dummy_destination.rb
88
+ - lib/metacrunch/test_utils/dummy_source.rb
209
89
  - lib/metacrunch/version.rb
210
90
  - metacrunch.gemspec
211
91
  homepage: http://github.com/ubpb/metacrunch
@@ -231,5 +111,5 @@ rubyforge_project:
231
111
  rubygems_version: 2.5.1
232
112
  signing_key:
233
113
  specification_version: 4
234
- summary: Data processing toolkit for Ruby
114
+ summary: Data processing and ETL toolkit for Ruby
235
115
  test_files: []
@@ -1,29 +0,0 @@
1
- module Metacrunch
2
- class Cli
3
- class Base < Thor
4
- no_commands do
5
- def self.register_thor_command(command_definition)
6
- desc(command_definition.usage, command_definition.desc)
7
-
8
- command_definition.options.each do |key, value|
9
- option(key, value)
10
- end
11
-
12
- define_method(command_definition.name) do |*params|
13
- run_command(command_definition.command_class, params)
14
- end
15
- end
16
-
17
- def run_command(command, params = [])
18
- klass = command.class == Class ? command : command.to_s.constantize
19
- raise ArgumentError, "command must be a Metacrunch::Command class" unless klass < Metacrunch::Command
20
-
21
- command = klass.new(shell, options, params)
22
- command.pre_perform
23
- command.perform
24
- command.post_perform
25
- end
26
- end
27
- end
28
- end
29
- end
@@ -1,41 +0,0 @@
1
- module Metacrunch
2
- class Cli
3
- class CommandDefinition
4
- def initialize(command_class, description)
5
- @klass = command_class
6
- @name = nil
7
- @description = description
8
- @usage = nil
9
- @options = {}
10
- end
11
-
12
- def command_class(value = nil)
13
- @klass if value
14
- @klass
15
- end
16
-
17
- def name(value = nil)
18
- @name = value if value.present?
19
- @name || @klass.to_s.demodulize.underscore.gsub!(/_command\Z/, "")
20
- end
21
-
22
- def usage(value = nil)
23
- @usage = value if value.present?
24
- @usage || name
25
- end
26
-
27
- def desc(value = nil)
28
- @description = value if value.present?
29
- @description
30
- end
31
-
32
- def option(name, options = {})
33
- @options[name] = options
34
- end
35
-
36
- def options
37
- @options
38
- end
39
- end
40
- end
41
- end
@@ -1,17 +0,0 @@
1
- module Metacrunch
2
- class Cli
3
- class CommandRegistry
4
- attr_reader :commands
5
-
6
- def initialize
7
- @commands = []
8
- end
9
-
10
- def register(klass, description = nil, &block)
11
- command = CommandDefinition.new(klass, description)
12
- yield(command) if block_given?
13
- @commands << command
14
- end
15
- end
16
- end
17
- end
@@ -1,16 +0,0 @@
1
- module Metacrunch
2
- class Cli
3
- class Main < Thor
4
- desc "console", "Start a console. It uses Pry if installed, IRB otherwise."
5
- def console
6
- begin
7
- require "pry"
8
- Pry.start
9
- rescue LoadError
10
- require "irb"
11
- IRB.start
12
- end
13
- end
14
- end
15
- end
16
- end
@@ -1,27 +0,0 @@
1
- module Metacrunch
2
- class Command
3
-
4
- attr_reader :shell
5
- attr_reader :options
6
- attr_reader :params
7
-
8
- def initialize(shell, options = {}, params = [])
9
- @shell = shell
10
- @options = options
11
- @params = params
12
- end
13
-
14
- def pre_perform
15
- # can be implemented in sub-class
16
- end
17
-
18
- def perform
19
- raise NotImplementedError, "You must implement .perform() in your command sub-class"
20
- end
21
-
22
- def post_perform
23
- # can be implemented in sub-class
24
- end
25
-
26
- end
27
- end
@@ -1,21 +0,0 @@
1
- require_relative "../reader"
2
-
3
- # This fetcher does not do anything besides returning the filename withouzt the
4
- # file:// protocol prefix. It only exists to keep the implementation consistent.
5
- class Metacrunch::File::Reader::FileSystemFetcher
6
- include Enumerable
7
-
8
- RECOGNIZED_PROTOCOL_REGEX = /\Afile:\/\//
9
-
10
- def self.accepts?(url)
11
- !!url[RECOGNIZED_PROTOCOL_REGEX]
12
- end
13
-
14
- def initialize(url, options = {})
15
- @url = url
16
- end
17
-
18
- def each
19
- yield @url.sub(RECOGNIZED_PROTOCOL_REGEX, "")
20
- end
21
- end