hydra-file_characterization 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CONTRIBUTING.md +113 -0
- data/README.md +21 -24
- data/lib/hydra/file_characterization.rb +47 -23
- data/lib/hydra/file_characterization/characterizer.rb +6 -5
- data/lib/hydra/file_characterization/characterizers.rb +2 -2
- data/lib/hydra/file_characterization/version.rb +1 -1
- data/spec/lib/hydra/file_characterization/characterizer_spec.rb +39 -0
- data/spec/lib/hydra/file_characterization_spec.rb +49 -32
- metadata +29 -15
- checksums.yaml +0 -7
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,113 @@
|
|
1
|
+
# How to Contribute
|
2
|
+
|
3
|
+
We want your help to make Project Hydra great.
|
4
|
+
There are a few guidelines that we need contributors to follow so that we can have a chance of keeping on top of things.
|
5
|
+
|
6
|
+
## Hydra Project Intellectual Property Licensing and Ownership
|
7
|
+
|
8
|
+
All code contributors must have an Individual Contributor License Agreement (iCLA) on file with the Hydra Project Steering Group.
|
9
|
+
If the contributor works for an institution, the institution must have a Corporate Contributor License Agreement (cCLA) on file.
|
10
|
+
|
11
|
+
https://wiki.duraspace.org/display/hydra/Hydra+Project+Intellectual+Property+Licensing+and+Ownership
|
12
|
+
|
13
|
+
You should also add yourself to the `CONTRIBUTORS.md` file in the root of the project.
|
14
|
+
|
15
|
+
## Contribution Tasks
|
16
|
+
|
17
|
+
* Reporting Issues
|
18
|
+
* Making Changes
|
19
|
+
* Submitting Changes
|
20
|
+
* Merging Changes
|
21
|
+
|
22
|
+
### Reporting Issues
|
23
|
+
|
24
|
+
* Make sure you have a [GitHub account](https://github.com/signup/free)
|
25
|
+
* Submit a [Github issue](./issues) by:
|
26
|
+
* Clearly describing the issue
|
27
|
+
* Provide a descriptive summary
|
28
|
+
* Explain the expected behavior
|
29
|
+
* Explain the actual behavior
|
30
|
+
* Provide steps to reproduce the actual behavior
|
31
|
+
|
32
|
+
### Making Changes
|
33
|
+
|
34
|
+
* Fork the repository on GitHub
|
35
|
+
* Create a topic branch from where you want to base your work.
|
36
|
+
* This is usually the master branch.
|
37
|
+
* To quickly create a topic branch based on master; `git branch fix/master/my_contribution master`
|
38
|
+
* Then checkout the new branch with `git checkout fix/master/my_contribution`.
|
39
|
+
* Please avoid working directly on the `master` branch.
|
40
|
+
* You may find the [hub suite of commands](https://github.com/defunkt/hub) helpful
|
41
|
+
* Make commits of logical units.
|
42
|
+
* Your commit should include a high level description of your work in HISTORY.textile
|
43
|
+
* Check for unnecessary whitespace with `git diff --check` before committing.
|
44
|
+
* Make sure your commit messages are [well formed](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html).
|
45
|
+
* If you created an issue, you can close it by including "Closes #issue" in your commit message. See [Github's blog post for more details](https://github.com/blog/1386-closing-issues-via-commit-messages)
|
46
|
+
|
47
|
+
```
|
48
|
+
Present tense short summary (50 characters or less)
|
49
|
+
|
50
|
+
More detailed description, if necessary. It should be wrapped to 72
|
51
|
+
characters. Try to be as descriptive as you can, even if you think that
|
52
|
+
the commit content is obvious, it may not be obvious to others. You
|
53
|
+
should add such description also if it's already present in bug tracker,
|
54
|
+
it should not be necessary to visit a webpage to check the history.
|
55
|
+
|
56
|
+
Include Closes #<issue-number> when relavent.
|
57
|
+
|
58
|
+
Description can have multiple paragraphs and you can use code examples
|
59
|
+
inside, just indent it with 4 spaces:
|
60
|
+
|
61
|
+
class PostsController
|
62
|
+
def index
|
63
|
+
respond_with Post.limit(10)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
You can also add bullet points:
|
68
|
+
|
69
|
+
- you can use dashes or asterisks
|
70
|
+
|
71
|
+
- also, try to indent next line of a point for readability, if it's too
|
72
|
+
long to fit in 72 characters
|
73
|
+
```
|
74
|
+
|
75
|
+
* Make sure you have added the necessary tests for your changes.
|
76
|
+
* Run _all_ the tests to assure nothing else was accidentally broken.
|
77
|
+
* When you are ready to submit a pull request
|
78
|
+
|
79
|
+
### Submitting Changes
|
80
|
+
|
81
|
+
[Detailed Walkthrough of One Pull Request per Commit](http://ndlib.github.io/practices/one-commit-per-pull-request/)
|
82
|
+
|
83
|
+
* Read the article ["Using Pull Requests"](https://help.github.com/articles/using-pull-requests) on GitHub.
|
84
|
+
* Make sure your branch is up to date with its parent branch (i.e. master)
|
85
|
+
* `git checkout master`
|
86
|
+
* `git pull --rebase`
|
87
|
+
* `git checkout <your-branch>`
|
88
|
+
* `git rebase master`
|
89
|
+
* It is likely a good idea to run your tests again.
|
90
|
+
* Squash the commits for your branch into one commit
|
91
|
+
* `git rebase --interactive HEAD~<number-of-commits>` ([See Github help](https://help.github.com/articles/interactive-rebase))
|
92
|
+
* To determine the number of commits on your branch: `git log master..<your-branch> --oneline | wc -l`
|
93
|
+
* Squashing your branch's changes into one commit is "good form" and helps the person merging your request to see everything that is going on.
|
94
|
+
* Push your changes to a topic branch in your fork of the repository.
|
95
|
+
* Submit a pull request from your fork to the project.
|
96
|
+
|
97
|
+
### Merging Changes
|
98
|
+
|
99
|
+
* It is considered "poor from" to merge your own request.
|
100
|
+
* Please take the time to review the changes and get a sense of what is being changed. Things to consider:
|
101
|
+
* Does the commit message explain what is going on?
|
102
|
+
* Does the code changes have tests? _Not all changes need new tests, some changes are refactorings_
|
103
|
+
* Does the commit contain more than it should? Are two separate concerns being addressed in one commit?
|
104
|
+
* Did the Travis tests complete successfully?
|
105
|
+
* If you are uncertain, bring other contributors into the conversation by creating a comment that includes their @username.
|
106
|
+
* If you like the pull request, but want others to chime in, create a +1 comment and tag a user.
|
107
|
+
|
108
|
+
# Additional Resources
|
109
|
+
|
110
|
+
* [General GitHub documentation](http://help.github.com/)
|
111
|
+
* [GitHub pull request documentation](http://help.github.com/send-pull-requests/)
|
112
|
+
* [Pro Git](http://git-scm.com/book) is both a free and excellent book about Git.
|
113
|
+
* [A Git Config for Contributing](http://ndlib.github.io/practices/my-typical-per-project-git-config/)
|
data/README.md
CHANGED
@@ -10,16 +10,30 @@ To provide a wrapper for file characterization
|
|
10
10
|
|
11
11
|
If you are using Rails add the following to an initializer (./config/initializers/hydra-file_characterization_config.rb):
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
```ruby
|
14
|
+
Hydra::FileCharacterization.configure do |config|
|
15
|
+
config.tool_path(:fits, '/path/to/fits')
|
16
|
+
end
|
17
|
+
```
|
16
18
|
|
17
|
-
|
19
|
+
You can call a single characterizer…
|
20
|
+
```ruby
|
21
|
+
xml_string = Hydra::FileCharacterization.characterize(contents_of_a_file, 'file.rb', :fits)
|
22
|
+
```
|
18
23
|
|
19
|
-
|
24
|
+
…for this particular call, you can specify custom fits path.
|
20
25
|
|
21
|
-
|
22
|
-
|
26
|
+
```ruby
|
27
|
+
xml_string = Hydra::FileCharacterization.characterize(contents_of_a_file, 'file.rb', :fits) do |config|
|
28
|
+
config[:fits] = './really/custom/path/to/fits'
|
29
|
+
end
|
30
|
+
```
|
31
|
+
|
32
|
+
You can also call multiple characterizers at the same time.
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
fits_xml, ffprobe_xml = Hydra::FileCharacterization.characterize(contents_of_a_file, 'file.rb', :fits, :ffprobe)
|
36
|
+
```
|
23
37
|
|
24
38
|
* Why `file.read`? To highlight that we want a string. In the case of ActiveFedora, we have a StringIO instead of a file.
|
25
39
|
* Why `file.basename`? In the case of Fits, the characterization takes cues from the extension name.
|
@@ -27,20 +41,3 @@ To use the characterizer:
|
|
27
41
|
## Registering New Characterizers
|
28
42
|
|
29
43
|
This is possible by adding a characterizer to the `Hydra::FileCharacterization::Characterizers`' namespace.
|
30
|
-
|
31
|
-
## To Consider
|
32
|
-
|
33
|
-
How others are using the extract_metadata method
|
34
|
-
- https://github.com/curationexperts/bawstun/blob/ff8142ac043604c11a6f57b03629284bfd3043ea/app/models/generic_file.rb#L173
|
35
|
-
|
36
|
-
## Todo Steps
|
37
|
-
|
38
|
-
- ~~Given a filename, characterize the file and return a raw XML stream~~
|
39
|
-
- ~~Provide method for converting a StringIO and original file name to a temp file with comparable, then running the characterizer against the tempfile~~
|
40
|
-
- ~~Provide a configuration option for the fits path; This would be the default for the characterizer~~
|
41
|
-
- Update existing Sufia implementation
|
42
|
-
- Deprecrate Hydra::Derivatives direct method call
|
43
|
-
- Instead call the characterizer with the content
|
44
|
-
- Allow characterization services to be chained together
|
45
|
-
- ~~This would involve renaming the Characterizer to something else (i.e. Characterizers::Fits)~~
|
46
|
-
- Provide an ActiveFedora Datastream that maps the raw XML stream to a datastructure
|
@@ -9,28 +9,9 @@ module Hydra
|
|
9
9
|
|
10
10
|
module_function
|
11
11
|
|
12
|
-
#
|
13
|
-
|
14
|
-
|
15
|
-
# @param [String] content - The contents of the original file
|
16
|
-
# @param [String] filename - The original file's filename; Some
|
17
|
-
# characterization tools take hints from the file names
|
18
|
-
# @param [Array] tool_names - A list of tool names available on the system
|
19
|
-
#
|
20
|
-
# @return [String, Array<String>] -
|
21
|
-
# String - When a single tool_name is given, returns the raw XML as a
|
22
|
-
# string
|
23
|
-
# Array<String> - When multiple tool_names are given, returns an equal
|
24
|
-
# length Array of XML strings
|
25
|
-
def characterize(content, filename, *tool_names)
|
26
|
-
tool_outputs = []
|
27
|
-
tool_names = Array(tool_names).flatten.compact
|
28
|
-
FileCharacterization::ToTempFile.open(content, filename) do |f|
|
29
|
-
tool_names.each do |tool_name|
|
30
|
-
tool_outputs << FileCharacterization.characterize_with(tool_name, f.path)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
tool_names.size == 1 ? tool_outputs.first : tool_outputs
|
12
|
+
# A convenience method
|
13
|
+
def characterize(*args, &block)
|
14
|
+
FileCharacterization.characterize(*args, &block)
|
34
15
|
end
|
35
16
|
|
36
17
|
module FileCharacterization
|
@@ -39,6 +20,49 @@ module Hydra
|
|
39
20
|
attr_accessor :configuration
|
40
21
|
end
|
41
22
|
|
23
|
+
#
|
24
|
+
# Run all of the specified tools against the given content and filename.
|
25
|
+
#
|
26
|
+
# @example
|
27
|
+
# xml_string = Hydra::FileCharacterization.characterize(contents_of_a_file, 'file.rb', :fits)
|
28
|
+
#
|
29
|
+
# @example
|
30
|
+
# xml_string = Hydra::FileCharacterization.characterize(contents_of_a_file, 'file.rb', :fits) do |config|
|
31
|
+
# config[:fits] = './really/custom/path/to/fits'
|
32
|
+
# end
|
33
|
+
#
|
34
|
+
# @example
|
35
|
+
# fits_xml, ffprobe_xml = Hydra::FileCharacterization.characterize(contents_of_a_file, 'file.rb', :fits, :ffprobe)
|
36
|
+
#
|
37
|
+
# @param [String] content - The contents of the original file
|
38
|
+
# @param [String] filename - The original file's filename; Some
|
39
|
+
# characterization tools take hints from the file names
|
40
|
+
# @param [Hash/Array] tool_names - A list of tool names available on the system
|
41
|
+
# if you provide a Hash
|
42
|
+
#
|
43
|
+
# @return [String, Array<String>] -
|
44
|
+
# String - When a single tool_name is given, returns the raw XML as a
|
45
|
+
# string
|
46
|
+
# Array<String> - When multiple tool_names are given, returns an equal
|
47
|
+
# length Array of XML strings
|
48
|
+
#
|
49
|
+
# @yieldparam [Hash] For any of the specified tool_names, if you add a
|
50
|
+
# key to the yieldparam with a value, that value will be used as the path
|
51
|
+
#
|
52
|
+
# @see Hydra::FileCharacterization.configure
|
53
|
+
def self.characterize(content, filename, *tool_names)
|
54
|
+
tool_outputs = []
|
55
|
+
tool_names = Array(tool_names).flatten.compact
|
56
|
+
custom_paths = {}
|
57
|
+
yield(custom_paths) if block_given?
|
58
|
+
FileCharacterization::ToTempFile.open(content, filename) do |f|
|
59
|
+
tool_names.each do |tool_name|
|
60
|
+
tool_outputs << FileCharacterization.characterize_with(tool_name, f.path, custom_paths[tool_name])
|
61
|
+
end
|
62
|
+
end
|
63
|
+
tool_names.size == 1 ? tool_outputs.first : tool_outputs
|
64
|
+
end
|
65
|
+
|
42
66
|
def self.configure
|
43
67
|
self.configuration ||= Configuration.new
|
44
68
|
yield(configuration)
|
@@ -51,4 +75,4 @@ module Hydra
|
|
51
75
|
end
|
52
76
|
|
53
77
|
end
|
54
|
-
end
|
78
|
+
end
|
@@ -9,8 +9,9 @@ module Hydra::FileCharacterization
|
|
9
9
|
class_attribute :tool_path
|
10
10
|
|
11
11
|
attr_reader :filename
|
12
|
-
def initialize(filename)
|
12
|
+
def initialize(filename, tool_path = nil)
|
13
13
|
@filename = filename
|
14
|
+
@tool_path = tool_path
|
14
15
|
end
|
15
16
|
|
16
17
|
def call
|
@@ -31,14 +32,14 @@ module Hydra::FileCharacterization
|
|
31
32
|
end
|
32
33
|
end
|
33
34
|
|
35
|
+
def tool_path
|
36
|
+
@tool_path || self.class.tool_path || (raise Hydra::FileCharacterization::UnspecifiedToolPathError.new(self.class))
|
37
|
+
end
|
38
|
+
|
34
39
|
protected
|
35
40
|
|
36
41
|
def command
|
37
42
|
raise NotImplementedError, "Method #command should be overriden in child classes"
|
38
43
|
end
|
39
|
-
|
40
|
-
def tool_path
|
41
|
-
self.class.tool_path || (raise Hydra::FileCharacterization::UnspecifiedToolPathError.new(self.class))
|
42
|
-
end
|
43
44
|
end
|
44
45
|
end
|
@@ -16,8 +16,8 @@ module Hydra::FileCharacterization
|
|
16
16
|
tool_name.to_s.gsub(/(?:^|_)([a-z])/) { $1.upcase }
|
17
17
|
end
|
18
18
|
|
19
|
-
def characterize_with(tool_name,
|
20
|
-
tool_obj = characterizer(tool_name).new(
|
19
|
+
def characterize_with(tool_name, *args)
|
20
|
+
tool_obj = characterizer(tool_name).new(*args)
|
21
21
|
tool_obj.call
|
22
22
|
end
|
23
23
|
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'hydra/file_characterization/characterizer'
|
3
|
+
|
4
|
+
module Hydra::FileCharacterization
|
5
|
+
describe Characterizer do
|
6
|
+
let(:filename) { __FILE__ }
|
7
|
+
let(:instance_tool_path) { nil }
|
8
|
+
let(:class_tool_path) { nil }
|
9
|
+
|
10
|
+
subject { Hydra::FileCharacterization::Characterizer.new(filename, instance_tool_path) }
|
11
|
+
around(:each) do |example|
|
12
|
+
Hydra::FileCharacterization::Characterizer.tool_path = class_tool_path
|
13
|
+
example.run
|
14
|
+
Hydra::FileCharacterization::Characterizer.tool_path = nil
|
15
|
+
end
|
16
|
+
|
17
|
+
context 'with custom instance tool_path' do
|
18
|
+
let(:instance_tool_path) { '/arbitrary/path' }
|
19
|
+
let(:class_tool_path) { '/a_different/path' }
|
20
|
+
|
21
|
+
its(:tool_path) { should eq instance_tool_path}
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'with custom class tool_path' do
|
25
|
+
let(:instance_tool_path) { nil }
|
26
|
+
let(:class_tool_path) { '/a_different/path' }
|
27
|
+
|
28
|
+
its(:tool_path) { should eq class_tool_path}
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'without a specified tool_path' do
|
32
|
+
it 'should raise Hydra::FileCharacterization::UnspecifiedToolPathError' do
|
33
|
+
expect {
|
34
|
+
subject.tool_path
|
35
|
+
}.to raise_error(Hydra::FileCharacterization::UnspecifiedToolPathError)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -4,43 +4,60 @@ require 'hydra/file_characterization/characterizer'
|
|
4
4
|
|
5
5
|
module Hydra
|
6
6
|
|
7
|
-
describe
|
8
|
-
let(:content) { "class Test; end\n" }
|
9
|
-
let(:filename) { 'test.rb' }
|
10
|
-
subject { Hydra.characterize(content, filename, tool_names) }
|
7
|
+
describe FileCharacterization do
|
11
8
|
|
12
|
-
describe '
|
13
|
-
let(:
|
14
|
-
|
15
|
-
|
9
|
+
describe '.characterize' do
|
10
|
+
let(:content) { "class Test; end\n" }
|
11
|
+
let(:filename) { 'test.rb' }
|
12
|
+
subject { Hydra::FileCharacterization.characterize(content, filename, tool_names) }
|
16
13
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
subject
|
22
|
-
}.to raise_error(Hydra::FileCharacterization::ToolNotFoundError)
|
23
|
-
}
|
24
|
-
end
|
14
|
+
describe 'for fits' do
|
15
|
+
let(:tool_names) { [:fits] }
|
16
|
+
it { should match(/#{'<identity format="Plain text" mimetype="text/plain"'}/) }
|
17
|
+
end
|
25
18
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
19
|
+
describe 'with configured path' do
|
20
|
+
it {
|
21
|
+
response = Hydra::FileCharacterization.characterize(content, filename, :fits) do |config|
|
22
|
+
config[:fits] = `which fits || which fits.sh`.strip
|
23
|
+
end
|
24
|
+
expect(response).to match(/#{'<identity format="Plain text" mimetype="text/plain"'}/)
|
25
|
+
}
|
26
|
+
end
|
34
27
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
28
|
+
describe 'with multiple runs' do
|
29
|
+
it {
|
30
|
+
response_1, response_2, response_3 = Hydra::FileCharacterization.characterize(content, filename, :fits, :fits)
|
31
|
+
expect(response_1).to match(/#{'<identity format="Plain text" mimetype="text/plain"'}/)
|
32
|
+
expect(response_2).to match(/#{'<identity format="Plain text" mimetype="text/plain"'}/)
|
33
|
+
expect(response_3).to be_nil
|
34
|
+
}
|
35
|
+
end
|
39
36
|
|
40
|
-
|
37
|
+
describe 'for a bogus tool' do
|
38
|
+
let(:tool_names) { [:cookie_monster] }
|
39
|
+
it {
|
40
|
+
expect {
|
41
|
+
subject
|
42
|
+
}.to raise_error(Hydra::FileCharacterization::ToolNotFoundError)
|
43
|
+
}
|
44
|
+
end
|
41
45
|
|
42
|
-
|
46
|
+
describe 'for a mix of bogus and valid tools' do
|
47
|
+
let(:tool_names) { [:fits, :cookie_monster] }
|
48
|
+
it {
|
49
|
+
expect {
|
50
|
+
subject
|
51
|
+
}.to raise_error(Hydra::FileCharacterization::ToolNotFoundError)
|
52
|
+
}
|
53
|
+
end
|
54
|
+
|
55
|
+
describe 'for no tools' do
|
56
|
+
let(:tool_names) { nil }
|
57
|
+
it { should eq [] }
|
58
|
+
end
|
43
59
|
|
60
|
+
end
|
44
61
|
describe '.configure' do
|
45
62
|
let(:content) { "class Test; end\n" }
|
46
63
|
let(:filename) { 'test.rb' }
|
@@ -56,10 +73,10 @@ module Hydra
|
|
56
73
|
end
|
57
74
|
|
58
75
|
expect {
|
59
|
-
Hydra.characterize(content, filename, :fits)
|
76
|
+
Hydra::FileCharacterization.characterize(content, filename, :fits)
|
60
77
|
}.to raise_error(Hydra::FileCharacterization::UnspecifiedToolPathError)
|
61
78
|
end
|
62
79
|
end
|
63
80
|
|
64
81
|
end
|
65
|
-
end
|
82
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hydra-file_characterization
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- James Treacy
|
@@ -11,62 +12,70 @@ authors:
|
|
11
12
|
autorequire:
|
12
13
|
bindir: bin
|
13
14
|
cert_chain: []
|
14
|
-
date: 2013-
|
15
|
+
date: 2013-10-10 00:00:00.000000000 Z
|
15
16
|
dependencies:
|
16
17
|
- !ruby/object:Gem::Dependency
|
17
18
|
name: activesupport
|
18
19
|
requirement: !ruby/object:Gem::Requirement
|
20
|
+
none: false
|
19
21
|
requirements:
|
20
|
-
- - '>='
|
22
|
+
- - ! '>='
|
21
23
|
- !ruby/object:Gem::Version
|
22
24
|
version: 3.0.0
|
23
25
|
type: :runtime
|
24
26
|
prerelease: false
|
25
27
|
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
26
29
|
requirements:
|
27
|
-
- - '>='
|
30
|
+
- - ! '>='
|
28
31
|
- !ruby/object:Gem::Version
|
29
32
|
version: 3.0.0
|
30
33
|
- !ruby/object:Gem::Dependency
|
31
34
|
name: rspec
|
32
35
|
requirement: !ruby/object:Gem::Requirement
|
36
|
+
none: false
|
33
37
|
requirements:
|
34
|
-
- - '>='
|
38
|
+
- - ! '>='
|
35
39
|
- !ruby/object:Gem::Version
|
36
40
|
version: '0'
|
37
41
|
type: :development
|
38
42
|
prerelease: false
|
39
43
|
version_requirements: !ruby/object:Gem::Requirement
|
44
|
+
none: false
|
40
45
|
requirements:
|
41
|
-
- - '>='
|
46
|
+
- - ! '>='
|
42
47
|
- !ruby/object:Gem::Version
|
43
48
|
version: '0'
|
44
49
|
- !ruby/object:Gem::Dependency
|
45
50
|
name: guard
|
46
51
|
requirement: !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
47
53
|
requirements:
|
48
|
-
- - '>='
|
54
|
+
- - ! '>='
|
49
55
|
- !ruby/object:Gem::Version
|
50
56
|
version: '0'
|
51
57
|
type: :development
|
52
58
|
prerelease: false
|
53
59
|
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
54
61
|
requirements:
|
55
|
-
- - '>='
|
62
|
+
- - ! '>='
|
56
63
|
- !ruby/object:Gem::Version
|
57
64
|
version: '0'
|
58
65
|
- !ruby/object:Gem::Dependency
|
59
66
|
name: guard-rspec
|
60
67
|
requirement: !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
61
69
|
requirements:
|
62
|
-
- - '>='
|
70
|
+
- - ! '>='
|
63
71
|
- !ruby/object:Gem::Version
|
64
72
|
version: '0'
|
65
73
|
type: :development
|
66
74
|
prerelease: false
|
67
75
|
version_requirements: !ruby/object:Gem::Requirement
|
76
|
+
none: false
|
68
77
|
requirements:
|
69
|
-
- - '>='
|
78
|
+
- - ! '>='
|
70
79
|
- !ruby/object:Gem::Version
|
71
80
|
version: '0'
|
72
81
|
description: To provide a wrapper for file characterization
|
@@ -81,6 +90,7 @@ extra_rdoc_files: []
|
|
81
90
|
files:
|
82
91
|
- .gitignore
|
83
92
|
- .rspec
|
93
|
+
- CONTRIBUTING.md
|
84
94
|
- Gemfile
|
85
95
|
- Guardfile
|
86
96
|
- LICENSE
|
@@ -102,6 +112,7 @@ files:
|
|
102
112
|
- spec/fixtures/brendan_behan.jpeg.fits.xml
|
103
113
|
- spec/fixtures/brendan_broken.dxxd
|
104
114
|
- spec/fixtures/brendan_broken.dxxd.fits.xml
|
115
|
+
- spec/lib/hydra/file_characterization/characterizer_spec.rb
|
105
116
|
- spec/lib/hydra/file_characterization/characterizers/ffprobe_spec.rb
|
106
117
|
- spec/lib/hydra/file_characterization/characterizers/fits_spec.rb
|
107
118
|
- spec/lib/hydra/file_characterization/characterizers_spec.rb
|
@@ -111,26 +122,27 @@ files:
|
|
111
122
|
homepage: https://github.com/projecthydra/hydra-file_characterization
|
112
123
|
licenses:
|
113
124
|
- APACHE2
|
114
|
-
metadata: {}
|
115
125
|
post_install_message:
|
116
126
|
rdoc_options: []
|
117
127
|
require_paths:
|
118
128
|
- lib
|
119
129
|
required_ruby_version: !ruby/object:Gem::Requirement
|
130
|
+
none: false
|
120
131
|
requirements:
|
121
|
-
- - '>='
|
132
|
+
- - ! '>='
|
122
133
|
- !ruby/object:Gem::Version
|
123
134
|
version: '0'
|
124
135
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
136
|
+
none: false
|
125
137
|
requirements:
|
126
|
-
- - '>='
|
138
|
+
- - ! '>='
|
127
139
|
- !ruby/object:Gem::Version
|
128
140
|
version: '0'
|
129
141
|
requirements: []
|
130
142
|
rubyforge_project:
|
131
|
-
rubygems_version:
|
143
|
+
rubygems_version: 1.8.25
|
132
144
|
signing_key:
|
133
|
-
specification_version:
|
145
|
+
specification_version: 3
|
134
146
|
summary: To provide a wrapper for file characterization
|
135
147
|
test_files:
|
136
148
|
- spec/fixtures/archive.zip
|
@@ -139,9 +151,11 @@ test_files:
|
|
139
151
|
- spec/fixtures/brendan_behan.jpeg.fits.xml
|
140
152
|
- spec/fixtures/brendan_broken.dxxd
|
141
153
|
- spec/fixtures/brendan_broken.dxxd.fits.xml
|
154
|
+
- spec/lib/hydra/file_characterization/characterizer_spec.rb
|
142
155
|
- spec/lib/hydra/file_characterization/characterizers/ffprobe_spec.rb
|
143
156
|
- spec/lib/hydra/file_characterization/characterizers/fits_spec.rb
|
144
157
|
- spec/lib/hydra/file_characterization/characterizers_spec.rb
|
145
158
|
- spec/lib/hydra/file_characterization/to_temp_file_spec.rb
|
146
159
|
- spec/lib/hydra/file_characterization_spec.rb
|
147
160
|
- spec/spec_helper.rb
|
161
|
+
has_rdoc:
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 6aa0e27917882868e5356621f163eda7e6ab56a6
|
4
|
-
data.tar.gz: d3114a797679bcd25bc29f19ae31f70659828016
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 88e44705e2cb908b5732a3f220e90a2544b909834bbe3f96b07ea82c142b31cffaebd38d068493ad84cb0887fe6eec76aeff11e9fd874c116a24fa9295729e3c
|
7
|
-
data.tar.gz: 6932b2860c71bfb3171f0a952021fe0935121b880ea7fcd3aff5b4c5dd47e551143773f154be0e852f5b637f1f22e3a3a1d1949eaea392b38984793017eb7bb2
|