class Bashly::Settings

Attributes

argfile_var[W]
commands_dir[W]
compact_short_flags[W]
config_path[W]
conjoined_flag_args[W]
enable_bash3_bouncer[W]
enable_deps_array[W]
enable_env_var_names_array[W]
enable_header_comment[W]
enable_inspect_args[W]
enable_sourcing[W]
enable_view_markers[W]
extra_lib_dirs[W]
formatter[W]
function_names[W]
lib_dir[W]
partials_extension[W]
private_reveal_key[W]
show_examples_on_error[W]
source_dir[W]
strict[W]
tab_indent[W]
target_dir[W]
usage_colors[W]
var_aliases[W]
watch_evented[W]
watch_latency[W]
word_wrap[W]

Public Class Methods

all_lib_dirs() click to toggle source
# File lib/bashly/settings.rb, line 37
def all_lib_dirs
  @all_lib_dirs = [full_lib_dir] + extra_lib_dirs
end
argfile_var() click to toggle source
# File lib/bashly/settings.rb, line 41
def argfile_var
  @argfile_var ||= get :argfile_var
end
commands_dir() click to toggle source
# File lib/bashly/settings.rb, line 45
def commands_dir
  @commands_dir ||= get :commands_dir
end
compact_short_flags() click to toggle source
# File lib/bashly/settings.rb, line 49
def compact_short_flags
  @compact_short_flags ||= get :compact_short_flags
end
config_path() click to toggle source
# File lib/bashly/settings.rb, line 57
def config_path
  @config_path ||= get(:config_path) % { source_dir: source_dir }
end
conjoined_flag_args() click to toggle source
# File lib/bashly/settings.rb, line 53
def conjoined_flag_args
  @conjoined_flag_args ||= get :conjoined_flag_args
end
enable_bash3_bouncer() click to toggle source
# File lib/bashly/settings.rb, line 67
def enable_bash3_bouncer
  @enable_bash3_bouncer ||= get :enable_bash3_bouncer
end
enable_deps_array() click to toggle source
# File lib/bashly/settings.rb, line 71
def enable_deps_array
  @enable_deps_array ||= get :enable_deps_array
end
enable_env_var_names_array() click to toggle source
# File lib/bashly/settings.rb, line 75
def enable_env_var_names_array
  @enable_env_var_names_array ||= get :enable_env_var_names_array
end
enable_header_comment() click to toggle source
# File lib/bashly/settings.rb, line 79
def enable_header_comment
  @enable_header_comment ||= get :enable_header_comment
end
enable_inspect_args() click to toggle source
# File lib/bashly/settings.rb, line 83
def enable_inspect_args
  @enable_inspect_args ||= get :enable_inspect_args
end
enable_sourcing() click to toggle source
# File lib/bashly/settings.rb, line 87
def enable_sourcing
  @enable_sourcing ||= get :enable_sourcing
end
enable_view_markers() click to toggle source
# File lib/bashly/settings.rb, line 91
def enable_view_markers
  @enable_view_markers ||= get :enable_view_markers
end
enabled?(feature) click to toggle source
# File lib/bashly/settings.rb, line 61
def enabled?(feature)
  send(:"enable_#{feature}") == 'always' ||
    (send(:"enable_#{feature}") == 'production' && production?) ||
    (send(:"enable_#{feature}") == 'development' && !production?)
end
env() click to toggle source
# File lib/bashly/settings.rb, line 95
def env
  @env ||= get(:env)&.to_sym
end
env=(value) click to toggle source
# File lib/bashly/settings.rb, line 99
def env=(value)
  @env = value&.to_sym
end
extra_lib_dirs() click to toggle source
# File lib/bashly/settings.rb, line 103
def extra_lib_dirs
  @extra_lib_dirs ||= begin
    dirs = get :extra_lib_dirs
    case dirs
    when Array then dirs
    when String then dirs.split(',').map(&:strip)
    else []
    end
  end
end
formatter() click to toggle source
# File lib/bashly/settings.rb, line 114
def formatter
  @formatter ||= get :formatter
end
full_lib_dir() click to toggle source
# File lib/bashly/settings.rb, line 118
def full_lib_dir
  "#{source_dir}/#{lib_dir}"
end
function_name(key) click to toggle source
# File lib/bashly/settings.rb, line 122
def function_name(key)
  function_names[key.to_s] || key.to_s
