Sha256: cf3f5cf5394b99a498e3a61f3e84e81ebeb51efd1b07dfd6040f66d834d9ed57

Contents?: true

Size: 1.8 KB

Versions: 9

Compression:

Stored size: 1.8 KB

Contents

# frozen_string_literal: true

# tau project module
module ProjectModule
  # tau project class.
  class TakeltauProject
    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
    TakeltauProject.instance.main = _project_read_main
    TakeltauProject.instance.private = _project_read_private
    TakeltauProject.instance.active = _project_merge_active
    TakeltauProject.instance.dir =
      TakeltauProject.instance.config.active['project_root_dir']
  end

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

  private

  # Read main YAML file.
  def _project_read_main
    dir = TakeltauProject.instance.config.active['project_root_dir']
    main_file = "#{dir}/" \
        "#{TakeltauProject.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 = TakeltauProject.instance.config.active['project_root_dir']
    private_file = "#{dir}/" \
        "#{TakeltauProject.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 = TakeltauProject.instance.main.clone
    private = TakeltauProject.instance.private.clone

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

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
takeltau-0.44.15 lib/takeltau/lib/project.rb
takeltau-0.44.14 lib/takeltau/lib/project.rb
takeltau-0.44.12 lib/takeltau/lib/project.rb
takeltau-0.44.11 lib/takeltau/lib/project.rb
takeltau-0.44.8 lib/takeltau/lib/project.rb
takeltau-0.44.2 lib/takeltau/lib/project.rb
takeltau-0.43.23 lib/takeltau/lib/project.rb
takeltau-0.43.21 lib/takeltau/lib/project.rb
takeltau-0.43.19 lib/takeltau/lib/project.rb