module Heroku::Helpers::Addons::Display

Public Instance Methods

display_addons(addons, fields) click to toggle source
# File lib/heroku/helpers/addons/display.rb, line 108
def display_addons(addons, fields)
  if addons.empty?
    display('There are no add-ons.')
  else
    table = addons.map do |addon|
      {
        'Plan'      => addon['plan']['name'],
        'Name'      => addon['name'],
        'Billed to' => addon['app']['name'],
        'Price'     => format_price(addon['plan']['price'])
      }
    end.sort_by { |addon| fields.map { |f| addon[f] } }

    display_table(table, fields, fields)
  end
end
display_attachments(attachments, fields) click to toggle source
# File lib/heroku/helpers/addons/display.rb, line 91
def display_attachments(attachments, fields)
  if attachments.empty?
    display('There are no attachments.')
  else
    table = attachments.map do |attachment|
      {
        'Name'        => attachment['name'],
        'Add-on'      => attachment['addon']['name'],
        'Billing App' => attachment['addon']['app']['name'],
        'App'         => attachment['app']['name']
      }
    end.sort_by { |addon| fields.map { |f| addon[f] } }

    display_table(table, fields, fields)
  end
end
format_price(price) click to toggle source
# File lib/heroku/helpers/addons/display.rb, line 125
def format_price(price)
  if price['cents'] == 0
    'free'
  else
    '$%.2f/%s' % [(price['cents'] / 100.0), price['unit']]
  end
end
show_all() click to toggle source

Shows a table of all add-ons on the account. For example:

Add-on Resources

Plan Name Billing App Price ———————– ————————— ————– ———— bugsnag:sagittaron bugsnag-9174150 addons $9.00/month deployhooks:hipchat deployhooks-hipchat-9852225 addons-staging free heroku-postgresql:crane advising-fairly-3183 ion-bo $50.00/month newrelic:wayne unwinding-kindly-4330 bjeanes free

# File lib/heroku/helpers/addons/display.rb, line 86
def show_all
  styled_header('Resources')
  display_addons(get_addons, ['Plan', 'Name', 'Billed to', 'Price'])
end
show_for_app(app) click to toggle source

Shows all add-ons owned by and attachments attached to the provided app. For example:

Add-on Resources for bjeanes

Plan Name Price ———————– ———————- —– heroku-postgresql:dev budding-busily-2230 free memcachier-staging:test sighing-ably-6278 free memcachier-staging:test rolling-carefully-8506 free newrelic:wayne unwinding-kindly-4330 free pgbackups:plus pgbackups-8071074 free

Add-on Attachments for bjeanes

Name Add-on Billing App ———————— ———————- ———– DATABASE budding-busily-2230 bjeanes HEROKU_POSTGRESQL_VIOLET budding-busily-2230 bjeanes MEMCACHE sighing-ably-6278 bjeanes MEMCACHIER_STAGING rolling-carefully-8506 bjeanes NEWRELIC unwinding-kindly-4330 bjeanes PGBACKUPS pgbackups-8071074 bjeanes

# File lib/heroku/helpers/addons/display.rb, line 61
def show_for_app(app)
  styled_header("Resources for #{app}")

  addons = get_addons(:app => app).
    # the /apps/:id/addons endpoint can return more than just those owned
    # by the app, so filter:
    select { |addon| addon['app']['name'] == app }

  display_addons(addons, %w[Plan Name Price])

  display('') # separate sections

  styled_header("Attachments for #{app}")
  display_attachments(get_attachments(:app => app), ['Name', 'Add-on', 'Billing App'])
end
show_for_resource(identifier) click to toggle source

Shows details about and attachments for a specified resource. For example:

$ heroku addons –resource practicing-nobly-1495

Resource Info

Name: practicing-nobly-1495 Plan: heroku-postgresql:premium-yanari Billing App: addons-reports Price: $200.00/month

Attachments

App Name ————– ———————— addons ADDONS_REPORTS addons-reports DATABASE addons-reports HEROKU_POSTGRESQL_SILVER

# File lib/heroku/helpers/addons/display.rb, line 23
def show_for_resource(identifier)
  styled_header("Resource Info")

  resource = resolve_addon!(identifier)

  styled_hash({
    'Name'        => resource['name'],
    'Plan'        => resource['plan']['name'],
    'Billing App' => resource['app']['name'],
    'Price'       => format_price(resource['plan']['price'])
  }, ['Name', 'Plan', 'Billing App', 'Price'])

  display("") # separate sections

  styled_header("Attachments")
  display_attachments(get_attachments(:resource => resource['id']), ['App', 'Name'])
end