end
function_names() click to toggle source
# File lib/bashly/settings.rb, line 126
def function_names
  @function_names ||= get :function_names
end
lib_dir() click to toggle source
# File lib/bashly/settings.rb, line 130
def lib_dir
  @lib_dir ||= get :lib_dir
end
partials_extension() click to toggle source
# File lib/bashly/settings.rb, line 134
def partials_extension
  @partials_extension ||= get :partials_extension
end
private_reveal_key() click to toggle source
# File lib/bashly/settings.rb, line 138
def private_reveal_key
  @private_reveal_key ||= get :private_reveal_key
end
production?() click to toggle source
# File lib/bashly/settings.rb, line 142
def production?
  env == :production
end
show_examples_on_error() click to toggle source
# File lib/bashly/settings.rb, line 146
def show_examples_on_error
  @show_examples_on_error ||= get :show_examples_on_error
end
source_dir() click to toggle source
# File lib/bashly/settings.rb, line 150
def source_dir
  @source_dir ||= get :source_dir
end
strict() click to toggle source
# File lib/bashly/settings.rb, line 154
def strict
  @strict ||= get :strict
end
strict_string() click to toggle source
# File lib/bashly/settings.rb, line 158
def strict_string
  if strict.is_a? String
    strict
  elsif strict
    'set -euo pipefail'
  else
    'set -e'
  end
end
tab_indent() click to toggle source
# File lib/bashly/settings.rb, line 168
def tab_indent
  @tab_indent ||= get :tab_indent
end
target_dir() click to toggle source
# File lib/bashly/settings.rb, line 172
def target_dir
  @target_dir ||= get :target_dir
end
usage_colors() click to toggle source
# File lib/bashly/settings.rb, line 176
def usage_colors
  @usage_colors ||= get :usage_colors
end
var_aliases() click to toggle source
# File lib/bashly/settings.rb, line 180
def var_aliases
  @var_aliases ||= get :var_aliases
end
watch_evented() click to toggle source
# File lib/bashly/settings.rb, line 184
def watch_evented
  @watch_evented ||= get :watch_evented
end
watch_latency() click to toggle source
# File lib/bashly/settings.rb, line 188
def watch_latency
  @watch_latency ||= get :watch_latency
end
word_wrap() click to toggle source
# File lib/bashly/settings.rb, line 192
def word_wrap
  @word_wrap ||= get :word_wrap
end

Private Class Methods

config() click to toggle source
# File lib/bashly/settings.rb, line 222
def config
  @config ||= default_settings.merge user_settings
end
default_settings() click to toggle source
# File lib/bashly/settings.rb, line 240
def default_settings
  @default_settings ||= Config.new default_settings_path
end
default_settings_path() click to toggle source
# File lib/bashly/settings.rb, line 244
def default_settings_path
  asset 'libraries/settings/settings.yml'
end
env_var_name(key) click to toggle source
# File lib/bashly/settings.rb, line 202
def env_var_name(key)
  "BASHLY_#{key.upcase}"
end
get(key) click to toggle source
# File lib/bashly/settings.rb, line 198
def get(key)
  ENV.has_key?(env_var_name(key)) ? value_from_env(key) : value_from_config(key)
end
user_settings() click to toggle source
# File lib/bashly/settings.rb, line 226
def user_settings
  @user_settings ||= File.exist?(user_settings_path) ? Config.new(user_settings_path) : {}
end
user_settings_path() click to toggle source
# File lib/bashly/settings.rb, line 230
def user_settings_path
  @user_settings_path ||= if ENV['BASHLY_SETTINGS_PATH']
    ENV['BASHLY_SETTINGS_PATH']
  elsif File.exist? 'bashly-settings.yml'
    'bashly-settings.yml'
  else
    'settings.yml'
  end
end
value_from_config(key) click to toggle source
# File lib/bashly/settings.rb, line 206
def value_from_config(key)
  return config[key.to_s] if key == :env

  result = config["#{key}_#{env}"]
  result.nil? ? config[key.to_s] : result
end
value_from_env(key) click to toggle source
# File lib/bashly/settings.rb, line 213
def value_from_env(key)
  result = ENV[env_var_name(key)]
  case result&.strip&.downcase
  when '0', 'false', 'no' then false
  when '1', 'true', 'yes' then true
  else result
  end
end