Sha256: b0b9437ee3367c294d106f81010a579e3ff5a8143a996f591207a794431ef108

Contents?: true

Size: 1.46 KB

Versions: 13

Compression:

Stored size: 1.46 KB

Contents

# frozen_string_literal: false

# User input configuration module.
class USPSFlags
  module Configuration
    # Configuration accessor.
    def configuration
      @configuration ||= USPSFlags::Config.new
    end

    # Configuration constructor.
    def configure
      yield(configuration) if block_given?
      ensure_directories
      @configuration
    end

    # Ensures the directory structure exists.
    #
    # @private
    def ensure_directories
      get_dir_configs
      prepare_dir_configs
      prepare_flags_dir
      ::FileUtils.mkdir_p(USPSFlags.configuration.log_path)
    end

    # Gets all configuration variables that specify a dir.
    #
    # @private
    def get_dir_configs
      @dirs = USPSFlags.configuration.instance_variables.map(&:to_s).map do |v|
        v.match(/.*?_dir/)
      end.compact.map(&:to_s)
    end

    # Ensures that directories exist (and are cleared, if configured).
    #
    # @private
    def prepare_dir_configs
      @dirs.each do |dir|
        dir_path = @configuration.instance_variable_get(dir)
        ::FileUtils.rm_rf(dir_path) if @configuration.clear
        ::FileUtils.mkdir_p(dir_path)
      end
    end

    # Ensures that the flags_dir subdirectories exist.
    #
    # @private
    def prepare_flags_dir
      ::FileUtils.mkdir_p("#{@configuration.flags_dir}/PNG/insignia")
      ::FileUtils.mkdir_p("#{@configuration.flags_dir}/SVG/insignia")
      ::FileUtils.mkdir_p("#{@configuration.flags_dir}/ZIP")
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
usps_flags-0.6.4 lib/usps_flags/configuration.rb
usps_flags-0.6.3 lib/usps_flags/configuration.rb
usps_flags-0.6.2 lib/usps_flags/configuration.rb
usps_flags-0.6.1 lib/usps_flags/configuration.rb
usps_flags-0.6.0 lib/usps_flags/configuration.rb
usps_flags-0.5.9 lib/usps_flags/configuration.rb
usps_flags-0.5.8 lib/usps_flags/configuration.rb
usps_flags-0.5.7 lib/usps_flags/configuration.rb
usps_flags-0.5.6 lib/usps_flags/configuration.rb
usps_flags-0.5.5 lib/usps_flags/configuration.rb
usps_flags-0.5.4 lib/usps_flags/configuration.rb
usps_flags-0.5.3 lib/usps_flags/configuration.rb
usps_flags-0.5.2 lib/usps_flags/configuration.rb