Module: Spotlight::Assets::GeneratorCommonUtilities

Included in:
ImportmapGenerator, PropshaftGenerator
Defined in:
lib/generators/spotlight/assets/generator_common_utilities.rb

Overview

Utilities for the Spotlight assets generators

Instance Method Summary collapse

Instance Method Details

#blacklight_yarn_versionObject



18
19
20
# File 'lib/generators/spotlight/assets/generator_common_utilities.rb', line 18

def blacklight_yarn_version
  package_yarn_version('blacklight-frontend', Blacklight::VERSION)
end

#bootstrap_versionObject



26
27
28
# File 'lib/generators/spotlight/assets/generator_common_utilities.rb', line 26

def bootstrap_version
  options[:'bootstrap-version'].presence || '~> 5.3'
end

#bootstrap_yarn_versionObject

Support the gem version format e.g., ‘~> 5.3` for consistency.



31
32
33
# File 'lib/generators/spotlight/assets/generator_common_utilities.rb', line 31

def bootstrap_yarn_version
  bootstrap_version.match(/(\d+(\.\d+)*)/)[0]
end

#package_yarn_version(package_name, requested_version) ⇒ Object

Some versions of the blacklight/spotlight gem do not have a corresponding package on npm. Assume we want the most recent version that is compatible with the major version of the gem.



9
10
11
12
13
14
15
16
# File 'lib/generators/spotlight/assets/generator_common_utilities.rb', line 9

def package_yarn_version(package_name, requested_version)
  versions = JSON.parse(`yarn info #{package_name} versions --json`)['data']
  exact_match = versions.find { |v| v == requested_version }
  return exact_match if exact_match

  major_version = Gem::Version.new(requested_version).segments.first
  "^#{major_version}"
end

#spotlight_yarn_versionObject



22
23
24
# File 'lib/generators/spotlight/assets/generator_common_utilities.rb', line 22

def spotlight_yarn_version
  package_yarn_version('spotlight-frontend', Spotlight::VERSION)
end