Sha256: 4046c689e9f30c80954115456b150d841024dc8e00aef2b4dcc323ca32f6499d

Contents?: true

Size: 1.34 KB

Versions: 1

Compression:

Stored size: 1.34 KB

Contents

require 'optparse'

module Filepreviews
  # @author Jonah Ruiz <jonah@pixelhipsters.com>
  # A Simple class for the executable version of the gem
  class CLI
    BANNER = <<MSG
Usage: filepreviews [OPTION] [URL]
Description:
Filepreviews.io - Thumbnails and metadata for almost any kind of file

Options:
MSG
    # Passes arguments from ARGV and sets metadata flag
    # @param args [Array<String>] The command-line arguments
    def initialize(args)
      @args, @metadata = args, false
    end

    # Configures the arguments for the command
    # @param opts [OptionParser]
    def options(opts)
      opts.version = Filepreviews::VERSION
      opts.banner  = BANNER
      opts.set_program_name 'Filepreviews.io'

      opts.on('-m', '--metadata', 'load metadata response') do
        @metadata = true
      end

      opts.on_tail('-v', '--version', 'display the version of Filepreviews') do
        puts opts.version
        exit
      end

      opts.on_tail('-h', '--help', 'print this help') do
        puts opts.help
        exit
      end
    end

    # Parses options sent from command-line
    def parse
      opts = OptionParser.new(&method(:options))
      opts.parse!(@args)
      return opts.help if @args.last.nil?

      file_preview = Filepreviews.generate(@args.last)
      @metadata ? file_preview.metadata(js: true) : file_preview
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
filepreviews-1.0.0 lib/filepreviews/cli.rb