Sha256: 79cf60ef7f029921a5ba48aa56759dc0632b38942b372dfa6d6ea75a3192880b

Contents?: true

Size: 1.29 KB

Versions: 1

Compression:

Stored size: 1.29 KB

Contents

# frozen_string_literal: true

PUNK::Command.create "list" do
  shortcut "l"
  description "List routes, actions, models, views, services or workers"

  option shortcut: :a, name: :all, description: "Include Punk!", type: nil

  def process
    case args.join(" ")
    when "routes"
      PUNK.app
      PUNK::App.route_list # TODO: exclude PUNK routes by default
    when "actions"
      ObjectSpace.each_object(PUNK::Action.singleton_class).map(&:name).reject { |name| _hide?(name) }
    when "models"
      ObjectSpace.each_object(PUNK::Model.singleton_class).map(&:name).reject { |name| _hide?(name) }
    when "views"
      ObjectSpace.each_object(PUNK::View.singleton_class).map(&:name).reject { |name| _hide?(name) }
    when "services"
      ObjectSpace.each_object(PUNK::Service.singleton_class).select { |klass| klass.superclass == PUNK::Service }.map(&:name).reject { |name| _hide?(name) }
    when "workers"
      ObjectSpace.each_object(PUNK::Worker.singleton_class).select { |klass| klass.superclass == PUNK::Worker }.map(&:name).reject { |name| _hide?(name) }
    when "", "help"
      "? specify one of: routes, actions, models, views, services, workers"
    else
      "? unkown arguments: #{args.join(",")}"
    end
  end

  def _hide?(name)
    name.nil? || (name =~ /^PUNK/) && !opts[:all]
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
punk-0.4.1 lib/punk/commands/list.rb