Sha256: 80b7e27e493016f136699fe49d977fcfaa45c662a54aa3ac251ee0e744b77c19

Contents?: true

Size: 1.49 KB

Versions: 2

Compression:

Stored size: 1.49 KB

Contents

require 'rdf'
require 'optparse'

module RDF
  class CLI
    ##
    # @return [String]
    def self.basename() File.basename($0) end

    ##
    # @yield  [options]
    # @yieldparam [OptionParser]
    # @return [OptionParser]
    def self.options(&block)
      options = OptionParser.new

      if block_given?
        case block.arity
          when 1 then block.call(options)
          else options.instance_eval(&block)
        end
      end

      begin
        options.parse!
      rescue OptionParser::InvalidOption => e
        abort e
      end

      options
    end

    ##
    # @param  [String] command
    # @param  [Array<String>] args
    # @return [Boolean]
    def self.exec_command(command, *args)
      if binary = RDF::CLI.find_binary(command)
        exec(binary, *args)
      else
        false
      end
    end

    ##
    # @param  [String] command
    # @return [String, nil]
    def self.find_binary(command)
      binary = File.join(File.dirname(__FILE__), '..', '..', 'bin', 'rdf-' + command)
      File.exists?(binary) ? binary : nil
    end

    ##
    # @param  [Array<String>] files
    # @yield  [statement]
    # @yieldparam [Statement]
    # @return [nil]
    def self.each_statement(*files, &block)
      files.each do |file|
        RDF::Reader::NTriples.open(file) do |reader|
          reader.each_statement(&block)
        end
      end
    end

    ##
    # @param  [String] msg
    # @return [void]
    def self.abort(msg)
      Kernel.abort "#{basename}: #{msg}"
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rdf-0.0.5 lib/rdf/cli.rb
rdf-0.0.4 lib/rdf/cli.rb