class MicrosoftComputerVision::CommandBuilder

Public Instance Methods

get_subscription_key(options) click to toggle source
# File lib/microsoft_computer_vision/command_builder.rb, line 5
def get_subscription_key(options)
  key = options.subscription_key || ENV['SUBSCRIPTION_KEY']
  if key.nil?
    puts 'Please input your Subscription Key (--subscription_key or SUBSCRIPTION_KEY env)'
    exit
  end

  key
end
run() click to toggle source
# File lib/microsoft_computer_vision/command_builder.rb, line 15
def run
  program :name, 'mscv'
  program :version,  MicrosoftComputerVision::VERSION
  program :description, 'Microsoft Computer Vision API for cli'

  command 'analyze' do |c|
    c.syntax = 'mscv analyze /path/to/image'
    c.description = 'Microsoft Computer Vision API Analyze'
    c.option '--subscription_key STRING', String, 'Microsoft Computer Vision API Subscription Key'
    c.option '--visual_features STRING', String, 'visualFeatures param'
    c.option '--details STRING', String, 'details param'
    c.action do |args, options|
      result = MicrosoftComputerVision::Client.new(get_subscription_key(options)).analyze(args.first, {
          visual_features: options.visual_features,
          details: options.details
      })

      puts result.body
    end
  end

  command 'describe' do |c|
    c.syntax = 'mscv describe /path/to/image'
    c.description = 'Microsoft Computer Vision API Describe'
    c.option '--subscription_key STRING', String, 'Microsoft Computer Vision API Subscription Key'
    c.option '--max_candidates STRING', String, 'maxCandidates param'
    c.action do |args, options|
      result = MicrosoftComputerVision::Client.new(get_subscription_key(options)).describe(args.first, {
          max_candidates: options.max_candidates
      })

      puts result.body
    end
  end

  command 'thumbnail' do |c|
    c.syntax = 'mscv thumbnail /path/to/image'
    c.description = 'Microsoft Computer Vision API Get Thumbnail'
    c.option '--subscription_key STRING', String, 'Microsoft Computer Vision API Subscription Key'
    c.option '--output STRING', String, 'Output thumbnail path'
    c.option '--width INTEGER', Integer, 'width param'
    c.option '--height INTEGER', Integer, 'height param'
    c.option '--smart_cropping BOOLEAN', 'smartCropping param'
    c.action do |args, options|
      options.default smart_cropping: true, output: './out.jpg'

      if options.width.nil? || options.height.nil?
        puts 'Please input width and height(--width, --height)'
        exit
      end

      result = MicrosoftComputerVision::Client.new(get_subscription_key(options)).thumbnail(args.first, {
          width: options.width,
          height: options.height,
          smart_cropping: options.smart_cropping
      })

      File.write options.output, result.body
      puts "Created #{options.output}"
    end
  end

  command 'ocr' do |c|
    c.syntax = 'mscv ocr /path/to/image'
    c.description = 'Microsoft Computer Vision API OCR'
    c.option '--subscription_key STRING', String, 'Microsoft Computer Vision API Subscription Key'
    c.option '--language STRING', String, 'language param'
    c.option '--detect_orientation', 'detectOrientation param'
    c.action do |args, options|
      options.default detect_orientation: true
      result = MicrosoftComputerVision::Client.new(get_subscription_key(options)).ocr(args.first, {
          language: options.language,
          detect_orientation: options.detect_orientation
      })

      puts result.body
    end
  end

  command 'model' do |c|
    c.syntax = 'mscv model /path/to/image'
    c.description = 'Microsoft Computer Vision API Domain Model'
    c.option '--subscription_key STRING', String, 'Microsoft Computer Vision API Subscription Key'
    c.option '--model STRING', String, 'model param'
    c.action do |args, options|
      result = MicrosoftComputerVision::Client.new(get_subscription_key(options)).domain_model(args.first, {
          model: options.model
      })

      puts result.body
    end
  end

  command 'tag' do |c|
    c.syntax = 'mscv tag /path/to/image'
    c.description = 'Microsoft Computer Vision API Tag'
    c.option '--subscription_key STRING', String, 'Microsoft Computer Vision API Subscription Key'
    c.action do |args, options|
      result = MicrosoftComputerVision::Client.new(get_subscription_key(options)).tag(args.first)

      puts result.body
    end
  end

  command 'models' do |c|
    c.syntax = 'mscv models'
    c.description = 'Microsoft Computer Vision API Domain Models'
    c.option '--subscription_key STRING', String, 'Microsoft Computer Vision API Subscription Key'
    c.action do |args, options|
      result = MicrosoftComputerVision::Client.new(get_subscription_key(options)).domain_models

      puts result.body
    end
  end

  run!
end