class Pult::Api::Drawer

Constants

ENV_VAR
RunnerInjector
UI

Public Class Methods

draw!(panel) click to toggle source
# File lib/pult/api/drawer.rb, line 47
def self.draw! panel
  @@panel = panel

  for app in @@panel._apps

    resource app do

      flat_app = @@panel[app]._to_flat.merge!(@@panel[app])

      for action in flat_app._actions.sort.reverse
        action_url = action.gsub '.', '/'

        for injection in RunnerInjector.read_injections.sort
          @@self.info_get flat_app, action, injection
          get("#{action_url}_#{injection}") { action_get }
        end

        for injection in RunnerInjector.run_injections.sort
          @@self.info_post flat_app, action, injection
          post("#{action_url}_#{injection}") { action_post }
        end

        @@self.info_get flat_app, action
        get(action_url) { action_get }

        @@self.info_post flat_app, action
        post(action_url) { action_post }
      end

      for action in flat_app._actions.sort.reverse
        action_url = action.gsub '.', '/'

        @@self.info_post flat_app, action, job: true
        post("#{action_url}_job") { action_post }
      end
    end
  end
end
info(flat_app, action, injection, job, type: @@action = action) click to toggle source
# File lib/pult/api/drawer.rb, line 86
def self.info flat_app, action, injection, job, type:
  @@action = action
  @@action_title = flat_app._action_title(action)
  @@command = flat_app[action].to_s
  @@icon = job ? UI[:icon][:job] : UI[:icon][:run]
  @@injection = injection&.sub!('_', '') ? "#{injection}#{UI[:icon][:sep]}" : ''

  desc(UI[:title][type].call){ detail(UI[:detail][type].call) }

  parameters if type == :post
end
info_get(flat_app, action, injection=nil, job: nil) click to toggle source
# File lib/pult/api/drawer.rb, line 114
def self.info_get flat_app, action, injection=nil, job: nil
  info flat_app, action, injection, job, type: :get
end
info_post(flat_app, action, injection=nil, job: nil) click to toggle source
# File lib/pult/api/drawer.rb, line 118
def self.info_post flat_app, action, injection=nil, job: nil
  info flat_app, action, injection, job, type: :post
end
parameters() click to toggle source
# File lib/pult/api/drawer.rb, line 98
def self.parameters
  params do
    optional :screen, type: String

    @@command.scan(/(?<=\$)#{ENV_VAR}/).each do |param|
      description = { type: String }

      if ! (default = `echo -n $#{param}`).blank?
        description.merge! default: default
      end

      requires param.to_sym, description
    end
  end
end

Public Instance Methods

action_get() click to toggle source
# File lib/pult/api/drawer.rb, line 36
def action_get
  /^\/(?<path>.+)$/ =~ path
  @@panel._apply_path!(path, params)
end
action_post() click to toggle source
# File lib/pult/api/drawer.rb, line 41
def action_post
  /^\/(?<path>.+)$/ =~ path
  @@panel._apply_path!("#{path}!", params)
end
path() click to toggle source
# File lib/pult/api/drawer.rb, line 32
def path
  route.pattern.origin
end