public
Description: Development repo for the Waves web application framework
Homepage: http://www.rubywaves.com
Clone URL: git://github.com/waves/edge.git
dyoder (author)
Fri Nov 06 11:10:21 -0800 2009
commit  cf3e7269ad0820fb8e178333fe448cd093ba87e1
tree    f54e4e18c8e01dc7d80a8cc7158ca590ccc167b6
parent  4cbe0d554267cbf0e1594ecdd57c06f396066129
edge / Rakefile
100644 153 lines (133 sloc) 4.923 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
146
147
148
149
150
151
152
153
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 = YAML::load_file( 'dependencies.yml' )
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
 
# 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?
      if dep.name =~ /spicycode-micronaut/
        puts "\n\n***\nYou will need to install micronaut by hand.\n # gem sources -a http://gems.github.com\n # (sudo) gem install spicycode- micronaut\n\n"
        raise LoadError, "Required dependency 'micronaut' missing. Install by hand through github gem."
      end
 
      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
 
namespace :specs do
  require "rubygems"
    require "micronaut/rake_task"
 
  # Sneaky hidy.
  desc "Run all specs."
  Micronaut::RakeTask.new :run do |t|
   t.pattern = "spec/**/*_spec.rb"
  end
end
 
desc "Run all old-style tests and specs under test/"
task( :test ) do
  paths = FileList['test/**/*.rb'].exclude('**/helpers.rb')
  puts command = "bacon #{paths.join(' ')}"
  system command
end
 
desc "Run all specs and tests."
task :spec => %w[ test specs:run ]
 
 
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
 
task( :rdoc_publish => :rdoc ) do
  path = "/var/www/gforge-projects/#{gem.name}/"
  `rsync -a --delete ./doc/rdoc/ dyoder67@rubyforge.org:#{path}`
end