class Motoko::Config

Attributes

columns[RW]
columns_spec[RW]
shortcuts[RW]
sort_by[RW]

Public Class Methods

new() click to toggle source
# File lib/motoko/config.rb, line 9
def initialize
  @columns = %w[host customer role]
  @sort_by = %w[customer host]
  @shortcuts = Hash.new { {} }
  @columns_spec = Hash.new { {} }.merge(default_columns_spec)

  load_system_config
  load_user_config
end

Public Instance Methods

default_columns_spec() click to toggle source
# File lib/motoko/config.rb, line 58
    def default_columns_spec
      YAML.safe_load(<<~COLUMNS_SPEC)
        ---
        host:
          resolver: identity
        customer:
          formatter: ellipsis
          max_length: 20
        cpu:
          resolver: cpu
        os:
          resolver: os
          human_name: Operating System
        reboot_required:
          resolver: reboot_required
          formatter: boolean
          human_name: R
      COLUMNS_SPEC
    end
load_classes(directory) click to toggle source
# File lib/motoko/config.rb, line 52
def load_classes(directory)
  Dir["#{directory}/formatters/*.rb", "#{directory}/resolvers/*.rb"].sort.each do |file|
    require file
  end
end
load_config(directory) click to toggle source
# File lib/motoko/config.rb, line 36
def load_config(directory)
  load_classes(directory)

  filename = File.join(directory, 'config.yaml')

  return unless File.readable?(filename)

  config = YAML.safe_load(File.read(filename))

  @columns = config.delete('columns') if config.key?('columns')
  @sort_by = config.delete('sort_by') if config.key?('sort_by')

  @shortcuts.merge!(config.delete('shortcuts')) if config.key?('shortcuts')
  @columns_spec.merge!(config.delete('columns_spec')) if config.key?('columns_spec')
end
load_system_config() click to toggle source
# File lib/motoko/config.rb, line 19
def load_system_config
  [
    '/usr/local/etc/motoko',
    '/etc/motoko',
  ].each do |d|
    if File.directory?(d)
      load_config(d)
      break
    end
  end
end
load_user_config() click to toggle source
# File lib/motoko/config.rb, line 31
def load_user_config
  d = File.expand_path('~/.config/motoko')
  load_config(d) if File.directory?(d)
end