simple-templater 0.1.pre → 0.2.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. data/README.textile +2 -2
  2. data/Rakefile +3 -12
  3. data/deps.rip +1 -0
  4. data/deps.rip.rbe +1 -0
  5. data/lib/simple-templater/builder.rb +7 -7
  6. data/lib/simple-templater/generator.rb +5 -5
  7. data/lib/simple-templater/generator_set.rb +1 -1
  8. data/lib/simple-templater/helpers.rb +4 -3
  9. data/lib/simple-templater/hooks/hook.rb +8 -8
  10. data/lib/simple-templater/version.rb +1 -1
  11. data/lib/simple-templater.rb +2 -2
  12. data/script/spec +10 -2
  13. data/simple-templater.gemspec +9 -0
  14. data/simple-templater.pre.gemspec +10 -1
  15. data/spec/simple-templater/helpers_spec.rb +2 -2
  16. data/spec/simple-templater/hooks/hook_spec.rb +1 -0
  17. data/spec/simple-templater/hooks/postprocess/git_repository_spec.rb +1 -0
  18. data/spec/simple-templater_spec.rb +8 -0
  19. data/spec/spec_helper.rb +0 -33
  20. data/stubs/project/content/%name%.gemspec.rbt +1 -1
  21. data/tasks/gem.rake +1 -1
  22. data/tasks/spec.rake +3 -3
  23. data/vendor/abstract/ChangeLog +3 -0
  24. data/vendor/abstract/README.txt +57 -0
  25. data/vendor/abstract/abstract.gemspec +48 -0
  26. data/vendor/abstract/doc/classes/Kernel.html +134 -0
  27. data/vendor/abstract/doc/classes/Kernel.src/M000002.html +24 -0
  28. data/vendor/abstract/doc/classes/Module.html +140 -0
  29. data/vendor/abstract/doc/classes/Module.src/M000001.html +20 -0
  30. data/vendor/abstract/doc/created.rid +1 -0
  31. data/vendor/abstract/doc/files/README_txt.html +173 -0
  32. data/vendor/abstract/doc/files/lib/abstract_rb.html +137 -0
  33. data/vendor/abstract/doc/fr_class_index.html +28 -0
  34. data/vendor/abstract/doc/fr_file_index.html +28 -0
  35. data/vendor/abstract/doc/fr_method_index.html +28 -0
  36. data/vendor/abstract/doc/index.html +24 -0
  37. data/vendor/abstract/doc/rdoc-style.css +208 -0
  38. data/vendor/abstract/lib/abstract.rb +75 -0
  39. data/vendor/abstract/setup.rb +1331 -0
  40. data/vendor/abstract/test/test.rb +91 -0
  41. metadata +31 -4
  42. data/Gemfile +0 -12
  43. data/lib/simple-templater/core_exts.rb +0 -99
data/README.textile CHANGED
@@ -33,11 +33,11 @@ You would probably want to use simple templater for your own generators, here is
33
33
  <pre>
34
34
  require "simple-templater"
35
35
 
36
- templater = SimpleTemplater.new(:rango)
36
+ templater = SimpleTemplater.new(:rango, SimpleTemplater.logger)
37
37
  if defined?(Gem) # try to find generators installed as gems
38
38
  templater.discovery!
39
39
  else
40
- warn "Running without RubyGems which means SimpleTemplater won't be able to find generators distributed as a Gems."
40
+ SimpleTemplater.logger.warn "Running without RubyGems which means SimpleTemplater won't be able to find generators distributed as a Gems."
41
41
  # register generators just for rango
42
42
  load File.join(File.dirname(__FILE__), "..", "simple-templater.scope")
43
43
  end
data/Rakefile CHANGED
@@ -3,23 +3,14 @@
3
3
  require_relative "lib/simple-templater/version"
4
4
 
5
5
  # ENV setup for external commands
6
- ENV["RUBYLIB"] = Dir["gems/gems/*/lib"].join(":")
7
- $LOAD_PATH.clear.push(*Dir["gems/gems/*/lib"])
8
-
9
- # encoding
10
- Encoding.default_internal = "utf-8"
11
- Encoding.default_external = "utf-8"
6
+ ENV["RUBYLIB"] = Dir["vendor/*/lib"].join(":")
7
+ $LOAD_PATH.clear.push(*Dir["vendor/*/lib"])
12
8
 
13
9
  # http://support.runcoderun.com/faqs/builds/how-do-i-run-rake-with-trace-enabled
14
10
  Rake.application.options.trace = true
15
11
 
16
- task :bundle do
17
- # NOTE: the sense of the checkout is to avoid overwriting our changes in scripts
18
- exec "gem bundle --cached && git checkout script"
19
- end
20
-
21
12
  # default task for RunCodeRun.com
22
- task :default => [:bundle, :spec]
13
+ task :default => ["submodules:init", :spec]
23
14
 
24
15
  # load tasks
25
16
  Dir["tasks/*.rake"].each do |taskfile|
data/deps.rip CHANGED
@@ -3,4 +3,5 @@
3
3
  # Syntax:
4
4
  # repository [tag or commit to install]
5
5
  git://github.com/botanicus/cli.git 76a7985d78673426814017d6a1d6ebec2ba1bcc8
6
+ git://github.com/botanicus/rubyexts.git 41ef70523b4b6a19cac52e6c024330103faef993
6
7
  git://github.com/genki/erubis.git b4fc63f1e75574676707768680ad72c83e77a001
data/deps.rip.rbe CHANGED
@@ -3,4 +3,5 @@
3
3
  # Syntax:
4
4
  # repository [tag or commit to install]
5
5
  git://github.com/botanicus/cli.git #{commits["cli"]}
6
+ git://github.com/botanicus/rubyexts.git #{commits["rubyexts"]}
6
7
  git://github.com/genki/erubis.git #{commits["erubis"]}
@@ -21,7 +21,7 @@ class SimpleTemplater
21
21
  class Builder
22
22
  def self.create(*args)
23
23
  templater = self.new(*args)
24
- puts("Context: #{templater.context.inspect}")
24
+ SimpleTemplater.logger.debug("Context: #{templater.context.inspect}")
25
25
  templater.create
26
26
  end
27
27
 
@@ -74,7 +74,7 @@ class SimpleTemplater
74
74
  end
75
75
 
76
76
  def proceed_file(template, file, local_context = Hash.new)
77
- puts("Local context: #{local_context.inspect}") unless local_context.empty?
77
+ SimpleTemplater.logger.debug("Local context: #{local_context.inspect}") unless local_context.empty?
78
78
  FileUtils.mkdir_p(File.dirname(file))
79
79
 
80
80
  if File.directory?(template)
@@ -84,9 +84,9 @@ class SimpleTemplater
84
84
 
85
85
  if template.end_with?(".rbt")
86
86
  if File.exist?(file)
87
- puts("[RETEMPLATE] #{file} (from #{template})")
87
+ SimpleTemplater.logger.debug("[RETEMPLATE] #{file} (from #{template})")
88
88
  else
89
- puts("[TEMPLATE] #{file} (from #{template})")
89
+ SimpleTemplater.logger.debug("[TEMPLATE] #{file} (from #{template})")
90
90
  end
91
91
  File.open(file, "w") do |file|
92
92
  eruby = Erubis::Eruby.new(File.read(template))
@@ -95,7 +95,7 @@ class SimpleTemplater
95
95
  begin
96
96
  output = eruby.evaluate(context)
97
97
  rescue Exception => exception
98
- abort "Exception occured in template #{template}: #{exception.message}"
98
+ SimpleTemplater.logger.error("Exception occured in template #{template}: #{exception.message}")
99
99
  end
100
100
  file.print(output)
101
101
  end
@@ -104,10 +104,10 @@ class SimpleTemplater
104
104
  # do nothing
105
105
  # it shouldn't get here never, we have File.directory? above
106
106
  elsif File.file?(file)
107
- puts("[RECOPY] #{file} (from #{template})")
107
+ SimpleTemplater.logger.debug("[RECOPY] #{file} (from #{template})")
108
108
  FileUtils.cp_f(template, file)
109
109
  else
110
- puts("[COPY] #{file} (from #{template})")
110
+ SimpleTemplater.logger.debug("[COPY] #{file} (from #{template})")
111
111
  FileUtils.cp(template, file)
112
112
  end
113
113
  end
@@ -65,9 +65,9 @@ class SimpleTemplater
65
65
  if self.full? && Dir.exist?(self.target) # has to run after setup.rb hook, because setup.rb can manipulate with target
66
66
  raise TargetAlreadyExist, "#{self.target} already exist, aborting."
67
67
  end
68
- puts("[#{self.name} generator] Running before hooks #{self.before_hooks.inspect}")
68
+ SimpleTemplater.logger.info("[#{self.name} generator] Running before hooks #{self.before_hooks.inspect}")
69
69
  self.run_hooks(:before)
70
- puts("[#{self.name} generator] Creating #{@target} (#{self.config.type})")
70
+ SimpleTemplater.logger.info("[#{self.name} generator] Creating #{@target} (#{self.config.type})")
71
71
  if self.flat?
72
72
  # flat/content/flat.ru.rbt
73
73
  # flat/content/%user%.rb
@@ -85,9 +85,9 @@ class SimpleTemplater
85
85
 
86
86
  def run_hook(basename)
87
87
  if File.exist?(hook = file(basename))
88
- puts("Running #{basename} hook")
88
+ SimpleTemplater.logger.info("Running #{basename} hook")
89
89
  DSL.new(self).instance_eval(File.read(hook))
90
- puts("Finished")
90
+ SimpleTemplater.logger.info("Finished")
91
91
  end
92
92
  rescue Exception => exception
93
93
  abort "Exception #{exception.inspect} occured during running #{basename}\n#{exception.backtrace.join("\n")}"
@@ -118,7 +118,7 @@ class SimpleTemplater
118
118
  metadata_file = File.join(self.path, "metadata.yml")
119
119
  YAML::load_file(metadata_file)
120
120
  rescue Errno::ENOENT
121
- abort "SimpleTemplater expected '#{metadata_file}'"
121
+ SimpleTemplater.logger.fatal("SimpleTemplater expected '#{metadata_file}'")
122
122
  end
123
123
 
124
124
  def config
@@ -13,7 +13,7 @@ class SimpleTemplater
13
13
  @name = name.to_sym
14
14
  @paths = check_paths(paths)
15
15
  if File.directory?(self.custom)
16
- puts "Added custom generator from #{self.custom}"
16
+ SimpleTemplater.logger.info "Added custom generator from #{self.custom}"
17
17
  @paths.unshift(self.custom)
18
18
  end
19
19
  end
@@ -1,16 +1,17 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  require "rbconfig"
4
+ require "rubyexts/platform"
4
5
 
5
6
  class SimpleTemplater
6
7
  module Helpers
7
8
  extend self
8
9
 
9
10
  def shebang(executable = rubypath, *args)
10
- if RUBY_PLATFORM.match(/darwin/)
11
- self.env_shebang(executable, args)
12
- else
11
+ if RubyExts::Platform.linux?
13
12
  self.plain_shebang(executable, args)
13
+ else
14
+ self.env_shebang(executable, args)
14
15
  end
15
16
  end
16
17
 
@@ -1,5 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require "rubyexts/string" # String#snake_case
4
+ require "rubyexts/class"
3
5
  require "simple-templater/argv_parsing"
4
6
 
5
7
  # When generator runs:
@@ -22,26 +24,24 @@ class SimpleTemplater
22
24
  end
23
25
 
24
26
  class Hook
25
- def self.hooks
26
- @@hooks ||= Array.new
27
- end
28
-
27
+ cattr_reader :hooks
28
+ @@hooks ||= Array.new
29
29
  def self.find(key)
30
- self.hooks.find { |hook| hook.name.split("::").last.snake_case.to_sym == key }
30
+ @@hooks.find { |hook| hook.name.split("::").last.snake_case.to_sym == key }
31
31
  end
32
32
 
33
33
  def self.inherited(klass)
34
- self.hooks.push(klass)
34
+ @@hooks.push(klass)
35
35
  end
36
36
 
37
37
  def self.invoke(context)
38
38
  hook = self.new(context)
39
39
  if hook.will_run?
40
- puts("Running hook #{self}")
40
+ SimpleTemplater.logger.info("Running hook #{self}")
41
41
  hook.run
42
42
  return true
43
43
  else
44
- puts("Skipping hook #{self}")
44
+ SimpleTemplater.logger.info("Skipping hook #{self}")
45
45
  return false
46
46
  end
47
47
  end
@@ -3,5 +3,5 @@
3
3
  # NOTE: Do not edit this file manually, this
4
4
  # file is regenerated by task rake version:increase
5
5
  module SimpleTemplater
6
- VERSION ||= "0.0.1.4"
6
+ VERSION ||= "0.0.1.3"
7
7
  end
@@ -1,7 +1,7 @@
1
- #!/usr/bin/env ruby -Ivendor/erubis/lib:vendor/abstract/lib:vendor/cli/lib
1
+ #!/usr/bin/env ruby -Ivendor/rubyexts/lib:vendor/erubis/lib:vendor/abstract/lib:vendor/cli/lib
2
2
  # encoding: utf-8
3
3
 
4
- require "simple-templater/core_exts"
4
+ require "rubyexts"
5
5
  require "simple-templater/discoverer"
6
6
  require "simple-templater/generator_set"
7
7
 
data/script/spec CHANGED
@@ -1,6 +1,14 @@
1
1
  #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+
4
+ Dir[File.join(File.dirname(__FILE__), "..", "vendor", "*")].each do |path|
5
+ if File.directory?(path) && Dir["#{path}/*"].empty?
6
+ warn "Dependency #{File.basename(path)} in vendor seems to be empty. Run git submodule init && git submodule update to checkout it."
7
+ elsif File.directory?(path) && File.directory?(File.join(path, "lib"))
8
+ $:.unshift File.join(path, "lib")
9
+ end
10
+ end
2
11
 
3
12
  ARGV.push("spec") if ARGV.empty?
4
13
 
5
- require File.join(File.dirname(__FILE__), "../gems/environment")
6
- load File.join(File.dirname(__FILE__), "../gems/gems/rspec-1.2.9/bin/spec")
14
+ load File.expand_path(File.join(File.dirname(__FILE__), "..", "vendor", "rspec", "bin", "spec"))
@@ -1,6 +1,14 @@
1
1
  #!/usr/bin/env gem build
2
2
  # encoding: utf-8
3
3
 
4
+ Dir[File.join(File.dirname(__FILE__), "vendor", "*")].each do |path|
5
+ if File.directory?(path) && Dir["#{path}/*"].empty?
6
+ warn "Dependency #{File.basename(path)} in vendor seems to be empty. Run git submodule init && git submodule update to checkout it."
7
+ elsif File.directory?(path) && File.directory?(File.join(path, "lib"))
8
+ $:.unshift File.join(path, "lib")
9
+ end
10
+ end
11
+
4
12
  # NOTE: we can't use require_relative because when we run gem build, it use eval for executing this file
5
13
  require File.join(File.dirname(__FILE__), "lib", "simple-templater", "version")
6
14
 
@@ -26,6 +34,7 @@ Gem::Specification.new do |s|
26
34
 
27
35
  # runtime dependencies
28
36
  s.add_dependency "cli"
37
+ s.add_dependency "rubyexts"
29
38
  s.add_dependency "erubis" # for generators
30
39
 
31
40
  # development dependencies
@@ -1,12 +1,20 @@
1
1
  #!/usr/bin/env gem build
2
2
  # encoding: utf-8
3
3
 
4
+ Dir[File.join(File.dirname(__FILE__), "vendor", "*")].each do |path|
5
+ if File.directory?(path) && Dir["#{path}/*"].empty?
6
+ warn "Dependency #{File.basename(path)} in vendor seems to be empty. Run git submodule init && git submodule update to checkout it."
7
+ elsif File.directory?(path) && File.directory?(File.join(path, "lib"))
8
+ $:.unshift File.join(path, "lib")
9
+ end
10
+ end
11
+
4
12
  # NOTE: we can't use require_relative because when we run gem build, it use eval for executing this file
5
13
  require File.join(File.dirname(__FILE__), "lib", "simple-templater", "version")
6
14
 
7
15
  Gem::Specification.new do |s|
8
16
  s.name = "simple-templater"
9
- s.version = '0.1.pre'
17
+ s.version = '0.2.pre'
10
18
  s.authors = ["Jakub Šťastný aka Botanicus"]
11
19
  s.homepage = "http://github.com/botanicus/simple-templater"
12
20
  s.summary = "SimpleTemplater is dead-simple solution for creating generators."
@@ -26,6 +34,7 @@ Gem::Specification.new do |s|
26
34
 
27
35
  # runtime dependencies
28
36
  s.add_dependency "cli"
37
+ s.add_dependency "rubyexts"
29
38
  s.add_dependency "erubis" # for generators
30
39
 
31
40
  # development dependencies
@@ -11,7 +11,7 @@ describe SimpleTemplater::Helpers do
11
11
  describe "#shebang" do
12
12
  include SimpleTemplater::Helpers
13
13
  before(:each) do
14
- #RubyExts::Platform.stub!(:linux?).and_return(true)
14
+ RubyExts::Platform.stub!(:linux?).and_return(true)
15
15
  end
16
16
 
17
17
  it "should generate shebang with path to executable on Linux" do
@@ -19,7 +19,7 @@ describe SimpleTemplater::Helpers do
19
19
  end
