Sha256: 761939d66491ec59ccd7964ad4086ef99e79869de2c90974a63ecf1d1b28baf5

Contents?: true

Size: 1.21 KB

Versions: 4

Compression:

Stored size: 1.21 KB

Contents

require 'excon'
require 'launchy'
require 'json'
require 'yaml'

module Devcenter::Commands

  class Base

    include Devcenter::Logger
    include Devcenter::Helpers

    def self.run(*args)
      command = self.new(*args)
    end

    def initialize(*args)
      @validation_errors = []
      validate
      if @validation_errors.any?
        @validation_errors.each{ |e| say e }
      else
        run
      end
    end

    def validate; end # add error messages to @validation_errors
    def run; end

    protected

    def article_not_found!(slug)
      message = ["No #{slug} article found."]
      suggestions = JSON.parse(Excon.get(search_api_url, :query => { :q => slug, :source => 'devcenter-cli' }).body)['devcenter']
      suggestions.select!{ |s| article_url?(s['full_url']) }
      suggestions.each{ |s| s['slug'] = slug_from_article_url(s['full_url']) }
      unless suggestions.empty?
        message << "Perhaps you meant one of these:"
        longest = suggestions.map {|suggestion| suggestion['slug'].size }.max
        suggestions.each do |suggestion|
          message << "  %-#{longest}s # %s" % [suggestion['slug'], suggestion['title']]
        end
      end
      say message.join("\n")
      exit
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
devcenter-0.0.6 lib/devcenter/commands/base.rb
devcenter-0.0.5 lib/devcenter/commands/base.rb
devcenter-0.0.4 lib/devcenter/commands/base.rb
devcenter-0.0.3 lib/devcenter/commands/base.rb