Sha256: 75bacf071155dc197874bce564a2aec08a5eda02ae54c50ac3749970053c50cf

Contents?: true

Size: 1.81 KB

Versions: 38

Compression:

Stored size: 1.81 KB

Contents

# frozen_string_literal: true

# takelage project module
module ProjectModule
  # takelage config class.
  class TakelageProject
    include Singleton
    include LoggingModule
    include SystemModule
    include ConfigModule

    attr_accessor :active, :private, :main, :dir

    def initialize
      @active = {}
      @private = {}
      @main = {}
      @dir = {}
    end
  end

  # Initialze project
  def initialize_project
    TakelageProject.instance.main = _project_read_main
    TakelageProject.instance.private = _project_read_private
    TakelageProject.instance.active = _project_merge_active
    TakelageProject.instance.dir =
      TakelageProject.instance.config.active['project_root_dir']
  end

  # @return [Object] global singleton project
  def project
    TakelageProject.instance
  end

  private

  # Read main YAML file.
  def _project_read_main
    dir = TakelageProject.instance.config.active['project_root_dir']
    main_file = "#{dir}/" \
        "#{TakelageProject.instance.config.active['info_project_main']}"

    return {} unless File.exist? main_file

    (read_yaml_erb_file(main_file) || {}).sort.to_h
  end

  # Read private YAML file.
  def _project_read_private
    dir = TakelageProject.instance.config.active['project_root_dir']
    private_file = "#{dir}/" \
        "#{TakelageProject.instance.config.active['info_project_private']}"

    return {} unless File.exist? private_file

    private_yaml = read_yaml_erb_file(private_file) || {}

    private_yaml.sort.to_h
  end

  # Merge active configuration.
  def _project_merge_active
    # make a clone or else we'll change the original hash
    main = TakelageProject.instance.main.clone
    private = TakelageProject.instance.private.clone

    # merge main and private to active
    # private wins against main
    main.merge!(private).sort.to_h
  end
end

Version data entries

38 entries across 38 versions & 1 rubygems

Version Path
takelage-0.33.1 lib/takelage/lib/project.rb
takelage-0.32.4 lib/takelage/lib/project.rb
takelage-0.32.3 lib/takelage/lib/project.rb
takelage-0.32.1 lib/takelage/lib/project.rb
takelage-0.32.0 lib/takelage/lib/project.rb
takelage-0.31.0 lib/takelage/lib/project.rb
takelage-0.30.6 lib/takelage/lib/project.rb
takelage-0.30.5 lib/takelage/lib/project.rb
takelage-0.30.1 lib/takelage/lib/project.rb
takelage-0.30.0 lib/takelage/lib/project.rb
takelage-0.29.14 lib/takelage/lib/project.rb
takelage-0.29.13 lib/takelage/lib/project.rb
takelage-0.29.11 lib/takelage/lib/project.rb
takelage-0.29.10 lib/takelage/lib/project.rb
takelage-0.29.8 lib/takelage/lib/project.rb
takelage-0.29.6 lib/takelage/lib/project.rb
takelage-0.29.0 lib/takelage/lib/project.rb
takelage-0.28.26 lib/takelage/lib/project.rb
takelage-0.28.24 lib/takelage/lib/project.rb
takelage-0.28.14 lib/takelage/lib/project.rb