lockdown 0.5.22 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +11 -9
- data/Rakefile +27 -3
- data/app_generators/lockdown/templates/init.rb +4 -3
- data/bin/lockdown +0 -2
- data/lib/lockdown/classy-inheritance.rb +11 -190
- data/lib/lockdown/controller.rb +49 -221
- data/lib/lockdown/database.rb +108 -0
- data/lib/lockdown/frameworks/merb/controller.rb +59 -0
- data/lib/lockdown/frameworks/merb/view.rb +30 -0
- data/lib/lockdown/frameworks/merb.rb +74 -0
- data/lib/lockdown/frameworks/rails/controller.rb +110 -0
- data/lib/lockdown/frameworks/rails/view.rb +54 -0
- data/lib/lockdown/frameworks/rails.rb +93 -0
- data/lib/lockdown/helper.rb +27 -20
- data/lib/lockdown/orms/active_record.rb +66 -0
- data/lib/lockdown/orms/data_mapper.rb +68 -0
- data/lib/lockdown/rights.rb +208 -0
- data/lib/lockdown/session.rb +39 -0
- data/lib/lockdown/system.rb +54 -352
- data/lib/lockdown/version.rb +2 -2
- data/lib/lockdown.rb +24 -135
- metadata +30 -21
- data/README +0 -0
- data/config/hoe.rb +0 -74
- data/config/requirements.rb +0 -15
- data/lib/lockdown/controller_inspector.rb +0 -98
- data/lib/lockdown/model.rb +0 -37
- data/lib/lockdown/view.rb +0 -84
- data/tasks/deployment.rake +0 -34
- data/tasks/environment.rake +0 -7
- data/tasks/website.rake +0 -17
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lockdown
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Stone
|
@@ -9,18 +9,28 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-11-15 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
16
|
+
name: classy-inheritance
|
17
17
|
type: :runtime
|
18
18
|
version_requirement:
|
19
19
|
version_requirements: !ruby/object:Gem::Requirement
|
20
20
|
requirements:
|
21
21
|
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version:
|
23
|
+
version: 0.6.2
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: newgem
|
27
|
+
type: :development
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.1.0
|
24
34
|
version:
|
25
35
|
- !ruby/object:Gem::Dependency
|
26
36
|
name: hoe
|
@@ -30,9 +40,9 @@ dependencies:
|
|
30
40
|
requirements:
|
31
41
|
- - ">="
|
32
42
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.
|
43
|
+
version: 1.8.0
|
34
44
|
version:
|
35
|
-
description:
|
45
|
+
description: Lockdown is a authentication/authorization system for RubyOnRails. (Merb compatibility coming soon). For more information please visit stonean.com
|
36
46
|
email:
|
37
47
|
- andy@stonean.com
|
38
48
|
executables:
|
@@ -51,7 +61,6 @@ files:
|
|
51
61
|
- License.txt
|
52
62
|
- Manifest.txt
|
53
63
|
- PostInstall.txt
|
54
|
-
- README
|
55
64
|
- README.txt
|
56
65
|
- Rakefile
|
57
66
|
- app_generators/lockdown/USAGE
|
@@ -59,17 +68,23 @@ files:
|
|
59
68
|
- app_generators/lockdown/templates/init.rb
|
60
69
|
- app_generators/lockdown/templates/session.rb
|
61
70
|
- bin/lockdown
|
62
|
-
- config/hoe.rb
|
63
|
-
- config/requirements.rb
|
64
71
|
- lib/lockdown.rb
|
65
72
|
- lib/lockdown/classy-inheritance.rb
|
66
73
|
- lib/lockdown/controller.rb
|
67
|
-
- lib/lockdown/
|
74
|
+
- lib/lockdown/database.rb
|
75
|
+
- lib/lockdown/frameworks/merb.rb
|
76
|
+
- lib/lockdown/frameworks/merb/controller.rb
|
77
|
+
- lib/lockdown/frameworks/merb/view.rb
|
78
|
+
- lib/lockdown/frameworks/rails.rb
|
79
|
+
- lib/lockdown/frameworks/rails/controller.rb
|
80
|
+
- lib/lockdown/frameworks/rails/view.rb
|
68
81
|
- lib/lockdown/helper.rb
|
69
|
-
- lib/lockdown/
|
82
|
+
- lib/lockdown/orms/active_record.rb
|
83
|
+
- lib/lockdown/orms/data_mapper.rb
|
84
|
+
- lib/lockdown/rights.rb
|
85
|
+
- lib/lockdown/session.rb
|
70
86
|
- lib/lockdown/system.rb
|
71
87
|
- lib/lockdown/version.rb
|
72
|
-
- lib/lockdown/view.rb
|
73
88
|
- rails_generators/lockdown/USAGE
|
74
89
|
- rails_generators/lockdown/lockdown_generator.rb
|
75
90
|
- rails_generators/lockdown/templates/app/controllers/permissions_controller.rb
|
@@ -109,9 +124,6 @@ files:
|
|
109
124
|
- script/generate
|
110
125
|
- script/txt2html
|
111
126
|
- setup.rb
|
112
|
-
- tasks/deployment.rake
|
113
|
-
- tasks/environment.rake
|
114
|
-
- tasks/website.rake
|
115
127
|
- test/test_generator_helper.rb
|
116
128
|
- test/test_helper.rb
|
117
129
|
- test/test_lockdown.rb
|
@@ -125,11 +137,8 @@ files:
|
|
125
137
|
- website/stylesheets/screen.css
|
126
138
|
- website/template.html.erb
|
127
139
|
has_rdoc: true
|
128
|
-
homepage: http://lockdown
|
129
|
-
post_install_message:
|
130
|
-
|
131
|
-
For more information on lockdown, see http://stonean.com
|
132
|
-
|
140
|
+
homepage: http://stonean.com/wiki/lockdown
|
141
|
+
post_install_message: PostInstall.txt
|
133
142
|
rdoc_options:
|
134
143
|
- --main
|
135
144
|
- README.txt
|
@@ -153,7 +162,7 @@ rubyforge_project: lockdown
|
|
153
162
|
rubygems_version: 1.2.0
|
154
163
|
signing_key:
|
155
164
|
specification_version: 2
|
156
|
-
summary:
|
165
|
+
summary: Lockdown is a authentication/authorization system for RubyOnRails
|
157
166
|
test_files:
|
158
167
|
- test/test_generator_helper.rb
|
159
168
|
- test/test_helper.rb
|
data/README
DELETED
File without changes
|
data/config/hoe.rb
DELETED
@@ -1,74 +0,0 @@
|
|
1
|
-
require 'lockdown/version'
|
2
|
-
|
3
|
-
AUTHOR = 'Andrew Stone' # can also be an array of Authors
|
4
|
-
EMAIL = "andy@stonean.com"
|
5
|
-
DESCRIPTION = "Authorization/Authentication system for RubyOnRails"
|
6
|
-
GEM_NAME = 'lockdown' # what ppl will type to install your gem
|
7
|
-
RUBYFORGE_PROJECT = 'lockdown' # The unix name for your project
|
8
|
-
HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
|
9
|
-
DOWNLOAD_PATH = "http://rubyforge.org/projects/#{RUBYFORGE_PROJECT}"
|
10
|
-
EXTRA_DEPENDENCIES = [
|
11
|
-
['rubigen', '>=1.3.2']
|
12
|
-
# ['activesupport', '>= 1.3.1']
|
13
|
-
] # An array of rubygem dependencies [name, version]
|
14
|
-
|
15
|
-
@config_file = "~/.rubyforge/user-config.yml"
|
16
|
-
@config = nil
|
17
|
-
RUBYFORGE_USERNAME = "astone"
|
18
|
-
def rubyforge_username
|
19
|
-
unless @config
|
20
|
-
begin
|
21
|
-
@config = YAML.load(File.read(File.expand_path(@config_file)))
|
22
|
-
rescue
|
23
|
-
puts <<-EOS
|
24
|
-
ERROR: No rubyforge config file found: #{@config_file}
|
25
|
-
Run 'rubyforge setup' to prepare your env for access to Rubyforge
|
26
|
-
- See http://newgem.rubyforge.org/rubyforge.html for more details
|
27
|
-
EOS
|
28
|
-
exit
|
29
|
-
end
|
30
|
-
end
|
31
|
-
RUBYFORGE_USERNAME.replace @config["username"]
|
32
|
-
end
|
33
|
-
|
34
|
-
|
35
|
-
REV = nil
|
36
|
-
# UNCOMMENT IF REQUIRED:
|
37
|
-
# REV = YAML.load(`svn info`)['Revision']
|
38
|
-
VERS = Lockdown::VERSION::STRING + (REV ? ".#{REV}" : "")
|
39
|
-
RDOC_OPTS = ['--quiet', '--title', 'lockdown documentation',
|
40
|
-
"--opname", "index.html",
|
41
|
-
"--line-numbers",
|
42
|
-
"--main", "README",
|
43
|
-
"--inline-source"]
|
44
|
-
|
45
|
-
class Hoe
|
46
|
-
def extra_deps
|
47
|
-
@extra_deps.reject! { |x| Array(x).first == 'hoe' }
|
48
|
-
@extra_deps
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
# Generate all the Rake tasks
|
53
|
-
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
54
|
-
$hoe = Hoe.new(GEM_NAME, VERS) do |p|
|
55
|
-
p.developer(AUTHOR, EMAIL)
|
56
|
-
p.description = DESCRIPTION
|
57
|
-
p.summary = DESCRIPTION
|
58
|
-
p.url = HOMEPATH
|
59
|
-
p.rubyforge_name = RUBYFORGE_PROJECT if RUBYFORGE_PROJECT
|
60
|
-
p.test_globs = ["test/**/test_*.rb"]
|
61
|
-
p.clean_globs |= ['**/.*.sw?', '*.gem', '.config', '**/.DS_Store'] #An array of file patterns to delete on clean.
|
62
|
-
|
63
|
-
# == Optional
|
64
|
-
p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
|
65
|
-
p.extra_deps = EXTRA_DEPENDENCIES
|
66
|
-
|
67
|
-
#p.spec_extras = {} # A hash of extra values to set in the gemspec.
|
68
|
-
end
|
69
|
-
|
70
|
-
CHANGES = $hoe.paragraphs_of('History.txt', 0..1).join("\\n\\n")
|
71
|
-
PATH = (RUBYFORGE_PROJECT == GEM_NAME) ? RUBYFORGE_PROJECT : "#{RUBYFORGE_PROJECT}/#{GEM_NAME}"
|
72
|
-
$hoe.remote_rdoc_dir = File.join(PATH.gsub(/^#{RUBYFORGE_PROJECT}\/?/,''), 'rdoc')
|
73
|
-
$hoe.rsync_args = '-av --delete --ignore-errors'
|
74
|
-
$hoe.spec.post_install_message = File.open(File.dirname(__FILE__) + "/../PostInstall.txt").read rescue ""
|
data/config/requirements.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
require 'fileutils'
|
2
|
-
include FileUtils
|
3
|
-
|
4
|
-
require 'rubygems'
|
5
|
-
%w[rake hoe newgem rubigen].each do |req_gem|
|
6
|
-
begin
|
7
|
-
require req_gem
|
8
|
-
rescue LoadError
|
9
|
-
puts "This Rakefile requires the '#{req_gem}' RubyGem."
|
10
|
-
puts "Installation: gem install #{req_gem} -y"
|
11
|
-
exit
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
$:.unshift(File.join(File.dirname(__FILE__), %w[.. lib]))
|
@@ -1,98 +0,0 @@
|
|
1
|
-
module Lockdown
|
2
|
-
module ControllerInspector
|
3
|
-
def self.included(base)
|
4
|
-
if Lockdown.merb_app?
|
5
|
-
base.send :include, Lockdown::ControllerInspector::Merb
|
6
|
-
elsif Lockdown.rails_app?
|
7
|
-
base.send :include, Lockdown::ControllerInspector::Rails
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
module Core
|
12
|
-
include Lockdown::Helper
|
13
|
-
#
|
14
|
-
# *syms is a splat of controller symbols,
|
15
|
-
# e.g all_methods(:users, :authors, :books)
|
16
|
-
#
|
17
|
-
def all_methods(*syms)
|
18
|
-
syms.collect{ |sym| paths_for(sym) }.flatten
|
19
|
-
end
|
20
|
-
|
21
|
-
#
|
22
|
-
# controller name (sym) and a splat of methods to
|
23
|
-
# exclude from result
|
24
|
-
#
|
25
|
-
# All user methods except destroy:
|
26
|
-
# e.g all_except_methods(:users, :destroy)
|
27
|
-
#
|
28
|
-
def all_except_methods(sym, *methods)
|
29
|
-
paths_for(sym) - paths_for(sym, *methods)
|
30
|
-
end
|
31
|
-
|
32
|
-
#
|
33
|
-
# controller name (sym) and a splat of methods to
|
34
|
-
# to build the result
|
35
|
-
#
|
36
|
-
# Only user methods index (list), show (good for readonly access):
|
37
|
-
# e.g only_methods(:users, :index, :show)
|
38
|
-
#
|
39
|
-
def only_methods(sym, *methods)
|
40
|
-
paths_for(sym, *methods)
|
41
|
-
end
|
42
|
-
|
43
|
-
#
|
44
|
-
# all controllers, all actions
|
45
|
-
#
|
46
|
-
# This is admin access
|
47
|
-
#
|
48
|
-
def all_controllers
|
49
|
-
controllers = Lockdown::System.controller_classes
|
50
|
-
|
51
|
-
controllers.collect do |controller|
|
52
|
-
methods = available_actions(controller)
|
53
|
-
paths_for(controller_name(controller), methods)
|
54
|
-
end.flatten!
|
55
|
-
end
|
56
|
-
|
57
|
-
private
|
58
|
-
|
59
|
-
def paths_for(str_sym, *methods)
|
60
|
-
str = str_sym.to_s if str_sym.is_a?(Symbol)
|
61
|
-
if methods.empty?
|
62
|
-
klass = Lockdown::System.fetch_controller_class(str)
|
63
|
-
methods = available_actions(klass)
|
64
|
-
end
|
65
|
-
methods.collect{|meth| ctr_path(str) + "/" + meth.to_s }
|
66
|
-
end
|
67
|
-
|
68
|
-
def ctr_path(str)
|
69
|
-
str.gsub("__","\/")
|
70
|
-
end
|
71
|
-
|
72
|
-
#
|
73
|
-
# Luckily both Rails and Merb have the controller_name method. This
|
74
|
-
# is here in case that changes.
|
75
|
-
#
|
76
|
-
def controller_name(klass)
|
77
|
-
klass.controller_name
|
78
|
-
end
|
79
|
-
end #Core
|
80
|
-
|
81
|
-
module Rails #:nodoc:
|
82
|
-
include Lockdown::ControllerInspector::Core
|
83
|
-
|
84
|
-
def available_actions(klass)
|
85
|
-
klass.public_instance_methods - klass.hidden_actions
|
86
|
-
end
|
87
|
-
end # Rails
|
88
|
-
|
89
|
-
module Merb #:nodoc:
|
90
|
-
include Lockdown::ControllerInspector::Core
|
91
|
-
|
92
|
-
def available_actions(klass)
|
93
|
-
klass.callable_actions.keys
|
94
|
-
end
|
95
|
-
|
96
|
-
end # Merb
|
97
|
-
end # ControllerInspector
|
98
|
-
end # Lockdown
|
data/lib/lockdown/model.rb
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
module Lockdown
|
2
|
-
module Model
|
3
|
-
def self.included(base)
|
4
|
-
base.send :include, Lockdown::Model::InstanceMethods
|
5
|
-
end
|
6
|
-
|
7
|
-
module InstanceMethods
|
8
|
-
def self.included(base)
|
9
|
-
base.class_eval do
|
10
|
-
alias_method :create_without_stamps, :create
|
11
|
-
alias_method :create, :create_with_stamps
|
12
|
-
alias_method :update_without_stamps, :update
|
13
|
-
alias_method :update, :update_with_stamps
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def current_profile_id
|
18
|
-
Thread.current[:profile_id]
|
19
|
-
end
|
20
|
-
|
21
|
-
def create_with_stamps
|
22
|
-
profile_id = current_profile_id || Profile::SYSTEM
|
23
|
-
self[:created_by] = profile_id if self.respond_to?(:created_by)
|
24
|
-
self[:updated_by] = profile_id if self.respond_to?(:updated_by)
|
25
|
-
create_without_stamps
|
26
|
-
end
|
27
|
-
|
28
|
-
def update_with_stamps
|
29
|
-
profile_id = current_profile_id || Profile::SYSTEM
|
30
|
-
self[:updated_by] = profile_id if self.respond_to?(:updated_by)
|
31
|
-
update_without_stamps
|
32
|
-
end
|
33
|
-
end # InstanceMethods
|
34
|
-
end # Model
|
35
|
-
end # Lockdown
|
36
|
-
|
37
|
-
Lockdown.orm_parent.send :include, Lockdown::Model
|
data/lib/lockdown/view.rb
DELETED
@@ -1,84 +0,0 @@
|
|
1
|
-
module Lockdown
|
2
|
-
module View
|
3
|
-
module Core
|
4
|
-
def links(*lis)
|
5
|
-
rvalue = []
|
6
|
-
lis.each{|link| rvalue << link if link.length > 0 }
|
7
|
-
rvalue.join(" | ")
|
8
|
-
end
|
9
|
-
end # Core
|
10
|
-
|
11
|
-
module Merb
|
12
|
-
include Lockdown::View::Core
|
13
|
-
def self.included(base)
|
14
|
-
base.send :alias_method, :link_to_open, :link_to
|
15
|
-
base.send :alias_method, :link_to, :link_to_secured
|
16
|
-
end
|
17
|
-
|
18
|
-
def link_to_secured(name, url = '', options = {})
|
19
|
-
if authorized? url
|
20
|
-
return link_to_open(name, url, options)
|
21
|
-
end
|
22
|
-
return ""
|
23
|
-
end
|
24
|
-
|
25
|
-
def link_to_or_show(name, url = '', options = {})
|
26
|
-
lnk = link_to(name, url , options)
|
27
|
-
lnk.length == 0 ? name : lnk
|
28
|
-
end
|
29
|
-
end # Merb
|
30
|
-
|
31
|
-
module Rails
|
32
|
-
include Lockdown::View::Core
|
33
|
-
def self.included(base)
|
34
|
-
base.send :alias_method, :link_to_open, :link_to
|
35
|
-
base.send :alias_method, :link_to, :link_to_secured
|
36
|
-
|
37
|
-
base.send :alias_method, :button_to_open, :button_to
|
38
|
-
base.send :alias_method, :button_to, :button_to_secured
|
39
|
-
end
|
40
|
-
|
41
|
-
def link_to_secured(name, options = {}, html_options = nil)
|
42
|
-
# Don't want to go through the url_for twice
|
43
|
-
url = url_for(options)
|
44
|
-
if authorized? test_path(url, html_options)
|
45
|
-
return link_to_open(name, url, html_options)
|
46
|
-
end
|
47
|
-
return ""
|
48
|
-
end
|
49
|
-
|
50
|
-
def link_to_or_show(name, options = {}, html_options = nil)
|
51
|
-
lnk = link_to(name, options, html_options)
|
52
|
-
lnk.length == 0 ? name : lnk
|
53
|
-
end
|
54
|
-
|
55
|
-
def button_to_secured(name, options = {}, html_options = nil)
|
56
|
-
url = url_for(options)
|
57
|
-
if authorized? test_path(url, html_options)
|
58
|
-
return button_to_open(name, url, html_options)
|
59
|
-
end
|
60
|
-
return ""
|
61
|
-
end
|
62
|
-
|
63
|
-
private
|
64
|
-
|
65
|
-
def test_path(url, html_options)
|
66
|
-
if html_options.is_a?(Hash) && html_options[:method] == :delete
|
67
|
-
url += "/destroy"
|
68
|
-
elsif url.split("/").last =~ /\A\d+\z/
|
69
|
-
url += "/show"
|
70
|
-
end
|
71
|
-
url
|
72
|
-
end
|
73
|
-
end # Rails
|
74
|
-
end # View
|
75
|
-
end # Lockdown
|
76
|
-
|
77
|
-
if Object.const_defined?("Merb") && Merb.const_defined?("AssetsMixin")
|
78
|
-
Merb::AssetsMixin.send :include, Lockdown::View::Merb
|
79
|
-
elsif Object.const_defined?("ActionView")
|
80
|
-
ActionView::Base.send :include, Lockdown::View::Rails
|
81
|
-
else
|
82
|
-
raise NotImplementedError, "Application helper unknown to Lockdown."
|
83
|
-
end
|
84
|
-
|
data/tasks/deployment.rake
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
desc 'Release the website and new gem version'
|
2
|
-
task :deploy => [:check_version, :website, :release] do
|
3
|
-
puts "Remember to create SVN tag:"
|
4
|
-
puts "svn copy svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/trunk " +
|
5
|
-
"svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/tags/REL-#{VERS} "
|
6
|
-
puts "Suggested comment:"
|
7
|
-
puts "Tagging release #{CHANGES}"
|
8
|
-
end
|
9
|
-
|
10
|
-
desc 'Runs tasks website_generate and install_gem as a local deployment of the gem'
|
11
|
-
task :local_deploy => [:website_generate, :install_gem]
|
12
|
-
|
13
|
-
task :check_version do
|
14
|
-
unless ENV['VERSION']
|
15
|
-
puts 'Must pass a VERSION=x.y.z release version'
|
16
|
-
exit
|
17
|
-
end
|
18
|
-
unless ENV['VERSION'] == VERS
|
19
|
-
puts "Please update your version.rb to match the release version, currently #{VERS}"
|
20
|
-
exit
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
desc 'Install the package as a gem, without generating documentation(ri/rdoc)'
|
25
|
-
task :install_gem_no_doc => [:clean, :package] do
|
26
|
-
sh "#{'sudo ' unless Hoe::WINDOZE }gem install pkg/*.gem --no-rdoc --no-ri"
|
27
|
-
end
|
28
|
-
|
29
|
-
namespace :manifest do
|
30
|
-
desc 'Recreate Manifest.txt to include ALL files'
|
31
|
-
task :refresh do
|
32
|
-
`rake check_manifest | patch -p0 > Manifest.txt`
|
33
|
-
end
|
34
|
-
end
|
data/tasks/environment.rake
DELETED
data/tasks/website.rake
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
desc 'Generate website files'
|
2
|
-
task :website_generate => :ruby_env do
|
3
|
-
(Dir['website/**/*.txt'] - Dir['website/version*.txt']).each do |txt|
|
4
|
-
sh %{ #{RUBY_APP} script/txt2html #{txt} > #{txt.gsub(/txt$/,'html')} }
|
5
|
-
end
|
6
|
-
end
|
7
|
-
|
8
|
-
desc 'Upload website files to rubyforge'
|
9
|
-
task :website_upload do
|
10
|
-
host = "#{rubyforge_username}@rubyforge.org"
|
11
|
-
remote_dir = "/var/www/gforge-projects/#{PATH}/"
|
12
|
-
local_dir = 'website'
|
13
|
-
sh %{rsync -aCv #{local_dir}/ #{host}:#{remote_dir}}
|
14
|
-
end
|
15
|
-
|
16
|
-
desc 'Generate and upload website files'
|
17
|
-
task :website => [:website_generate, :website_upload, :publish_docs]
|