Sha256: e444ace35c0f83d3cef04e4925c82a6545ebbd99d6f2f368657a627bfc0aa084

Contents?: true

Size: 1.39 KB

Versions: 3

Compression:

Stored size: 1.39 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: { query: slug })
      suggestions = response.body['results']
      suggestions.select! { |result| article_url?(result['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

3 entries across 3 versions & 1 rubygems

Version Path
devcenter-1.3.0 lib/devcenter/commands/base.rb
devcenter-1.2.0 lib/devcenter/commands/base.rb
devcenter-1.1.9 lib/devcenter/commands/base.rb