libis-format 0.9.37 → 0.9.38

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 675cfff96c503a9e4815f6b8f63521ebef16e18d
4
- data.tar.gz: c7194c4d45dec03b46fb82fe77ee627e820e01fe
3
+ metadata.gz: aee2f761cde56c377abdfff7b7d40d09c32c0c93
4
+ data.tar.gz: 5d6384f6484d04ec01705883e04ead5b0d02dacb
5
5
  SHA512:
6
- metadata.gz: d88b635b271233ad6123d42998760ee032219fc5e1a1beb76154e49a2cafc1cab5fd6dbe7d95b093dd624b3935ffe21edc863e3f8767a023d1b5c25575d6441f
7
- data.tar.gz: e63ae8359c4278fc5df9736ffd58f65918e09c461d1b9653327df72d09863f8ac8801d5c1f97231fd4648aa3099c942830d0585dfc28e494dbbc10e15b494ce9
6
+ metadata.gz: 5a359cd06cc1f3f442b69981858e44e55f4cd085e0e0291e4b03c0a530e86d5f5e72d1083cc7b2fa306fdd4dba033ce4eb985c49373fe0d4467052f1406146a3
7
+ data.tar.gz: 619bdb26cfea98753544d47fd1096150cd2f7ec56e5322bffabf6a4c598797f31be68d22b3f7f267aebcc5f743ae6d60bcd498a1eb27af183a5b0a5cbae7c0a9
@@ -1,6 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  require 'singleton'
4
+ require 'pathname'
4
5
 
5
6
  require 'libis-tools'
6
7
  require 'libis/tools/extend/hash'
@@ -48,19 +49,19 @@ module Libis
48
49
  result = {messages: [], output: {}, formats: {}}
49
50
 
50
51
  begin
51
- get_droid_identification(file, options[:recursive], result) if options[:droid]
52
+ get_droid_identification(file, result, options) if options[:droid]
52
53
  rescue => e
53
54
  log_msg(result, :error, "Error running Droid: #{e.message} @ #{e.backtrace.first}")
54
55
  end
55
56
 
56
57
  begin
57
- get_fido_identification(file, options[:recursive], result) if options[:fido]
58
+ get_fido_identification(file, result, options) if options[:fido]
58
59
  rescue => e
59
60
  log_msg(result, :error, "Error running Fido: #{e.message} @ #{e.backtrace.first}")
60
61
  end
61
62
 
62
63
  begin
63
- get_file_identification(file, options[:recursive], result) if options[:file]
64
+ get_file_identification(file, result, options) if options[:file]
64
65
  rescue => e
65
66
  log_msg(result, :error, "Error running File: #{e.message} @ #{e.backtrace.first}")
66
67
  end
@@ -71,7 +72,7 @@ module Libis
71
72
  # determine XML type. Add custom types at runtime with
72
73
  # Libis::Tools::Format::Identifier.add_xml_validation('my_type', '/path/to/my_type.xsd')
73
74
  begin
74
- validate_against_xml_schema(result) if options[:xml_validation]
75
+ validate_against_xml_schema(result, options[:base_dir]) if options[:xml_validation]
75
76
  rescue => e
76
77
  log_msg(result, :error, "Error validating XML files: #{e.message} @ #{e.backtrace.first}")
77
78
  end
@@ -88,41 +89,42 @@ module Libis
88
89
  @xml_validations = Libis::Format::Config[:xml_validations].to_h
89
90
  end
90
91
 
91
- def get_file_identification(file, recursive, result)
92
- output = ::Libis::Format::FileTool.run(file, recursive)
93
- process_tool_output(output, result)
92
+ def get_file_identification(file, result, options)
93
+ output = ::Libis::Format::FileTool.run(file, options[:recursive])
94
+ process_tool_output(output, result, options[:base_dir])
94
95
  output
95
96
  end
96
97
 
97
- def get_fido_identification(file, recursive, result)
98
- output = ::Libis::Format::Fido.run(file, recursive)
99
- process_tool_output(output, result)
98
+ def get_fido_identification(file, result, options)
99
+ output = ::Libis::Format::Fido.run(file, options[:recursive])
100
+ process_tool_output(output, result, options[:base_dir])
100
101
  output
101
102
  end
102
103
 
103
- def get_droid_identification(file, recursive, result)
104
- output = ::Libis::Format::Droid.run(file, recursive)
105
- process_tool_output(output, result)
104
+ def get_droid_identification(file, result, options)
105
+ output = ::Libis::Format::Droid.run(file, options[:recursive])
106
+ process_tool_output(output, result, options[:base_dir])
106
107
  output
107
108
  end
108
109
 
