Sha256: a6ad2f9c1f0d9235fdb984626eacb7a84f45a7ca6f4fa4975e2e8b9b3e4f340f

Contents?: true

Size: 1.49 KB

Versions: 2

Compression:

Stored size: 1.49 KB

Contents

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

module Devcenter::Commands

  class Base

    include Devcenter::Logger
    include Devcenter::Helpers

    def self.run(*args)
      if Devcenter::GemVersionChecker.new_version_available?
        say "devcenter has a new version available, please update with: gem install devcenter"
        return unless agree('Continue executing your command? (yes/no)')
      end

      command = self.new(*args)
    end

    def initialize(*args)
      @validation_errors = []
      validate
      if @validation_errors.any?
        @validation_errors.each{ |e| say e }
        abort
      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."]
      response = Devcenter::Client.get(:path => search_api_path, :query => { :q => slug, :source => 'devcenter-cli' })
      suggestions = response.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
      abort message.join("\n")
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
devcenter-1.1.8 lib/devcenter/commands/base.rb
devcenter-1.1.6 lib/devcenter/commands/base.rb