env.gemspec in env-0.2.0 vs env.gemspec in env-0.3.0
- old
+ new
@@ -1,15 +1,105 @@
-# -*- encoding: utf-8 -*-
+# encoding: utf-8
-begin
- Ore::Specification.new do |gemspec|
- # custom logic here
+require 'yaml'
+
+Gem::Specification.new do |gemspec|
+ root = File.dirname(__FILE__)
+ lib_dir = File.join(root,'lib')
+ files = `git ls-files`.split($/)
+
+ filter_files = lambda { |paths|
+ files & case paths
+ when Array
+ paths
+ when String
+ Dir[paths]
+ end
+ }
+
+ version = {
+ :file => 'env/version',
+ :constant => 'Env::VERSION'
+ }
+
+ defaults = {
+ 'name' => File.basename(root),
+ 'files' => files,
+ 'require_paths' => ['ext', 'lib'].select { |dir| File.directory?(dir) },
+ 'executables' => filter_files['bin/*'].map { |path| File.basename(path) },
+ 'test_files' => filter_files['{test/{**/}*_test.rb,spec/{**/}*_spec.rb}'],
+ 'doc_files' => filter_files['*.{txt,rdoc,md,markdown,tt,textile}'],
+ 'extra_doc_files' => filter_files['*.{txt,rdoc,md,markdown,tt,textile}']
+ }
+
+ metadata = defaults.merge(YAML.load_file('gemspec.yml'))
+
+ gemspec.name = metadata['name']
+ gemspec.version = if metadata['version']
+ metadata['version']
+ else
+ $LOAD_PATH << lib_dir unless $LOAD_PATH.include?(lib_dir)
+
+ require version[:file]
+ eval(version[:constant])
+ end
+
+ gemspec.summary = metadata.fetch('summary',metadata['description'])
+ gemspec.description = metadata.fetch('description',metadata['summary'])
+
+ gemspec.licenses = Array(metadata['license'])
+ gemspec.authors = Array(metadata['authors'])
+
+ gemspec.email = metadata['email']
+ gemspec.homepage = metadata['homepage']
+
+ gemspec.require_paths = Array(metadata['require_paths'])
+ gemspec.files = filter_files[metadata['files']]
+ gemspec.files += Array(metadata['generated_files'])
+ gemspec.executables = metadata['executables']
+ gemspec.extensions = metadata['extensions']
+
+ if Gem::VERSION < '1.7.'
+ gemspec.default_executable = gemspec.executables.first
end
-rescue NameError
- begin
- require 'ore/specification'
- retry
- rescue LoadError
- STDERR.puts "The 'env.gemspec' file requires Ore."
- STDERR.puts "Run `gem install ore-core` to install Ore."
+
+ gemspec.test_files = filter_files[metadata['test_files']]
+ gemspec.extra_rdoc_files = Array(metadata['extra_doc_files'])
+
+ gemspec.post_install_message = metadata['post_install_message']
+ gemspec.requirements = metadata['requirements']
+
+ if gemspec.respond_to?(:required_ruby_version=)
+ gemspec.required_ruby_version = metadata['required_ruby_version']
+ end
+
+ if gemspec.respond_to?(:required_rubygems_version=)
+ gemspec.required_rubygems_version = metadata['required_ruby_version']
+ end
+
+ parse_versions = lambda { |versions|
+ case versions
+ when Array
+ versions.map { |v| v.to_s }
+ when String
+ versions.split(/,\s*/)
+ end
+ }
+
+ if metadata['dependencies']
+ metadata['dependencies'].each do |name,versions|
+ gemspec.add_dependency(name,parse_versions[versions])
+ end
+ end
+
+ if metadata['runtime_dependencies']
+ metadata['runtime_dependencies'].each do |name,versions|
+ gemspec.add_runtime_dependency(name,parse_versions[versions])
+ end
+ end
+
+ if metadata['development_dependencies']
+ metadata['development_dependencies'].each do |name,versions|
+ gemspec.add_development_dependency(name,parse_versions[versions])
+ end
end
end