docker/scripts/snippets.rb (38 lines of code) (raw):
# frozen_string_literal: true
class Snippets
DOCKER_DIR = File.expand_path(File.join(File.dirname(__FILE__), '../'))
SNIPPETS_DIR = File.join(DOCKER_DIR, 'snippets')
VERSIONS_FILE = File.join(DOCKER_DIR, 'VERSIONS')
def initialize(include: nil, exclude: nil, platform: nil, fips: false)
default_snippets = %w[versions cmake git go rust ruby node yarn cache gitconfig tmpclean]
@include_snippets = include || default_snippets
@exclude_snippets = exclude || []
@platform = "_#{platform}" if platform
@fips = "_fips" if fips
@content = []
end
def valid_snippets
@valid_snippets ||= @include_snippets - @exclude_snippets
end
def populate
if valid_snippets.include?('versions')
@content << versions
@content << "\n"
@valid_snippets.delete('versions')
end
@content << snippets.join("\n")
@content.join('')
end
def versions
File.readlines(VERSIONS_FILE).map do |component|
"ENV #{component}"
end
end
def snippets
valid_snippets.map do |component|
filename = File.join(SNIPPETS_DIR, "#{component}#{@platform}#{@fips}")
filename = filename.delete_suffix(@fips) if @fips && !File.exist?(filename)
filename = filename.delete_suffix(@platform) unless File.exist?(filename)
File.read(filename)
end
end
end