Sha256: 66dbb64a81191f7611891e41d72c8dfaa295fda963d2fb517bea17ce734486db

Contents?: true

Size: 948 Bytes

Versions: 174

Compression:

Stored size: 948 Bytes

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/core_ext'

module EacRubyBase0
  # https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
  class ApplicationXdg
    class << self
      # @return [Pathname]
      def user_home_dir_from_env
        ENV.fetch('HOME').to_pathname
      end
    end

    DIRECTORIES = { cache: '.cache', config: '.config', data: '.local/share',
                    state: '.local/state' }.freeze

    common_constructor :app_name, :user_home_dir, default: [nil] do
      self.user_home_dir ||= self.class.user_home_dir_from_env
    end

    DIRECTORIES.each do |item, subpath|
      xdg_env_method_name = "#{item}_xdg_env"

      define_method xdg_env_method_name do
        ENV["XDG_#{item.upcase}_HOME"].if_present(&:to_pathname)
      end

      define_method "#{item}_dir" do
        (send(xdg_env_method_name) || user_home_dir.join(subpath)).join(app_name)
      end
    end
  end
end

Version data entries

174 entries across 174 versions & 4 rubygems

Version Path
eac_tools-0.76.1 sub/eac_ruby_base0/lib/eac_ruby_base0/application_xdg.rb
eac_tools-0.76.0 sub/eac_ruby_base0/lib/eac_ruby_base0/application_xdg.rb
eac_tools-0.75.2 sub/eac_ruby_base0/lib/eac_ruby_base0/application_xdg.rb
eac_tools-0.75.1 sub/eac_ruby_base0/lib/eac_ruby_base0/application_xdg.rb
eac_tools-0.75.0 sub/eac_ruby_base0/lib/eac_ruby_base0/application_xdg.rb
eac_tools-0.74.1 sub/eac_ruby_base0/lib/eac_ruby_base0/application_xdg.rb
eac_tools-0.74.0 sub/eac_ruby_base0/lib/eac_ruby_base0/application_xdg.rb
eac_tools-0.73.0 sub/eac_ruby_base0/lib/eac_ruby_base0/application_xdg.rb
eac_tools-0.72.0 sub/eac_ruby_base0/lib/eac_ruby_base0/application_xdg.rb
eac_tools-0.70.1 sub/eac_ruby_base0/lib/eac_ruby_base0/application_xdg.rb
eac_tools-0.70.0 sub/eac_ruby_base0/lib/eac_ruby_base0/application_xdg.rb
eac_tools-0.69.1 sub/eac_ruby_base0/lib/eac_ruby_base0/application_xdg.rb
eac_tools-0.69.0 sub/eac_ruby_base0/lib/eac_ruby_base0/application_xdg.rb
eac_tools-0.68.0 sub/eac_ruby_base0/lib/eac_ruby_base0/application_xdg.rb
eac_tools-0.67.1 sub/eac_ruby_base0/lib/eac_ruby_base0/application_xdg.rb
eac_ruby_base0-0.19.0 lib/eac_ruby_base0/application_xdg.rb
eac_tools-0.67.0 sub/eac_ruby_base0/lib/eac_ruby_base0/application_xdg.rb
eac_tools-0.66.0 sub/eac_ruby_base0/lib/eac_ruby_base0/application_xdg.rb
eac_tools-0.65.1 sub/eac_ruby_base0/lib/eac_ruby_base0/application_xdg.rb
eac_tools-0.65.0 sub/eac_ruby_base0/lib/eac_ruby_base0/application_xdg.rb