Sha256: ee0e28cfbdf7054961c98c31a69f4d97602e9d98477159a9075cf61d12185953

Contents?: true

Size: 1.5 KB

Versions: 4

Compression:

Stored size: 1.5 KB

Contents

# typed: strict

module CodeOwnership
  class Configuration < T::Struct
    extend T::Sig
    DEFAULT_JS_PACKAGE_PATHS = T.let(['**/'], T::Array[String])

    const :owned_globs, T::Array[String]
    const :unowned_globs, T::Array[String]
    const :js_package_paths, T::Array[String]
    const :unbuilt_gems_path, T.nilable(String)
    const :skip_codeowners_validation, T::Boolean
    const :raw_hash, T::Hash[T.untyped, T.untyped]
    const :require_github_teams, T::Boolean

    sig { returns(Configuration) }
    def self.fetch
      config_hash = YAML.load_file('config/code_ownership.yml')

      if config_hash.key?("require")
        config_hash["require"].each do |require_directive|
          Private::ExtensionLoader.load(require_directive)
        end
      end

      new(
        owned_globs: config_hash.fetch('owned_globs', []),
        unowned_globs: config_hash.fetch('unowned_globs', []),
        js_package_paths: js_package_paths(config_hash),
        skip_codeowners_validation: config_hash.fetch('skip_codeowners_validation', false),
        raw_hash: config_hash,
        require_github_teams: config_hash.fetch('require_github_teams', false)
      )
    end

    sig { params(config_hash: T::Hash[T.untyped, T.untyped]).returns(T::Array[String]) }
    def self.js_package_paths(config_hash)
      specified_package_paths = config_hash['js_package_paths']
      if specified_package_paths.nil?
        DEFAULT_JS_PACKAGE_PATHS.dup
      else
        Array(specified_package_paths)
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
code_ownership-1.36.2 lib/code_ownership/configuration.rb
code_ownership-1.36.1 lib/code_ownership/configuration.rb
code_ownership-1.36.0 lib/code_ownership/configuration.rb
code_ownership-1.35.0 lib/code_ownership/configuration.rb