xtmjoin: Added basic join script based on xtminfo.
This commit is contained in:
parent
d9bc8a3555
commit
e16e1d85bb
1 changed files with 99 additions and 0 deletions
99
bin/xtmjoin
Executable file
99
bin/xtmjoin
Executable file
|
@ -0,0 +1,99 @@
|
||||||
|
#!/usr/bin/ruby
|
||||||
|
|
||||||
|
require 'optparse'
|
||||||
|
|
||||||
|
require 'rubygems'
|
||||||
|
require 'bindata'
|
||||||
|
|
||||||
|
require 'xtmfile/xtmheader'
|
||||||
|
|
||||||
|
|
||||||
|
class XtmJoin
|
||||||
|
class XtmJoinArgumentError < ArgumentError ; end
|
||||||
|
|
||||||
|
attr_reader :opts
|
||||||
|
|
||||||
|
|
||||||
|
def initialize args
|
||||||
|
@args = []
|
||||||
|
@input_xtm = nil
|
||||||
|
parse_command_line args
|
||||||
|
end
|
||||||
|
|
||||||
|
def parse_command_line args
|
||||||
|
@args = args.clone
|
||||||
|
@opts = OptionParser.new do |opts|
|
||||||
|
opts.banner = "Usage: #{File.basename $0} [options]\n"
|
||||||
|
|
||||||
|
opts.separator ""
|
||||||
|
opts.separator "Mandatory options"
|
||||||
|
|
||||||
|
opts.on("-i", "--input FILE", "Input XTM file") do |r|
|
||||||
|
@input_xtm = r
|
||||||
|
end
|
||||||
|
|
||||||
|
opts.separator ""
|
||||||
|
opts.separator "General options:"
|
||||||
|
|
||||||
|
opts.on("-h", "--help", "Show this help") do |h|
|
||||||
|
@help = h
|
||||||
|
end
|
||||||
|
opts.on("-v", "--verbose", "Show warnings too") do |v|
|
||||||
|
@verbose = v
|
||||||
|
end
|
||||||
|
opts.separator ""
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def validate!
|
||||||
|
@opts.parse!
|
||||||
|
|
||||||
|
raise XtmJoinArgumentError, "No input XTM file specified!" if @input_xtm.nil?
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
def run
|
||||||
|
validate!
|
||||||
|
|
||||||
|
output_file = nil
|
||||||
|
# initial file
|
||||||
|
|
||||||
|
in_xtm = File.open( @input_xtm, "rb" )
|
||||||
|
header = XtmHeader::read in_xtm
|
||||||
|
|
||||||
|
output_file = header.filename_str
|
||||||
|
|
||||||
|
puts "Writing data to %s" % output_file
|
||||||
|
|
||||||
|
# FIXME: prevent overwriting
|
||||||
|
out_xtm = File.open( output_file, "wb" )
|
||||||
|
|
||||||
|
while not in_xtm.eof?
|
||||||
|
buffer = in_xtm.read 1024
|
||||||
|
out_xtm.write buffer
|
||||||
|
end
|
||||||
|
|
||||||
|
# remaining files
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.main args
|
||||||
|
xj = nil
|
||||||
|
begin
|
||||||
|
xj = XtmJoin.new args
|
||||||
|
xj.run
|
||||||
|
exit 0
|
||||||
|
rescue XtmJoinArgumentError => e
|
||||||
|
STDERR.puts "%s" % xj.opts
|
||||||
|
STDERR.puts "error: %s" % e.message
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
rescue SystemExit => e
|
||||||
|
raise e
|
||||||
|
rescue Exception => e
|
||||||
|
STDERR.puts "error: %s" % e.message
|
||||||
|
exit 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
XtmJoin.main ARGV
|
Loading…
Add table
Reference in a new issue