1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
|
# THIS FILE WAS AUTOGENERATED, DO NOT EDIT
abort 'Use the rake task or esr-gem-builder to build the gem' if $0 =~ /gem$/ && $*.first == 'build'
require 'yaml'
Class.new do
def initialize
@project_path = File.dirname(__FILE__)
@project_config_path = File.join(File.dirname(__FILE__), 'Project.yaml')
@project_config = YAML.load(File.read(@project_config_path))
end
def rubies
(@project_config['rubies'] || ['2.3']).map(&:to_s)
end
def platforms
@project_config['platforms'] || %w(x86_64-linux x64-mingw32)
end
def exclude_files
@project_config['exclude_files'] || []
end
def encrypt_sources
@project_config['encrypt_sources'].nil? ? true : @project_config['encrypt_sources']
end
def extensions
@project_config['extensions'] ||
Hash[Dir.glob(File.join(@project_path, 'ext', '*')).select { |f| File.directory?(f) }.map { |f| [File.basename(f).to_sym, f] }]
end
def common_native_binary_paths
@project_config['common_native_binary_paths']
end
def native_library_artifacts
@project_config['native_library_artifacts']
end
def common_native_binary_artifacts
@project_config['common_native_binary_artifacts'] || {}
end
def extensions_target_path
@project_config['extensions_target_path'] || File.join('lib', 'native')
end
# All extension artifact path list
def native_library_artifact_paths(only_platforms = nil)
platforms_list = only_platforms.nil? ? platforms : only_platforms
extensions.keys.flat_map do |name|
rubies.flat_map do |ruby|
platforms_list.flat_map do |platform|
if native_library_artifacts && native_library_artifacts[name.to_s]
native_library_artifacts[name.to_s].map do |artifact_platform, artifacts|
next unless platform == artifact_platform.to_s
artifacts.map { |a| File.join(extensions_target_path, name.to_s, ruby, platform, a) }
end
elsif @project_config['native_artifacts'] && @project_config['native_artifacts'][name.to_s] # backward compatibility (e.g. esr-licensing <0.3)
@project_config['native_artifacts'][name.to_s].map do |artifact|
next unless platform == platform.to_s
File.join(extensions_target_path, name.to_s, ruby.to_s, platform, artifact)
end
else
[File.join(extensions_target_path, name.to_s, ruby.to_s, platform, name.to_s + '.so')]
end
end
end
end
end
def common_native_binary_path(name, platform = nil)
path = common_native_binary_paths[name] unless common_native_binary_paths.nil?
path = path[platform || RUBY_PLATFORM] if path.is_a?(Hash)
path || File.join('native', name)
end
def common_native_binary_artifact_paths(only_platforms = nil)
common_native_binary_artifacts.flat_map do |name, info|
info.flat_map do |platform, binaries|
next if only_platforms && !only_platforms.include?(platform.to_s)
binaries.map { |binary| File.join(common_native_binary_path(name, platform), binary) }
end
end.compact
end
def native_artifact_paths(only_platforms = nil)
native_library_artifact_paths(only_platforms) + common_native_binary_artifact_paths(only_platforms)
end
def gemspec
Gem::Specification.new do |s|
s.name = @project_config['name']
s.version = @project_config['version']
s.authors = @project_config['authors']
s.homepage = @project_config['homepage']
s.summary = @project_config['summary']
s.description = @project_config['description']
s.licenses = @project_config['licenses']
s.bindir = @project_config['bindir'] || 'bin'
s.executables = @project_config['executables']
s.extra_rdoc_files = @project_config['extra_rdoc_files']
s.rdoc_options.push(*@project_config['rdoc_options']) if @project_config['rdoc_options']
include_patterns = (@project_config['include_files'] || []) + ["lib/**/*.rb", "Project.yaml"]
include = include_patterns.reject { |i| i.include?('*') } +
include_patterns.select { |i| i.include?('*') }.flat_map { |i| Dir.glob(File.join(@project_path, i)) }
include.push(*native_artifact_paths)
include << "lib/rubyencoder.lic" if encrypt_sources
exclude_files_expanded = exclude_files.reject { |i| i.include?('*') }
exclude = [exclude_files_expanded] +
exclude_files.select { |i| i.include?('*') }.flat_map { |i| Dir.glob(File.join(@project_path, i)) }
s.files = include - exclude
(@project_config['dependencies'] || {}).flat_map do |_, deps|
deps.map do |d|
if d.is_a?(String)
s.add_dependency(d)
else
dep_args = [d['name']]
dep_args.concat(if d['version'].nil?; []; else d['version'].is_a?(String) ? [d['version']] : d['version'] end)
if d['development']
s.add_development_dependency(*dep_args)
else
s.add_dependency(*dep_args)
end
end
end
end
end
end
end.new.gemspec
|