109
- def get_extension_identification(file, recursive, result)
110
- output = ::Libis::Format::ExtensionIdentification.run(file, recursive)
111
- process_tool_output(output, result)
110
+ def get_extension_identification(file, result, options)
111
+ output = ::Libis::Format::ExtensionIdentification.run(file, options[:recursive])
112
+ process_tool_output(output, result, options[:base_dir])
112
113
  output
113
114
  end
114
115
 
115
- def validate_against_xml_schema(result)
116
+ def validate_against_xml_schema(result, base_dir)
116
117
  result[:output].each do |file, file_results|
117
118
  file_results.each do |file_result|
118
- xml_validate(file, file_result, result)
119
+ xml_validate(file, file_result, result, base_dir)
119
120
  end
120
121
  end
121
122
  end
122
123
 
123
- def xml_validate(file, file_result, result)
124
+ def xml_validate(file, file_result, result, base_dir)
124
125
  return unless file_result[:mimetype] =~ /^(text|application)\/xml$/
125
- doc = ::Libis::Tools::XmlDocument.open file
126
+ filepath = base_dir ? File.join(base_dir, file) : file
127
+ doc = ::Libis::Tools::XmlDocument.open filepath
126
128
  xml_validations.each do |mime, xsd_file|
127
129
  next unless xsd_file
128
130
  begin
@@ -165,7 +167,7 @@ module Libis
165
167
  end
166
168
  case format_matches.count
167
169
  when 0
168
- # No this really cannot happen. If there are not hits, there will be at least a format [nil,nil]
170
+ # No this really cannot happen. If there are no hits, there will be at least a format [nil,nil]
169
171
  when 1
170
172
  # only one match, that's easy. The first of the highest score will be used
171
173
  file_result.merge!(get_best_result(output))
@@ -192,8 +194,9 @@ module Libis
192
194
 
193
195
  private
194
196
 
195
- def process_tool_output(output, result)
197
+ def process_tool_output(output, result, base_dir)
196
198
  output.each do |file, file_output|
199
+ file = Pathname.new(file).relative_path_from(Pathname(base_dir)).to_s.freeze if base_dir
197
200
  result[:output][file] ||= []
198
201
  result[:output][file] += file_output
199
202
  end
@@ -1,5 +1,5 @@
1
1
  module Libis
2
2
  module Format
3
- VERSION = '0.9.37'
3
+ VERSION = '0.9.38'
4
4
  end
5
5
  end
@@ -70,10 +70,10 @@ describe 'Identfier' do
70
70
  ::Logging::Appenders.string_io('StringIO', layout: ::Libis::Tools::Config.get_log_formatter)
71
71
  ::Libis::Tools::Config.logger.level = :all
72
72
  ::Libis::Format::Config[:droid_path] = '/opt/droid/droid.sh'
73
- ::Libis::Format::Config[:fido_path] = '/usr/local/bin/fido'
73
+ ::Libis::Format::Config[:fido_path] = File.join(ENV['HOME'], 'bin', 'fido')
74
74
  end
75
75
 
76
- let (:identifier) { ::Libis::Format::Identifier }
76
+ let (:identifier) {::Libis::Format::Identifier}
77
77
  let (:logoutput) {::Libis::Tools::Config.logger.appenders.last.sio}
78
78
  let (:dir) {File.join File.absolute_path(File.dirname(__FILE__)), 'data'}
79
79
 
@@ -114,6 +114,14 @@ describe 'Identfier' do
114
114
  end
115
115
  end
116
116
 
117
+ it 'should identify all files in a folder with base_dir option' do
118
+ result = identifier.get(dir, base_dir: dir)
119
+ expect(result[:formats].size).to be >= formatlist.size
120
+ formatlist.each do |file, format|
121
+ expect(result[:formats][file]).to include format
122
+ end
123
+ end
124
+
117
125
  it 'should identify all files in a list at once' do
118
126
  filelist = fidolist.keys.map {|file| File.join(dir, file)}
119
127
  result = identifier.get (filelist)
@@ -123,6 +131,15 @@ describe 'Identfier' do
123
131
  end
124
132
  end
125
133
 
134
+ it 'should identify all files in a list with base_dir option' do
135
+ filelist = fidolist.keys.map {|file| File.join(dir, file)}
136
+ result = identifier.get(filelist, base_dir: dir)
137
+ expect(result[:formats].size).to be >= formatlist.size
138
+ formatlist.each do |file, format|
139
+ expect(result[:formats][file]).to include format
140
+ end
141
+ end
142
+
126
143
  context 'individual files' do
127
144
 
128
145
  formatlist.each do |file, format|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libis-format
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.37
4
+ version: 0.9.38
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kris Dekeyser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-02 00:00:00.000000000 Z
11
+ date: 2017-10-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler