public
Description: Resource-oriented open source Ruby framework for Web apps.
Homepage: http://rubywaves.com/
Clone URL: git://github.com/dyoder/waves.git
waves / Rakefile
100644 145 lines (129 sloc) 4.806 kb
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
134
135
136
137
138
139
140
141
142
143
144
145
begin
  $: << 'lib'; %w( rubygems rake/testtask rake/rdoctask rake/gempackagetask ).each { |dep| require dep }
rescue LoadError => e
  puts "LoadError: you might want to try running the setup task first."
  raise e
end
 
runtime_deps = { :rack => '~> 0.4', 'rack-cache' => '~> 0.2',
  :extensions => '~> 0.6', :english => '~> 0.3',
  :live_console => '~> 0.2', :functor => '>= 0.5.0',
  :rakegen => '~> 0.6', :autocode => '>= 1.0.0',
  :filebase => '>= 0.3.5', :RedCloth => '~> 4.0',
  :choice => '~> 0.1', :metaid => '~> 1.0', :daemons => '~>1.0.10',
}
  
developer_deps = { :bacon => '~> 1.0', :facon => '~> 0.4' }
 
gem = Gem::Specification.new do |gem|
  gem.name = "waves"
  gem.rubyforge_project = "waves"
  gem.summary = "Open-source framework for building Ruby-based Web applications."
  gem.version = File.read('doc/VERSION')
  gem.homepage = 'http://rubywaves.com'
  gem.author = 'Dan Yoder'
  gem.email = 'dan@zeraweb.com'
  gem.platform = Gem::Platform::RUBY
  gem.required_ruby_version = '>= 1.8.6'
  runtime_deps.each { | name, version | gem.add_runtime_dependency( name.to_s, version ) }
  developer_deps.each { |name, version| gem.add_development_dependency( name.to_s, version ) }
  gem.files = FileList[ 'templates/**/*', 'templates/**/.gitignore', 'lib/**/*.rb',
    'lib/**/*.erb', "{doc,samples,templates,test}/**/*" ]
  gem.has_rdoc = true
  gem.bindir = 'bin'
  gem.executables = [ 'waves' ]
end
 
desc "Create the waves gem"
task( :package => [ :clean, :rdoc, :gemspec ] ) { Gem::Builder.new( gem ).build }
 
desc "Clean build artifacts"
task( :clean ) { FileUtils.rm_rf Dir['*.gem', '*.gemspec'] }
 
desc "Rebuild and Install Waves as a gem"
task( :install => [ :package, :install_gem ] )
 
desc "Install Waves as a local gem"
task( :install_gem ) do
    require 'rubygems/installer'
    Dir['*.gem'].each do |gem|
      Gem::Installer.new(gem).install
    end
end
 
desc "create .gemspec file (useful for github)"
task :gemspec do
  filename = "#{gem.name}.gemspec"
  File.open(filename, "w") do |f|
    f.puts gem.to_ruby
  end
end
 
desc "create the gemspec for waves-stable"
task "stable:gemspec" => :gemspec do
  version = Time.now.utc.strftime('%Y.%m.%d')
  File.open("waves.gemspec", "r") do |w|
    File.open("stable.gemspec", "w") do |s|
      w.each_line do |line|
        line.sub!('s.name = %q{waves}', 's.name = %q{stable}')
        line.sub!(/s.version = \"[\d.]+\"/, "s.version = \"#{version}\"")
        s.print line
      end
    end
  end
end
 
desc "create the gemspec for waves-edge"
# Suggested usage:
# create a tracking branch for waves/edge
# after generating gemspec and committing, do
# git push edge_remote edge_track:master
task "edge:gemspec" => :gemspec do
  version = Time.now.utc.strftime('%Y.%m.%d.%H.%M')
  File.open("waves.gemspec", "r") do |w|
    File.open("edge.gemspec", "w") do |s|
      w.each_line do |line|
        line.sub!('s.name = %q{waves}', 's.name = %q{edge}')
        line.sub!(/s.version = \"[\d.]+\"/, "s.version = \"#{version}\"")
        s.print line
      end
    end
  end
end
 
desc "Publish to RubyForge"
task( :publish => [ :package, :rdoc_publish ] ) do
  `rubyforge login`
  `rubyforge add_release #{gem.name} #{gem.name} #{gem.version} #{gem.name}-#{gem.version}.gem`
end
 
task( :rdoc_publish => :rdoc ) do
  path = "/var/www/gforge-projects/#{gem.name}/"
  `rsync -a --delete ./doc/rdoc/ dyoder67@rubyforge.org:#{path}`
end
 
Rake::RDocTask.new do |rdoc|
  rdoc.rdoc_dir = 'doc/rdoc'
  rdoc.options << '--line-numbers' << '--inline-source' << '--main' << 'doc/README'
  rdoc.rdoc_files.add [ 'lib/**/*.rb', 'doc/*' ]
end
 
# based on a blog post by Assaf Arkin
desc "Set up dependencies so you can work from source"
task( :setup ) do
  gems = Gem::SourceIndex.from_installed_gems
  # Runtime dependencies from the Gem's spec.
  dependencies = gem.dependencies
  # Add build-time dependencies, like this:
  dependencies.each do |dep|
    if gems.find_name(dep.name, dep.version_requirements).empty?
      puts "Installing dependency: #{dep}"
      begin
        require 'rubygems/dependency_installer'
        if Gem::RubyGemsVersion =~ /^1\.0\./
          Gem::DependencyInstaller.new(dep.name, dep.version_requirements).install
        else
          # as of 1.1.0
          Gem::DependencyInstaller.new.install(dep.name, dep.version_requirements)
        end
      rescue LoadError # < rubygems 1.0.1
        require 'rubygems/remote_installer'
        Gem::RemoteInstaller.new.install(dep.name, dep.version_requirements)
      end
    end
  end
  system(cmd = "chmod +x bin/waves*")
  puts "rake setup task completed... happy hacking!"
end
 
desc "Run all specifications and tests."
task( :test ) do
  paths = FileList['test/**/*.rb'].exclude('**/helpers.rb')
  puts command = "bacon #{paths.join(' ')}"
  system command
end