bin/abrupt
#!/usr/bin/env ruby
require 'commander'
require_relative '../lib/abrupt'
class AbruptApp
include Commander::Methods
def run
program :name, 'Abrupt'
program :version, Abrupt::VERSION
program :help, 'Author', 'Manuel Dudda <dudda@paij.com>'
program :help, 'Source Code', 'https://github.com/manuel84/abrupt'
program :description, 'Automated Reasoning for Web Usability Problems'
command :crawl do |c|
c.syntax = 'abrupt crawl [options]'
c.description = 'Crawls a website [BETA!]'
c.option '-nofollow', "don't follow links"
c.option '--lang STRING', String, 'language'
c.option '--services STRING', Array, 'riscpl'
c.option '--verbose STRING', String, ''
c.option '--format STRING', String, 'xml or owl'
c.action do |args, options|
Abrupt.crawl args.first, options.__hash__
end
end
command :convert do |c|
c.syntax = 'abrupt convert src_crawled_data [src_user_data] [options]'
c.description = 'Converts and merges xml files to owl'
c.option '--format STRING', String, 'Specifies the output format, possible [turtle|rdfxml|ntriples] (default=turtle)'
c.option '--output STRING', String, 'Specifies an output file'
c.option '--assertions STRING', String, 'Specifies the included assertions, possible [tbox,user,website,rules] (default=tbox,user,website,rules)'
c.action do |args, options|
format = RDF::Format.for(options.output) unless options.format
options.default :format => 'turtle' # default turtle syntax output
options.default :assertions => 'tbox,user,website,rules'
format ||= RDF::Format.for(options.format.to_sym)
result = case args.count
when 0 then
puts "arg error"
when 1 then
Abrupt.convert args.first, options.__hash__
else
Abrupt.convert args.first, args[1], options.__hash__
end
if options.output
output_file = File.open(options.output, 'w')
format.writer.new(output_file, prefixes: Abrupt::PREFIXES) do |writer|
writer << result
end
else
puts result.dump Abrupt::Converter.instance.format, prefixes: Abrupt::PREFIXES
end
end
end
run!
end
end
AbruptApp.new.run # if $0 == __FILE__