manuel84/abrupt

View on GitHub
bin/abrupt

Summary

Maintainability
Test Coverage
#!/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__