Sha256: 04481748e9d3bc58c66550e48a4cee7d83deb9beeb42848c9646f104c1f7957c

Contents?: true

Size: 1.29 KB

Versions: 1

Compression:

Stored size: 1.29 KB

Contents

require 'logger'
module Sym
  #
  # This module is responsible for installing Sym BASH extensions.
  #
  module Constants

    BASH_FILES = Dir.glob("#{File.expand_path('../../bin', __dir__)}/sym.*.bash").freeze

    class << self
      attr_reader :user_home

      def user_home=(value)
        @user_home = value
        register_bash_files!
      end

      def config
        @config ||= {}
      end

      def sym_key_file
        "#{user_home}/.sym.key"
      end

      def register_bash_files!
        BASH_FILES.each do |bash_file|
          register_bash_extension bash_file
        end
      end

      private

      def register_bash_extension(bash_file)
        return unless user_home && Dir.exist?(user_home)

        source_file = File.basename(bash_file)
        home_file   = "#{user_home}/.#{source_file}"
        config_key  = source_file.gsub(/sym\./, '').gsub(/\.bash/, '').to_sym

        config[config_key] = {
          dest:   home_file,
          source: bash_file,
          script: "[[ -f #{home_file} ]] && source #{home_file}"
        }
      end
    end

    self.user_home ||= ::Dir.home rescue nil
    self.user_home ||= '/tmp'

    self.register_bash_files!

    module Log
      NIL = Logger.new(nil).freeze # empty logger
      LOG = Logger.new(STDERR).freeze
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sym-3.0.0 lib/sym/constants.rb