20
20
 
21
21
  it "should generate shebang with /usr/bin/env on other platforms" do
22
- #RubyExts::Platform.stub!(:linux?).and_return(false)
22
+ RubyExts::Platform.stub!(:linux?).and_return(false)
23
23
  shebang("ruby").should eql("#!/usr/bin/env ruby")
24
24
  end
25
25
 
@@ -2,6 +2,7 @@
2
2
 
3
3
  require "ostruct"
4
4
  require_relative "../../spec_helper"
5
+ require "rubyexts/capture_io"
5
6
  require "simple-templater/hooks/hook"
6
7
 
7
8
  # factories
@@ -1,6 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  require "fileutils"
4
+ require "rubyexts/capture_io"
4
5
  require_relative "../../../spec_helper"
5
6
  require "simple-templater/hooks/postprocess/git_repository"
6
7
 
@@ -47,6 +47,14 @@ describe SimpleTemplater do
47
47
  SimpleTemplater.scopes.should have_key(:local)
48
48
  end
49
49
  end
50
+
51
+ describe ".logger" do
52
+ it "should set default logger" do
53
+ [:info, :debug, :error, :fatal].each do |method|
54
+ SimpleTemplater.logger.should respond_to(method)
55
+ end
56
+ end
57
+ end
50
58
  end
51
59
  end
52
60
 
data/spec/spec_helper.rb CHANGED
@@ -6,39 +6,6 @@ $:.unshift(File.expand_path(File.join(SPEC_ROOT, "..", "lib")))
6
6
  require "spec" # so you can run ruby spec/rango/whatever_spec.rb
7
7
  # require "fakefs" # TODO: makes some troubles with rubyexts
8
8
 
9
- require "stringio"
10
-
11
- def STDOUT.capture(&block)
12
- before = self
13
- $stdout = StringIO.new
14
- block.call
15
- $stdout.rewind
16
- output = $stdout.read
17
- $stdout = before
18
- output
19
- end
20
-
21
- # @example STDOUT.capture { puts "hi" }
22
- # # => "hi"
23
- def STDERR.capture(&block)
24
- before = self
25
- $stderr = StringIO.new
26
- block.call
27
- $stderr.rewind
28
- output = $stderr.read
29
- $stderr = before
30
- output
31
- end
32
-
33
- # @example STDIN.capture("yes") { ask("Do you hear me?") }
34
- # # => "yes"
35
- def STDIN.capture(default, &block)
36
- STDIN.reopen "/dev/null" # so we don't get the fucking prompt
37
- STDIN.ungetbyte(default) # so the default value can be get by STDIN.getc & similar methods
38
- block.call
39
- # TODO: how I can get back the original STDIN?
40
- end
41
-
42
9
  module Spec
43
10
  module Matchers
44
11
  def match(expected)
@@ -26,7 +26,7 @@ Gem::Specification.new do |s|
26
26
  s.required_ruby_version = ::Gem::Requirement.new(">= 1.9")
27
27
 
28
28
  # runtime dependencies
29
- # s.add_dependency "my-gem"
29
+ # s.add_dependency "rubyexts"
30
30
 
31
31
  # development dependencies
32
32
  # use gem install rango --development if you want to install them
data/tasks/gem.rake CHANGED
@@ -12,7 +12,7 @@ namespace :build do
12
12
  content = File.read(gemspec)
13
13
  prename = "#{gemspec.split(".").first}.pre.gemspec"
14
14
  # 0.1.1 => 0.2
15
- version = SimpleTemplater::VERSION.sub(/^(\d+)\.(\d+).*$/) { "#$1.#{$2.to_i + 1}" }
15
+ version = SimpleTemplater::VERSION.sub(/^(\d+)\.(\d+\.){2}.*$/) { "#$1.#{$2.to_i + 1}" }
16
16
  puts "Current #{SimpleTemplater::VERSION} => #{version} pre"
17
17
  File.open(prename, "w") do |file|
18
18
  file.puts(content.gsub(/(\w+::VERSION)/, "'#{version}.pre'"))
data/tasks/spec.rake CHANGED
@@ -1,8 +1,8 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  desc "Run specs"
4
- task :spec, :spec do |task, args|
5
- exec "./script/spec --options spec/spec.opts #{args.spec || "spec"}"
4
+ task :spec, :path do |task, args|
5
+ exec "./script/spec --options spec/spec.opts #{args.path || "spec"}"
6
6
  end
7
7
 
8
8
  desc "Create stubs of all library files."
@@ -15,7 +15,7 @@ task "spec:stubs" do
15
15
  puts "Created #{specfile}"
16
16
  end
17
17
  end
18
- (Dir.glob("spec/simple-templater/**/*.rb") + ["spec/simple-teplater_spec.rb"]).each do |file|
18
+ (Dir.glob("spec/simple-templater/**/*.rb") + ["spec/simple-templater_spec.rb"]).each do |file|
19
19
  libfile = file.sub(/spec/, "lib").sub(/_spec\.rb$/, '.rb')
20
20
  if !File.exist?(libfile) && File.zero?(file)
21
21
  %x[rm #{file}]
@@ -0,0 +1,3 @@
1
+ : release 1.0.0 (2006-03-12)
2
+ - first release (1.0.0)
3
+
@@ -0,0 +1,57 @@
1
+ = README
2
+
3
+ revision:: $Rev: 1 $
4
+ release:: $Release: 1.0.0 $
5
+ copyright:: copyright(c) 2006 kuwata-lab.com all rights reserved.
6
+
7
+
8
+ == Introduction
9
+
10
+ 'abstract.rb' is a library which enable you to define abstract method in Ruby.
11
+
12
+ The followings are examples:
13
+
14
+ ## example1. (shorter notation)
15
+ require 'rubygems' # if installed with 'gem install'
16
+ require 'abstract'
17
+ class Foo
18
+ abstract_method 'arg1, arg2=""', :method1, :method2, :method3
19
+ end
20
+
21
+ ## example2. (RDoc friendly notation)
22
+ require 'rubygems' # if installed with 'gem install'
23
+ require 'abstract'
24
+ class Bar
25
+ # ... method1 description ...
26
+ def method1(arg1, arg2="")
27
+ not_implemented
28
+ end
29
+ # ... method2 description ...
30
+ def method2(arg1, arg2="")
31
+ not_implemented
32
+ end
33
+ end
34
+
35
+
36
+ Abstract method makes your code more descriptive.
37
+ It is useful even for dynamic language such as Ruby.
38
+
39
+
40
+ == Installation
41
+
42
+
43
+ * Type 'gem install -r abstract' with root account if you have installed RubyGems.
44
+
45
+ * Or type 'ruby setup.rb' with root account if you can be root account.
46
+
47
+ * Or copy lib/abstract.rb into proper directory such as '/usr/local/lib/ruby/site_ruby'.
48
+
49
+
50
+ == License
51
+
52
+ Ruby's
53
+
54
+
55
+ == Copyright
56
+
57
+ copyright(c) 2006 kuwata-lab.com all rights reserved.
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ ###
4
+ ### RubyGems Specification file for abstract.rb
5
+ ###
6
+ ### $Rev: 1 $
7
+ ### $Release: 1.0.0 $
8
+ ### copyright(c) 2006 kuwata-lab.com all rights reserved.
9
+ ###
10
+
11
+ require 'rubygems'
12
+
13
+ spec = Gem::Specification.new do |s|
14
+ ## package information
15
+ s.name = 'abstract'
16
+ s.author = 'makoto kuwata'
17
+ s.version = ("$Release: 1.0.0 $" =~ /[\.\d]+/) && $&
18
+ s.platform = Gem::Platform::RUBY
19
+ s.homepage = 'http://rubyforge.org/projects/abstract'
20
+ s.summary = "a library which enable you to define abstract method in Ruby"
21
+ s.description = <<-'END'
22
+ 'abstract.rb' is a library which enable you to define abstract method in Ruby.
23
+ END
24
+
25
+ ## files
26
+ files = []
27
+ files += Dir.glob('lib/**/*')
28
+ files += Dir.glob('test/**/*')
29
+ files += %w[README.txt ChangeLog setup.rb abstract.gemspec]
30
+ #s.files = files.delete_if { |path| path =~ /\.svn/ }
31
+ s.files = files
32
+ s.test_file = 'test/test.rb'
33
+ end
34
+
35
+ # Quick fix for Ruby 1.8.3 / YAML bug (thanks to Ross Bamford)
36
+ if (RUBY_VERSION == '1.8.3')
37
+ def spec.to_yaml
38
+ out = super
39
+ out = '--- ' + out unless out =~ /^---/
40
+ out
41
+ end
42
+ end
43
+
44
+ if $0 == __FILE__
45
+ Gem::manage_gems
46
+ Gem::Builder.new(spec).build
47
+ end
48
+