Module: ROF::CLI
- Defined in:
- lib/rof/cli.rb
Class Method Summary collapse
-
.compare_files(file1, file2, outfile = STDOUT) ⇒ Integer
compare two rofs.
-
.csv_to_rof(csv, config = {}, outfile = STDOUT) ⇒ Object
Convert the given CSV to ROF JSON document.
-
.fedora_to_rof(pids, config = {}, outfile = STDOUT) ⇒ Object
Convert the given fedora PIDs to ROF JSON document.
-
.filter_file(filter, fname, outfile = STDOUT) ⇒ Object
Responsible for loading the given :fname into an array of items, the processing those items via the :filter, and finally writing results to the :output.
- .ingest_array(items, search_paths = [], outfile = STDOUT, fedora = nil, bendo = nil) ⇒ Object
-
.ingest_file(fname, search_paths = [], outfile = STDOUT, fedora = nil, bendo = nil) ⇒ Object
Ingest the file ‘fname` that is a level 0 rof file.
-
.jsonld_to_rof(jsonld, config = {}, outfile = STDOUT) ⇒ Object
Convert the given JSON-LD to ROF JSON document.
-
.osf_to_rof(project_file, config = {}, outfile = STDOUT) ⇒ Object
convert OSF archive tar.gz to rof file.
-
.with_outfile_handling(outfile) {|writer| ... } ⇒ Object
Provides a normalized handling of outfiles:.
Class Method Details
.compare_files(file1, file2, outfile = STDOUT) ⇒ Integer
Should the outfile default to STDERR
compare two rofs
133 134 135 136 137 138 |
# File 'lib/rof/cli.rb', line 133 def self.compare_files(file1, file2, outfile = STDOUT) fedora_rof = ROF::Utility.load_items_from_json_file(file1, outfile) bendo_rof = ROF::Utility.load_items_from_json_file(file2, outfile) ROF::CompareRof.fedora_vs_bendo(fedora_rof, bendo_rof, outfile) end |
.csv_to_rof(csv, config = {}, outfile = STDOUT) ⇒ Object
Convert the given CSV to ROF JSON document
107 108 109 110 111 112 |
# File 'lib/rof/cli.rb', line 107 def self.csv_to_rof(csv, config = {}, outfile = STDOUT) result = ROF::Translators::CsvToRof.call(csv, config) with_outfile_handling(outfile) do |writer| writer.write(JSON.pretty_generate(result)) end end |
.fedora_to_rof(pids, config = {}, outfile = STDOUT) ⇒ Object
Convert the given fedora PIDs to ROF JSON document
94 95 96 97 98 99 |
# File 'lib/rof/cli.rb', line 94 def self.fedora_to_rof(pids, config = {}, outfile = STDOUT) result = ROF::Translators::FedoraToRof.call(pids, config) with_outfile_handling(outfile) do |writer| writer.write(JSON.pretty_generate(result)) end end |
.filter_file(filter, fname, outfile = STDOUT) ⇒ Object
Responsible for loading the given :fname into an array of items, the processing those items via the :filter, and finally writing results to the :output
68 69 70 71 72 73 74 |
# File 'lib/rof/cli.rb', line 68 def self.filter_file(filter, fname, outfile = STDOUT) items = ROF::Utility.load_items_from_json_file(fname, STDERR) result = filter.process(items) with_outfile_handling(outfile) do |writer| writer.write(JSON.pretty_generate(result)) end end |
.ingest_array(items, search_paths = [], outfile = STDOUT, fedora = nil, bendo = nil) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/rof/cli.rb', line 28 def self.ingest_array(items, search_paths = [], outfile = STDOUT, fedora = nil, bendo = nil) fedora = Rubydora.connect(fedora) if fedora item_count = 1 error_count = 0 verb = fedora.nil? ? 'Verifying' : 'Ingesting' with_outfile_handling(outfile) do |writer| overall_benchmark = Benchmark.measure do items.each do |item| begin writer.write("#{item_count}. #{verb} #{item['pid']} ...") item_count += 1 individual_benchmark = Benchmark.measure do ROF.Ingest(item, fedora, search_paths, bendo) end writer.write("ok. %0.3fs\n" % individual_benchmark.real) rescue Exception => e error_count += 1 writer.write("error. #{e}\n") # TODO(dbrower): add option to toggle displaying backtraces if e.backtrace writer.write(e.backtrace.join("\n\t")) writer.write("\n") end end end end writer.write("Total time %0.3fs\n" % overall_benchmark.real) writer.write("#{error_count} errors\n") end error_count end |
.ingest_file(fname, search_paths = [], outfile = STDOUT, fedora = nil, bendo = nil) ⇒ Object
Ingest the file ‘fname` that is a level 0 rof file. It may contain any number of fedora objects; they will be delt with in the order they appear in the file. Any external files (except fname) are searched for using the `search_path` array of directories. If `fedora` is present, it is a hash having the keys `url`, `user`, and `password`. Omitting `fedora` has the effect of verifying the format of `fname`.
All output is sent to ‘outfile`.
Returns the number of errors.
21 22 23 24 |
# File 'lib/rof/cli.rb', line 21 def self.ingest_file(fname, search_paths = [], outfile = STDOUT, fedora = nil, bendo = nil) items = ROF::Utility.load_items_from_json_file(fname, outfile) ingest_array(items, search_paths, outfile, fedora, bendo) end |
.jsonld_to_rof(jsonld, config = {}, outfile = STDOUT) ⇒ Object
Convert the given JSON-LD to ROF JSON document
120 121 122 123 124 125 |
# File 'lib/rof/cli.rb', line 120 def self.jsonld_to_rof(jsonld, config = {}, outfile = STDOUT) result = ROF::Translators::JsonldToRof.call(jsonld, config) with_outfile_handling(outfile) do |writer| writer.write(JSON.pretty_generate(result)) end end |
.osf_to_rof(project_file, config = {}, outfile = STDOUT) ⇒ Object
convert OSF archive tar.gz to rof file
81 82 83 84 85 86 87 |
# File 'lib/rof/cli.rb', line 81 def self.osf_to_rof(project_file, config = {}, outfile = STDOUT) osf_projects = ROF::Utility.load_items_from_json_file(project_file, outfile) result = ROF::Translators::OsfToRof.call(osf_projects[0], config) with_outfile_handling(outfile) do |writer| writer.write(JSON.pretty_generate(result)) end end |
.with_outfile_handling(outfile) {|writer| ... } ⇒ Object
Provides a normalized handling of outfiles:
144 145 146 147 148 149 150 151 152 153 154 155 156 157 |
# File 'lib/rof/cli.rb', line 144 def self.with_outfile_handling(outfile) need_close = false # use outfile is_a String if outfile.is_a?(String) outfile = File.open(outfile, 'w') need_close = true elsif outfile.nil? outfile = File.open('/dev/null', 'w') need_close = true end yield(outfile) ensure outfile.close if outfile && (need_close || outfile.respond_to?(:close)) end |