ectd_check 0.0.1 → 0.0.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.
- data/bin/checkectd +75 -0
- data/ectd_check.gemspec +2 -2
- data/lib/ectd_check/version.rb +1 -1
- metadata +5 -3
data/bin/checkectd
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Args: PATH
|
4
|
+
#
|
5
|
+
# Interactively will parse index.xml and all sub xml files and check linked leafs for md5 mismatch's. Will Offer to correct them if necessary.
|
6
|
+
|
7
|
+
def help
|
8
|
+
puts "ECTD Checker v: 0.0.1"
|
9
|
+
puts "Licensed under GPLv2"
|
10
|
+
puts "Contact Russell Osborne of Scilucent LLC for other uses rposborne {at} scilucent.com"
|
11
|
+
puts "Usage: checkectd path"
|
12
|
+
exit
|
13
|
+
end
|
14
|
+
|
15
|
+
args = ARGV.dup
|
16
|
+
ARGV.clear
|
17
|
+
path = args.shift.strip rescue help
|
18
|
+
puts "Checking all Leafs of Submission #{path}"
|
19
|
+
|
20
|
+
require 'nokogiri'
|
21
|
+
require 'digest/md5'
|
22
|
+
|
23
|
+
files_to_check = Dir[File.join("#{path}","**","*.xml")]
|
24
|
+
count_failed_files = 0
|
25
|
+
files_to_check.each do |file|
|
26
|
+
f = File.open(file)
|
27
|
+
|
28
|
+
save_flag = false
|
29
|
+
doc = Nokogiri::XML(f)
|
30
|
+
leafs = doc.css('leaf')
|
31
|
+
|
32
|
+
leafs.each do |leaf|
|
33
|
+
leaf_href_full_path = File.join( File.dirname(file) , leaf.attribute('href'))
|
34
|
+
calculated_checksum = Digest::MD5.hexdigest(File.read(leaf_href_full_path))
|
35
|
+
leaf_checksum = leaf.attribute("checksum")
|
36
|
+
|
37
|
+
if calculated_checksum.to_s.chomp != leaf_checksum.to_s.chomp
|
38
|
+
save_flag = true
|
39
|
+
count_failed_files += 1
|
40
|
+
leaf['checksum'] = calculated_checksum
|
41
|
+
puts "md5 mismatch #{calculated_checksum} != #{leaf_checksum} for file #{leaf.attribute('href')}"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
if save_flag
|
46
|
+
puts ARGV
|
47
|
+
puts "Checkusm Errors Found in #{file}. Would you like us to update them (Y/n)?"
|
48
|
+
user_confirm = $stdin.gets.chomp
|
49
|
+
if user_confirm == "Y"
|
50
|
+
puts "updating bad checksums in #{file}"
|
51
|
+
File.open(file, 'w') {|f| f.write(doc.to_xml) }
|
52
|
+
end
|
53
|
+
user_confirm = nil
|
54
|
+
end
|
55
|
+
|
56
|
+
f.close
|
57
|
+
end
|
58
|
+
|
59
|
+
index_calculated_checksum = Digest::MD5.file(File.join("#{path}", "index.xml"))
|
60
|
+
index_checksum = File.read(File.join("#{path}","index-md5.txt"))
|
61
|
+
|
62
|
+
if index_calculated_checksum != index_checksum
|
63
|
+
count_failed_files += 1
|
64
|
+
puts "index.xml md5 mismatch. Would you like us to update them (Y/n)?"
|
65
|
+
user_confirm = $stdin.gets.chomp
|
66
|
+
if user_confirm == "Y"
|
67
|
+
puts "updating bad checksums in #{path}/index-md5.txt"
|
68
|
+
File.open(File.join("#{path}","index-md5.txt"), 'w') {|f| f.write(index_calculated_checksum) }
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
puts "#{count_failed_files} bad checksums"
|
73
|
+
|
74
|
+
|
75
|
+
|
data/ectd_check.gemspec
CHANGED
@@ -10,8 +10,8 @@ Gem::Specification.new do |gem|
|
|
10
10
|
gem.email = ["russell@burningpony.com"]
|
11
11
|
gem.description = %q{A simple command line tool to check and repair md5 hashes based upon the FDA eCTD specification}
|
12
12
|
gem.summary = %q{A simple command line tool to check and repair md5 hashes based upon the FDA eCTD specification. It will interactively repair the md5's and list errors found.}
|
13
|
-
gem.homepage = "
|
14
|
-
gem.add_dependency
|
13
|
+
gem.homepage = "https://github.com/rposborne/ectd_check"
|
14
|
+
gem.add_dependency "nokogiri"
|
15
15
|
|
16
16
|
gem.files = `git ls-files`.split($/)
|
17
17
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
data/lib/ectd_check/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ectd_check
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -31,7 +31,8 @@ description: A simple command line tool to check and repair md5 hashes based upo
|
|
31
31
|
the FDA eCTD specification
|
32
32
|
email:
|
33
33
|
- russell@burningpony.com
|
34
|
-
executables:
|
34
|
+
executables:
|
35
|
+
- checkectd
|
35
36
|
extensions: []
|
36
37
|
extra_rdoc_files: []
|
37
38
|
files:
|
@@ -40,10 +41,11 @@ files:
|
|
40
41
|
- LICENSE.txt
|
41
42
|
- README.md
|
42
43
|
- Rakefile
|
44
|
+
- bin/checkectd
|
43
45
|
- ectd_check.gemspec
|
44
46
|
- lib/ectd_check.rb
|
45
47
|
- lib/ectd_check/version.rb
|
46
|
-
homepage:
|
48
|
+
homepage: https://github.com/rposborne/ectd_check
|
47
49
|
licenses: []
|
48
50
|
post_install_message:
|
49
51
|
rdoc_options: []
|