metacrunch 2.1.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3651a2620048f6cf78fd1d1670a1f211c5c39dac
4
+ data.tar.gz: acdfb9744c06a0d7f8725434b9fde56588135bad
5
+ SHA512:
6
+ metadata.gz: e2ce0cf3aef3e033c60402ca81d9b568c598b2039c75adb4658fa930d2b9b41c5f2c14ca90e9df058bccb32da08f7c9a3e5f7d87c09d92566426cb46854b3868
7
+ data.tar.gz: 046c114e1d674aff5d4ce17539da4fac30b58ed3960307fc24f00bbe4f67fbfece6c483830da099eca912423c74485bc8b0aba617d307cdc72fe07fd947d7828
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ .DS_Store
2
+ pkg
3
+ Gemfile.lock
4
+ .yardoc
5
+ doc
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --color
2
+ --format documentation
3
+ --require spec_helper
data/.travis.yml ADDED
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - "2.2.2"
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ gem "rake"
6
+ gem "pry-byebug", "~> 3.1.0"
7
+ gem "rspec", "~> 3.2.0"
data/License.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 René Sprotte, Michael Sievers, Marcel Otto
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,5 @@
1
+ require "rspec/core/rake_task"
2
+
3
+ RSpec::Core::RakeTask.new(:spec)
4
+
5
+ task :default => :spec
data/Readme.md ADDED
@@ -0,0 +1,6 @@
1
+ # metacrunch
2
+
3
+ [![Code Climate](https://codeclimate.com/github/ubpb/metacrunch/badges/gpa.svg)](https://codeclimate.com/github/ubpb/metacrunch)
4
+ [![Build Status](https://travis-ci.org/ubpb/metacrunch.svg)](https://travis-ci.org/ubpb/metacrunch)
5
+
6
+ Dokumentation folgt in Kürze...
data/bin/metacrunch ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require "metacrunch"
3
+ Metacrunch.load_plugins
4
+ Metacrunch::Cli.start(ARGV)
@@ -0,0 +1,4 @@
1
+ module Metacrunch
2
+ class Cli < Thor
3
+ end
4
+ end
@@ -0,0 +1,14 @@
1
+ module Metacrunch
2
+ class Command
3
+
4
+ attr_reader :shell
5
+ attr_reader :options
6
+
7
+ def initialize(shell:, options:)
8
+ @shell = shell
9
+ @options = options
10
+ setup if self.respond_to?(:setup)
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,66 @@
1
+ module Metacrunch
2
+ module Utils
3
+ class FileReader
4
+
5
+ def initialize
6
+ end
7
+
8
+ def read_files(files, &block)
9
+ [*files].each do |filename|
10
+ read_file(filename, &block)
11
+ end
12
+ end
13
+
14
+ def read_file(filename, &block)
15
+ if is_tar_file?(filename)
16
+ read_tar_file(filename, &block)
17
+ else
18
+ read_regular_file(filename, &block)
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ def is_tar_file?(filename)
25
+ filename.ends_with?(".tar") || filename.ends_with?(".tar.gz")
26
+ end
27
+
28
+ def is_gzip_file?(filename)
29
+ filename.ends_with?(".gz")
30
+ end
31
+
32
+ def read_tar_file(filename, &block)
33
+ io = is_gzip_file?(filename) ? Zlib::GzipReader.open(filename) : File.open(filename, "r")
34
+
35
+ tarReader = Gem::Package::TarReader.new(io)
36
+ tarReader.each do |entry|
37
+ if entry.file?
38
+ result = FileReaderResult.new(
39
+ filename: entry.full_name,
40
+ source_filename: filename,
41
+ contents: entry.read,
42
+ from_archive: true
43
+ )
44
+
45
+ yield(result)
46
+ end
47
+ end
48
+ end
49
+
50
+ def read_regular_file(filename, &block)
51
+ if File.file?(filename)
52
+ io = is_gzip_file?(filename) ? Zlib::GzipReader.open(filename) : File.open(filename, "r")
53
+
54
+ result = FileReaderResult.new(
55
+ filename: filename,
56
+ source_filename: nil,
57
+ contents: io.read
58
+ )
59
+
60
+ yield(result)
61
+ end
62
+ end
63
+
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,20 @@
1
+ module Metacrunch
2
+ module Utils
3
+ class FileReaderResult
4
+
5
+ attr_reader :filename, :source_filename, :contents
6
+
7
+ def initialize(filename:, source_filename:nil, contents:nil, from_archive:false)
8
+ @filename = filename
9
+ @source_filename = source_filename
10
+ @contents = contents
11
+ @from_archive = from_archive
12
+ end
13
+
14
+ def from_archive?
15
+ @from_archive
16
+ end
17
+
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,6 @@
1
+ module Metacrunch
2
+ module Utils
3
+ require_relative "./utils/file_reader"
4
+ require_relative "./utils/file_reader_result"
5
+ end
6
+ end
@@ -0,0 +1,3 @@
1
+ module Metacrunch
2
+ VERSION = "2.1.0.pre1"
3
+ end
data/lib/metacrunch.rb ADDED
@@ -0,0 +1,26 @@
1
+ require "active_support"
2
+ require "active_support/core_ext"
3
+ require "parallel"
4
+ require "rubygems"
5
+ require "rubygems/package"
6
+ require "thor"
7
+ require "thor/group"
8
+
9
+ begin
10
+ require "pry"
11
+ rescue LoadError ; end
12
+
13
+ module Metacrunch
14
+
15
+ def self.load_plugins
16
+ Gem.find_latest_files("metacrunch_plugin.rb").each do |path|
17
+ load(path)
18
+ end
19
+ end
20
+
21
+ end
22
+
23
+ require "metacrunch/version"
24
+ require "metacrunch/cli"
25
+ require "metacrunch/command"
26
+ require "metacrunch/utils"
@@ -0,0 +1,25 @@
1
+ require File.expand_path("../lib/metacrunch/version", __FILE__)
2
+
3
+ Gem::Specification.new do |s|
4
+ s.authors = ["René Sprotte", "Michael Sievers", "Marcel Otto"]
5
+ s.email = "r.sprotte@ub.uni-paderborn.de"
6
+ s.summary = %q{Metadata processing toolkit for Ruby}
7
+ s.description = s.summary
8
+ s.homepage = "http://github.com/ubpb/metacrunch"
9
+ s.licenses = ["MIT"]
10
+
11
+ s.files = `git ls-files`.split($\)
12
+ s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
13
+ s.test_files = s.files.grep(%r{^(test|spec|features)/})
14
+ s.name = "metacrunch"
15
+ s.require_paths = ["lib"]
16
+ s.version = Metacrunch::VERSION
17
+ s.bindir = "bin"
18
+ s.executables = ["metacrunch"]
19
+
20
+ s.required_ruby_version = ">= 2.2.0"
21
+
22
+ s.add_dependency "activesupport", "~> 4.2", ">= 4.2.0"
23
+ s.add_dependency "parallel", "~> 1.4", ">= 1.4.1"
24
+ s.add_dependency "thor", "~> 0.19"
25
+ end
Binary file
Binary file
@@ -0,0 +1 @@
1
+ THIS IS A TEST
Binary file
@@ -0,0 +1,53 @@
1
+ describe Metacrunch::Utils::FileReader do
2
+
3
+ let(:reader) { Metacrunch::Utils::FileReader.new }
4
+ let(:regular_file) { File.join(RSpec.root, "assets", "regular_file.txt") }
5
+ let(:compressed_regular_file) { File.join(RSpec.root, "assets", "regular_file.txt.gz") }
6
+ let(:archive_file) { File.join(RSpec.root, "assets", "archive.tar") }
7
+ let(:compressed_archive_file) { File.join(RSpec.root, "assets", "archive.tar.gz") }
8
+
9
+ it "can read regular files" do
10
+ reader.read_files(regular_file) do |result|
11
+ expect(result).not_to be_nil
12
+ expect(result).to be_instance_of(Metacrunch::Utils::FileReaderResult)
13
+ expect(result.filename).to eq(regular_file)
14
+ expect(result.source_filename).to be_nil
15
+ expect(result.from_archive?).to be false
16
+ expect(result.contents).to eq("THIS IS A TEST\n")
17
+ end
18
+ end
19
+
20
+ it "can read compressed regular files" do
21
+ reader.read_files(compressed_regular_file) do |result|
22
+ expect(result).not_to be_nil
23
+ expect(result).to be_instance_of(Metacrunch::Utils::FileReaderResult)
24
+ expect(result.filename).to eq(compressed_regular_file)
25
+ expect(result.source_filename).to be_nil
26
+ expect(result.from_archive?).to be false
27
+ expect(result.contents).to eq("THIS IS A TEST\n")
28
+ end
29
+ end
30
+
31
+ it "can read TAR archives" do
32
+ reader.read_files(archive_file) do |result|
33
+ expect(result).not_to be_nil
34
+ expect(result).to be_instance_of(Metacrunch::Utils::FileReaderResult)
35
+ expect(result.filename).to eq("regular_file.txt")
36
+ expect(result.source_filename).to eq(archive_file)
37
+ expect(result.from_archive?).to be true
38
+ expect(result.contents).to eq("THIS IS A TEST\n")
39
+ end
40
+ end
41
+
42
+ it "can read compressed TAR archives" do
43
+ reader.read_files(compressed_archive_file) do |result|
44
+ expect(result).not_to be_nil
45
+ expect(result).to be_instance_of(Metacrunch::Utils::FileReaderResult)
46
+ expect(result.filename).to eq("regular_file.txt")
47
+ expect(result.source_filename).to eq(compressed_archive_file)
48
+ expect(result.from_archive?).to be true
49
+ expect(result.contents).to eq("THIS IS A TEST\n")
50
+ end
51
+ end
52
+
53
+ end
@@ -0,0 +1,12 @@
1
+ require "metacrunch"
2
+
3
+ RSpec.configure do |config|
4
+ end
5
+
6
+ # Helper to provide RSpec.root
7
+ module ::RSpec
8
+ module_function
9
+ def root
10
+ @spec_root ||= Pathname.new(__dir__)
11
+ end
12
+ end
metadata ADDED
@@ -0,0 +1,129 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: metacrunch
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.1.0.pre1
5
+ platform: ruby
6
+ authors:
7
+ - René Sprotte
8
+ - Michael Sievers
9
+ - Marcel Otto
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2015-04-23 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: activesupport
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: '4.2'
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: 4.2.0
25
+ type: :runtime
26
+ prerelease: false
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - "~>"
30
+ - !ruby/object:Gem::Version
31
+ version: '4.2'
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: 4.2.0
35
+ - !ruby/object:Gem::Dependency
36
+ name: parallel
37
+ requirement: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '1.4'
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: 1.4.1
45
+ type: :runtime
46
+ prerelease: false
47
+ version_requirements: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - "~>"
50
+ - !ruby/object:Gem::Version
51
+ version: '1.4'
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 1.4.1
55
+ - !ruby/object:Gem::Dependency
56
+ name: thor
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.19'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.19'
69
+ description: Metadata processing toolkit for Ruby
70
+ email: r.sprotte@ub.uni-paderborn.de
71
+ executables:
72
+ - metacrunch
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - ".gitignore"
77
+ - ".rspec"
78
+ - ".travis.yml"
79
+ - Gemfile
80
+ - License.txt
81
+ - Rakefile
82
+ - Readme.md
83
+ - bin/metacrunch
84
+ - lib/metacrunch.rb
85
+ - lib/metacrunch/cli.rb
86
+ - lib/metacrunch/command.rb
87
+ - lib/metacrunch/utils.rb
88
+ - lib/metacrunch/utils/file_reader.rb
89
+ - lib/metacrunch/utils/file_reader_result.rb
90
+ - lib/metacrunch/version.rb
91
+ - metacrunch.gemspec
92
+ - spec/assets/archive.tar
93
+ - spec/assets/archive.tar.gz
94
+ - spec/assets/regular_file.txt
95
+ - spec/assets/regular_file.txt.gz
96
+ - spec/file_reader_spec.rb
97
+ - spec/spec_helper.rb
98
+ homepage: http://github.com/ubpb/metacrunch
99
+ licenses:
100
+ - MIT
101
+ metadata: {}
102
+ post_install_message:
103
+ rdoc_options: []
104
+ require_paths:
105
+ - lib
106
+ required_ruby_version: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: 2.2.0
111
+ required_rubygems_version: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">"
114
+ - !ruby/object:Gem::Version
115
+ version: 1.3.1
116
+ requirements: []
117
+ rubyforge_project:
118
+ rubygems_version: 2.4.6
119
+ signing_key:
120
+ specification_version: 4
121
+ summary: Metadata processing toolkit for Ruby
122
+ test_files:
123
+ - spec/assets/archive.tar
124
+ - spec/assets/archive.tar.gz
125
+ - spec/assets/regular_file.txt
126
+ - spec/assets/regular_file.txt.gz
127
+ - spec/file_reader_spec.rb
128
+ - spec/spec_helper.rb
129
+ has_rdoc: