<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -5,6 +5,8 @@
 * Fixing backgroundjob init (BIN_PATH error)
 * Adding --log to backgroundjob init.d
 * Fixing sphinx monit start/stop/restart
+* Adding task arguments to DSL
+* Updating most of the documentation to pull from task args
 
 == 0.3.5 2008-05-08
 </diff>
      <filename>History.txt</filename>
    </modified>
    <modified>
      <diff>@@ -6,11 +6,12 @@ README.txt
 Rakefile
 config/hoe.rb
 config/requirements.rb
-docs/nginx.README
 lib/capitate.rb
 lib/capitate/cap_ext/connections.rb
 lib/capitate/cap_ext/docs.rb
+lib/capitate/cap_ext/namespace.rb
 lib/capitate/cap_ext/run_via.rb
+lib/capitate/cap_ext/task_definition.rb
 lib/capitate/cap_ext/variables.rb
 lib/capitate/plugins/base.rb
 lib/capitate/plugins/build.rb
@@ -78,6 +79,7 @@ lib/templates/logrotated/conf.erb
 lib/templates/memcached/memcached.initd.centos.erb
 lib/templates/memcached/memcached.monitrc.erb
 lib/templates/memcached/memcached.yml.erb
+lib/templates/merb/merb-no-http.monitrc.erb
 lib/templates/merb/merb.initd.centos.erb
 lib/templates/merb/merb.monitrc.erb
 lib/templates/mongrel/mongrel_cluster.initd.centos.erb
@@ -112,11 +114,3 @@ test/test_helper.rb
 test/test_plugin_upload.rb
 test/test_recipes.rb
 test/test_templates.rb
-website/index.html
-website/index.txt
-website/javascripts/code_highlighter.js
-website/javascripts/rounded_corners_lite.inc.js
-website/javascripts/ruby.js
-website/stylesheets/screen.css
-website/template.rhtml
-website/template_recipe.rhtml</diff>
      <filename>Manifest.txt</filename>
    </modified>
    <modified>
      <diff>@@ -27,6 +27,8 @@ require &quot;capitate/cap_ext/connections&quot;
 require &quot;capitate/cap_ext/variables&quot;
 require &quot;capitate/cap_ext/run_via&quot;
 require &quot;capitate/cap_ext/docs&quot;
+require &quot;capitate/cap_ext/namespace&quot;
+require &quot;capitate/cap_ext/task_definition&quot;
         
 class Capistrano::Configuration   
   include Capitate::CapExt::Variables
@@ -35,6 +37,18 @@ class Capistrano::Configuration
   include Capitate::CapExt::Docs
 end
 
+class Capistrano::TaskDefinition
+  include Capitate::CapExt::TaskDefinition
+end
+
+class Capistrano::Configuration::Namespaces::Namespace
+  include Capitate::CapExt::Namespace
+end
+
+module Capistrano::Configuration::Namespaces
+  include Capitate::CapExt::Namespace
+end
+
 #module Capistrano::Configuration::Connections; end
 
 require 'capitate/task_node'</diff>
      <filename>lib/capitate.rb</filename>
    </modified>
    <modified>
      <diff>@@ -172,7 +172,27 @@ class Capitate::TaskNode
           options = &quot;&quot;
           options = &quot;&lt;span class='options'&gt;, #{task.options.inspect}&lt;/span&gt;&quot; unless task.options.blank?
           file.puts &quot;h3(##{task.fully_qualified_name}). #{task.fully_qualified_name}#{options}\n\n&quot;
-          file.puts &quot;#{unindent(task.desc)}\n\n&quot;                    
+          file.puts &quot;#{unindent(task.desc)}\n\n&quot;
+          if task.arguments
+            file.puts &quot;h4. Parameters\n\n&quot;
+            file.puts &quot;&lt;dl&gt;\n&quot;
+            task.arguments.each do |arg|
+              file.puts &quot;&lt;dt&gt;#{arg[:name]}&lt;/dt&gt;&quot;
+              file.puts &quot;&lt;dd&gt;#{unindent(arg[:desc])}&lt;/dd&gt;&quot; if arg.has_key?(:desc)
+              if arg.has_key?(:default_desc)
+                file.puts &quot;&lt;dd class='default'&gt;Defaults to @#{arg[:default_desc]}@&lt;/dd&gt;&quot;
+              elsif arg.has_key?(:default)
+                file.puts &quot;&lt;dd class='default'&gt;Defaults to @#{arg[:default].inspect}@&lt;/dd&gt;&quot;
+              end           
+              
+              if arg.has_key?(:set)
+                file.puts &quot;&lt;dd class='default'&gt;Defaults to @#{arg[:set].inspect}@ (cap setting)&lt;/dd&gt;&quot;
+              end
+                 
+              file.puts &quot;&lt;dd class='example'&gt;Example: @set :#{arg[:name]}, #{arg[:example]}@&quot; if arg.has_key?(:example)
+            end 
+          end
+          file.puts &quot;&lt;/dl&gt;\n\n&quot;
           file.puts &quot;&lt;/div&gt;\n\n\n&quot;
         end
       end</diff>
      <filename>lib/capitate/task_node.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,7 +2,7 @@ module Capitate #:nodoc:
   module VERSION #:nodoc:
     MAJOR = 0
     MINOR = 3
-    TINY  = 5
+    TINY  = 6
 
     STRING = [MAJOR, MINOR, TINY].join('.')
   end</diff>
      <filename>lib/capitate/version.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,45 +4,16 @@ namespace :active_record do
   Create (ActiveRecord) database yaml in shared path. 
   Note: If both @:db_host@ and @:db_socket@ are used, @db_socket@ wins.
   
-  &lt;dl&gt;
-  &lt;dt&gt;db_name&lt;/dt&gt;
-  &lt;dd&gt;Database name.&lt;/dd&gt;  
-  &lt;dd&gt;@set :db_name, &quot;app_db_name&quot;@&lt;/dd&gt;
-  
-  &lt;dt&gt;db_user&lt;/dt&gt;
-  &lt;dd&gt;Database user.&lt;/dd&gt;
-  &lt;dd&gt;@set :db_user, &quot;app_db_user&quot;@&lt;/dd&gt;    
-  
-  &lt;dt&gt;db_pass&lt;/dt&gt;
-  &lt;dd&gt;Database password.&lt;/dd&gt;
-  &lt;dd&gt;@set :db_pass, &quot;the_password&quot;@&lt;/dd&gt;   
-  
-  &lt;dt&gt;db_host&lt;/dt&gt;
-  &lt;dd&gt;Database host (can be nil, if you are using socket).&lt;/dd&gt;
-  &lt;dd class=&quot;default&quot;&gt;Defaults to @nil@&lt;/dd&gt;
-  
-  &lt;dt&gt;db_socket&lt;/dt&gt;
-  &lt;dd&gt;Database socket (can be nil, if you are using host).&lt;/dd&gt;
-  &lt;dd class=&quot;default&quot;&gt;Defaults to @nil@&lt;/dd&gt;      
-  &lt;dd&gt;@set :db_socket, &quot;/var/lib/mysql/mysql.sock&quot;@&lt;/dd&gt;
-  
-  &lt;dt&gt;database_yml_template&lt;/dt&gt;
-  &lt;dd&gt;Path to database yml erb template.
-  &lt;dd class=&quot;default&quot;&gt;Defaults to @rails/database.yml.erb@ (in this GEM)&lt;/dd&gt;
-  &lt;/dl&gt;
-  
   &quot;Source&quot;:#{link_to_source(__FILE__)}
   DESC
+  task_arg(:db_name, &quot;Database name&quot;)
+  task_arg(:db_user, &quot;Database user&quot;)
+  task_arg(:db_pass, &quot;Database password&quot;)
+  task_arg(:db_host, &quot;Database host&quot;, :default =&gt; nil)
+  task_arg(:db_socket, &quot;Database socket&quot;, :default =&gt; nil)
+  task_arg(:database_yml_template, &quot;Database yml template&quot;, :default =&gt; &quot;rails/database.yml.erb&quot;)
   task :setup, :roles =&gt; :app do    
     
-    # Settings
-    fetch(:db_name)
-    fetch(:db_user)
-    fetch(:db_pass)
-    fetch_or_default(:db_host, nil)
-    fetch_or_default(:db_socket, nil)
-    fetch_or_default(:database_yml_template, &quot;rails/database.yml.erb&quot;)
-    
     unless db_host.blank?
       set :db_connect_type, &quot;host&quot;
       set :db_connect, db_host
@@ -57,7 +28,7 @@ namespace :active_record do
     put template.load(database_yml_template), &quot;#{shared_path}/config/database.yml&quot;
   end
 
-  desc &quot;Make symlink for database yaml&quot; 
+  desc &quot;Make symlink for database yaml&quot;
   task :update_code do
     run &quot;ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml&quot; 
   end</diff>
      <filename>lib/recipes/active_record.rb</filename>
    </modified>
    <modified>
      <diff>@@ -6,29 +6,14 @@ namespace :backgroundrb do
   For pid path support, change backgroundrb script pid_file line to:
   
     pid_file = &quot;\#{CONFIG_FILE[:backgroundrb][:pid_file]}&quot;
-  
-  &lt;dl&gt;
-    &lt;dt&gt;backgroundrb_host&lt;/dt&gt;
-    &lt;dd&gt;Backgroundrb host&lt;/dd&gt;
-    &lt;dd class=&quot;default&quot;&gt;Defaults to @0.0.0.0@&lt;/dd&gt;
     
-    &lt;dt&gt;backgroundrb_port&lt;/dt&gt;
-    &lt;dd&gt;Backgroundrb port&lt;/dd&gt;
-    &lt;dd class=&quot;default&quot;&gt;Defaults to @11006@&lt;/dd&gt;
-  
-    &lt;dt&gt;backgroundrb_yml_template&lt;/dt&gt;
-    &lt;dd&gt;Backgroundrb yml template&lt;/dd&gt;
-    &lt;dd class=&quot;default&quot;&gt;Defaults to @backgroundrb/backgroundrb.yml.erb@ in this gem.&lt;/dd&gt;
-  &lt;/dl&gt;
-  
   &quot;Source&quot;:#{link_to_source(__FILE__)}
   DESC
+  task_arg(:backgroundrb_host, &quot;Backgroundrb host&quot;, :default =&gt; &quot;0.0.0.0&quot;)
+  task_arg(:backgroundrb_port, &quot;Backgroundrb port&quot;, :default =&gt; 11006)
+  task_arg(:backgroundrb_pid_path, &quot;Backgroundrb pid path&quot;, :default =&gt; Proc.new{&quot;#{shared_path}/pids/backgroundrb.pid&quot;}, :default_desc =&gt; &quot;\#{shared_path}/pids/backgroundrb.pid&quot;)
+  task_arg(:backgroundrb_yml_template, &quot;Backgroundrb yml template&quot;, :default =&gt; &quot;backgroundrb/backgroundrb.yml.erb&quot;)  
   task :setup do
-    fetch_or_default(:backgroundrb_host, &quot;0.0.0.0&quot;)
-    fetch_or_default(:backgroundrb_port, 11006)
-    fetch_or_default(:backgroundrb_pid_path, &quot;#{shared_path}/pids/backgroundrb.pid&quot;)
-    fetch_or_default(:backgroundrb_yml_template, &quot;backgroundrb/backgroundrb.yml.erb&quot;)
-    
     utils.install_template(backgroundrb_yml_template, &quot;#{shared_path}/config/backgroundrb.yml&quot;)    
   end
   </diff>
      <filename>lib/recipes/backgroundrb.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,35 +5,15 @@ namespace :backgroundjob do
     desc &lt;&lt;-DESC
     Setup backgroundjob for application.
     
-    &lt;dl&gt;
-    &lt;dt&gt;backgroundjob_bin_path&lt;/dt&gt;
-    &lt;dd&gt;Path to start.
-    &lt;dd class=&quot;default&quot;&gt;Defaults to: 
-    &lt;pre&gt;
-      \#{current_path}/script/bj --forever --rails_env=production --rails_root=\#{current_path} \
-      --redirect=\#{backgroundjob_log_path} --log=\#{backgroundjob_log_path} --pidfile=\#{backgroundjob_pid_path} --daemon
-    &lt;/pre&gt;
-    &lt;/dd&gt;
-    &lt;dt&gt;backgroundjob_pid_path&lt;/dt&gt;
-    &lt;dd&gt;Path to backgroundjob pid file&lt;/dd&gt;
-    &lt;dd class=&quot;default&quot;&gt;Defaults to @\#{shared_path}/pids/bj.pid@&lt;/dd&gt;
-    
-    &lt;dt&gt;backgroundjob_log_path&lt;/dt&gt;
-    &lt;dd&gt;Path to backgroundjob log file&lt;/dd&gt;
-    &lt;dd class=&quot;default&quot;&gt;Defaults to @\#{shared_path}/logs/bj.log@&lt;/dd&gt;
-    &lt;/dl&gt;
     &quot;Source&quot;:#{link_to_source(__FILE__)}
     DESC
+    task_arg(:backgroundjob_bin_path, &quot;Path to backgroundjob&quot;, 
+      :default =&gt; Proc.new{&quot;#{current_path}/script/bj run --forever --rails_env=production --rails_root=#{current_path} --redirect=#{backgroundjob_log_path} --log=#{backgroundjob_log_path} --pidfile=#{backgroundjob_pid_path} --daemon&quot;},
+      :default_desc =&gt; &quot;\#{current_path}/script/bj run --forever --rails_env=production --rails_root=\#{current_path} --redirect=\#{backgroundjob_log_path} --log=\#{backgroundjob_log_path} --pidfile=\#{backgroundjob_pid_path} --daemon&quot;)
+    task_arg(:backgroundjob_pid_path, &quot;Path to backgroundjob pid file&quot;, :default =&gt; Proc.new{&quot;#{shared_path}/pids/bj.pid&quot;}, :default_desc =&gt; &quot;\#{shared_path}/pids/bj.pid&quot;)
+    task_arg(:backgroundjob_log_path, &quot;Path to backgroundjob log file&quot;, :default =&gt; Proc.new{&quot;#{shared_path}/log/bj.log&quot;}, :default_desc =&gt; &quot;\#{shared_path}/log/bj.log&quot;)    
     task :setup do       
-      # Settings
-      fetch_or_default(:backgroundjob_pid_path, &quot;#{shared_path}/pids/bj.pid&quot;)
-      fetch_or_default(:backgroundjob_log_path, &quot;#{shared_path}/log/bj.log&quot;)
-      
-      default_bin_path = &quot;#{current_path}/script/bj run --forever --rails_env=production --rails_root=#{current_path} \
---redirect=#{backgroundjob_log_path} --log=#{backgroundjob_log_path} --pidfile=#{backgroundjob_pid_path} --daemon&quot;
       
-      fetch_or_default(:backgroundjob_bin_path, default_bin_path)      
-
       # Install initscript      
       utils.install_template(&quot;backgroundjob/backgroundjob.initd.centos.erb&quot;, &quot;/etc/init.d/backgroundjob_#{application}&quot;)
 </diff>
      <filename>lib/recipes/centos/backgroundjob.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,22 +5,11 @@ namespace :backgroundrb do
     desc &lt;&lt;-DESC
     Setup backgroundrb for application.
     
-    &lt;dl&gt;
-    &lt;dt&gt;backgroundrb_bin_path&lt;/dt&gt;
-    &lt;dd&gt;Path to start.
-    &lt;dd class=&quot;default&quot;&gt;Defaults to @\#{current_path}/script/backgroundrb -e production start@&lt;/dd&gt;
-    &lt;dt&gt;backgroundrb_pid_path&lt;/dt&gt;
-    &lt;dd&gt;Path to backgroundrb pid file&lt;/dd&gt;
-    &lt;dd class=&quot;default&quot;&gt;Defaults to @\#{shared_path}/pids/backgroundrb.pid@&lt;/dd&gt;
-    &lt;/dl&gt;
     &quot;Source&quot;:#{link_to_source(__FILE__)}
     DESC
+    task_arg(:backgroundrb_bin_path, &quot;Path to backgroundrb bin&quot;, :default =&gt; Proc.new{&quot;#{current_path}/script/backgroundrb -e production start&quot;}, :default_desc =&gt; &quot;\#{current_path}/script/backgroundrb -e production start&quot;)
+    task_arg(:backgroundrb_pid_path, &quot;Path to backgroundrb pid file&quot;, :default =&gt; Proc.new{&quot;#{shared_path}/pids/backgroundrb.pid&quot;}, :default_desc =&gt; &quot;\#{shared_path}/pids/backgroundrb.pid&quot;)    
     task :setup do       
-      
-      # Settings
-      fetch_or_default(:backgroundrb_bin_path, &quot;#{current_path}/script/backgroundrb -e production start&quot;)
-      fetch_or_default(:backgroundrb_pid_path, &quot;#{shared_path}/pids/backgroundrb.pid&quot;)
-
       # Install initscript      
       utils.install_template(&quot;backgroundrb/backgroundrb.initd.centos.erb&quot;, &quot;/etc/init.d/backgroundrb_#{application}&quot;)
 </diff>
      <filename>lib/recipes/centos/backgroundrb.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,36 +5,14 @@ namespace :centos do
   desc &lt;&lt;-DESC
   Add user and set user password for application. Adds user to specified groups. 
   
-  &lt;dl&gt;
-  &lt;dt&gt;user_add&lt;/dt&gt;
-  &lt;dd&gt;User to add.&lt;/dd&gt;
-  &lt;dd&gt;@set :user_add, &quot;app_user&quot;@&lt;/dd&gt;
-
-  &lt;dt&gt;groups&lt;/dt&gt;
-  &lt;dd&gt;Groups for user to be in.&lt;/dd&gt;
-  &lt;dd class=&quot;default&quot;&gt;Defaults to @nil@&lt;/dd&gt;
-  &lt;dd&gt;@set :groups, &quot;admin,foo&quot;@&lt;/dd&gt;
-  
-  &lt;dt&gt;home&lt;/dt&gt;
-  &lt;dd&gt;Home directory for user.&lt;/dd&gt;
-  &lt;dd class=&quot;default&quot;&gt;Defaults to @:deploy_to@ setting_&lt;/dd&gt;  
-  &lt;dd&gt;@set :home, &quot;/var/www/apps/app_name&quot;@&lt;/dd&gt;
-  
-  &lt;dt&gt;home_readable&lt;/dt&gt;
-  &lt;dd&gt;Whether home permissions are readable by all. Needed if using deploy dir as home.&lt;/dd&gt;
-  &lt;dd class=&quot;default&quot;&gt;Defaults to @true@&lt;/dd&gt;
-  &lt;dd&gt;@set :home_readable, true@&lt;/dd&gt;  
-  &lt;/dl&gt;
   &quot;Source&quot;:#{link_to_source(__FILE__)}
   DESC
+  task_arg(:user_add, &quot;User to add&quot;)
+  task_arg(:groups, &quot;Groups for user to be in&quot;, :default =&gt; nil, :example =&gt; &quot;\&quot;admin,foo,bar\&quot;&quot;)
+  task_arg(:home, &quot;Home directory for user&quot;, :set =&gt; :deploy_to)
+  task_arg(:home_readable, &quot;Whether home permissions are readable by all. Needed if using deploy dir as home.&quot;, :default =&gt; true)
   task :add_user do
     
-    # Settings
-    fetch(:user_add)
-    fetch_or_default(:groups, nil)
-    fetch_or_default(:home, deploy_to)
-    fetch_or_default(:home_readable, true)
-    
     adduser_options = []
     adduser_options &lt;&lt; &quot;-d #{home}&quot; unless home.blank?
     adduser_options &lt;&lt; &quot;-G #{groups}&quot; unless groups.blank?</diff>
      <filename>lib/recipes/centos/centos.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,8 +2,12 @@ namespace :imagemagick do
   namespace :centos do
   
     desc &lt;&lt;-DESC
-    Install imagemagick.\n    
-    &lt;dl&gt;&lt;dt&gt;imagemagick_build_options&lt;/dt&gt;&lt;dd&gt;Imagemagick build options&lt;/dd&gt;&lt;/dl&gt;
+    Install imagemagick.
+    
+    &quot;Source&quot;:#{link_to_source(__FILE__)}
+    DESC
+    task_arg(:imagemagick_build_options, &lt;&lt;-EOS)
+    Imagemagick build options
     &lt;pre&gt;
     &lt;code class=&quot;ruby&quot;&gt;
     set :imagemagick_build_options, {
@@ -12,13 +16,8 @@ namespace :imagemagick do
     }
     &lt;/code&gt;
     &lt;/pre&gt;
-    &quot;Source&quot;:#{link_to_source(__FILE__)}
-    DESC
-    task :install do
-      
-      # Settings 
-      fetch(:imagemagick_build_options)
-      
+    EOS
+    task :install do      
       # Install dependencies
       yum.install([ &quot;libjpeg-devel&quot;, &quot;libpng-devel&quot;, &quot;glib2-devel&quot;, &quot;fontconfig-devel&quot;, &quot;zlib-devel&quot;, 
         &quot;libwmf-devel&quot;, &quot;freetype-devel&quot;, &quot;libtiff-devel&quot; ])</diff>
      <filename>lib/recipes/centos/imagemagick.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,10 +5,13 @@ namespace :memcached do
     desc &lt;&lt;-DESC
     Install memcached.
     
-    &lt;dl&gt;
-    &lt;dt&gt;memcached_build_options&lt;/dt&gt;
-    &lt;dd&gt;Memcached build options.&lt;/dd&gt;
-    &lt;dd&gt;
+    &quot;Source&quot;:#{link_to_source(__FILE__)}
+    DESC
+    task_arg(:memcached_pid_path, &quot;Path to memcached pid file.&quot;, :default =&gt; &quot;/var/run/memcached.pid&quot;)
+    task_arg(:memcached_port, &quot;Memcached port&quot;, :default =&gt; 11211)
+    task_arg(:memcached_memory, &quot;Memcached memory (in MB)&quot;)      
+    task_arg(:memcached_build_options, &lt;&lt;-EOS)
+    Memcached build options
     &lt;pre&gt;
     &lt;code class=&quot;ruby&quot;&gt;
     set :memcached_build_options, {
@@ -17,66 +20,22 @@ namespace :memcached do
     }
     &lt;/code&gt;
     &lt;/pre&gt;
-    &lt;/dd&gt;
-    
-    
-    &lt;dt&gt;memcached_memory&lt;/dt&gt;
-    &lt;dd&gt;Memcached memory (in MB).&lt;/dd&gt;
-    &lt;dd&gt;@set :memcached_memory, 64@&lt;/dd&gt;
-    
-    &lt;dt&gt;memcached_pid_path*&lt;/dt&gt;
-    &lt;dd&gt;Path to memcached pid file.&lt;/dd&gt;
-    &lt;dd class=&quot;default&quot;&gt;Defaults to @/var/run/memcached.pid@&lt;/dd&gt;
-    &lt;dd&gt;@set :memcached_pid_path, &quot;/var/run/memcached.pid&quot;@&lt;/dd&gt;
-    
-    &lt;dt&gt;memcached_port&lt;/dt&gt;
-    &lt;dd&gt;Memcached port&lt;dd&gt;
-    &lt;dd class=&quot;default&quot;&gt;Defaults to 11211.&lt;/dd&gt;
-    &lt;dd&gt;@set :memcached_port, 11211@&lt;/dd&gt;
-    
-    &lt;/dl&gt;
-    &quot;Source&quot;:#{link_to_source(__FILE__)}
-    DESC
+    EOS
     task :install do
-
-      # Settings
-      fetch_or_default(:memcached_pid_path, &quot;/var/run/memcached.pid&quot;)
-      fetch_or_default(:memcached_port, 11211)
-      fetch(:memcached_memory)      
-      fetch(:memcached_build_options)
-
       # Build
       build.make_install(&quot;memcached&quot;, memcached_build_options)
-
       initscript
     end
     
     desc &lt;&lt;-DESC
     Install memcached initscript.    
     
-    &lt;dl&gt;
-    &lt;dt&gt;memcached_memory&lt;/dt&gt;
-    &lt;dd&gt;Memcached memory (in MB).&lt;/dd&gt;
-    &lt;dd&gt;@set :memcached_memory, 64@&lt;/dd&gt;
-    
-    &lt;dt&gt;memcached_pid_path*&lt;/dt&gt;
-    &lt;dd&gt;Path to memcached pid file.&lt;/dd&gt;
-    &lt;dd class=&quot;default&quot;&gt;Defaults to @/var/run/memcached.pid@&lt;/dd&gt;
-    &lt;dd&gt;@set :memcached_pid_path, &quot;/var/run/memcached.pid&quot;@&lt;/dd&gt;
-    
-    &lt;dt&gt;memcached_port&lt;/dt&gt;
-    &lt;dd&gt;Memcached port&lt;dd&gt;
-    &lt;dd class=&quot;default&quot;&gt;Defaults to 11211.&lt;/dd&gt;
-    &lt;dd&gt;@set :memcached_port, 11211@&lt;/dd&gt;
-    &lt;/dl&gt;
     &quot;Source&quot;:#{link_to_source(__FILE__)}
     DESC
-    task :initscript do
-      
-      fetch_or_default(:memcached_pid_path, &quot;/var/run/memcached.pid&quot;)
-      fetch_or_default(:memcached_port, 11211)
-      fetch(:memcached_memory)            
-      
+    task_arg(:memcached_pid_path, &quot;Path to memcached pid file.&quot;, :default =&gt; &quot;/var/run/memcached.pid&quot;)
+    task_arg(:memcached_port, &quot;Memcached port&quot;, :default =&gt; 11211)
+    task_arg(:memcached_memory, &quot;Memcached memory (in MB)&quot;)          
+    task :initscript do      
       utils.install_template(&quot;memcached/memcached.initd.centos.erb&quot;, &quot;/etc/init.d/memcached&quot;)
       run_via &quot;/sbin/chkconfig --level 345 memcached on&quot;      
     end</diff>
      <filename>lib/recipes/centos/memcached.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,42 +4,16 @@ namespace :merb do
     desc &lt;&lt;-DESC
     Setup merb.
       
-    &lt;dl&gt;
-    &lt;dt&gt;merb_command_path&lt;/dt&gt;
-    &lt;dd&gt;The path for merb startup command&lt;/dd&gt;
-    &lt;dd class=&quot;default&quot;&gt;Defaults to @merb@&lt;/dd&gt;
-    
-    &lt;dt&gt;merb_nodes&lt;/dt&gt;
-    &lt;dd&gt;Number of merb daemons to run&lt;/dd&gt;
-    &lt;dd&gt;@set :merb_nodes, 3@&lt;/dd&gt;
-    
-    &lt;dt&gt;merb_port&lt;/dt&gt;
-    &lt;dd&gt;Starting port for merb nodes. If there are 3 merb nodes with port 9000, 
-    then instances will be at 9000, 9001, and 9002&lt;/dd&gt;
-    &lt;dd&gt;@set :merb_port, 9000@&lt;/dd&gt;
-    
-    &lt;dt&gt;merb_root&lt;/dt&gt;
-    &lt;dd&gt;Directory for merb root&lt;/dd&gt;
-    &lt;dd class=&quot;default&quot;&gt;Defaults to @\#{current_path}@&lt;/dd&gt;
-    
-    &lt;dt&gt;merb_pid_path&lt;/dt&gt;
-    &lt;dd&gt;Path for merb pids&lt;/dd&gt; 
-    &lt;dd class=&quot;default&quot;&gt;Defaults to @\#{shared_path}/pids/merb.pid@&lt;/dd&gt;      
-    &lt;/dl&gt;
     &quot;Source&quot;:#{link_to_source(__FILE__)}
     DESC
+    task_arg(:merb_nodes, &quot;Number of merb daemons to run&quot;)
+    task_arg(:merb_port, &quot;Starting port for merb nodes. If there are 3 merb nodes with port 9000, then instances will be at 9000, 9001, and 9002&quot;)
+    task_arg(:merb_command_path, &quot;The path for merb startup command&quot;, :default =&gt; &quot;merb&quot;)
+    task_arg(:merb_pid_path, &quot;Path for merb pids&quot;, :default =&gt; Proc.new{&quot;#{shared_path}/pids/merb.pid&quot;}, :default_desc =&gt; &quot;\#{shared_path}/pids/merb.pid&quot;)
+    task_arg(:merb_root, &quot;Directory for merb root&quot;, :set =&gt; :current_path)
+    task_arg(:merb_application, &quot;Merb application name&quot;, :default =&gt; Proc.new{&quot;merb_#{application}&quot;}, :default_desc =&gt; &quot;merb_\#{application}&quot;)    
+    task_arg(:merb_initscript_name, &quot;Initscript name&quot;, :default =&gt; Proc.new{&quot;merb_#{application}&quot;}, :default_desc =&gt; &quot;merb_\#{application}&quot;)
     task :setup do 
-
-      # Settings
-      fetch(:merb_nodes)
-      fetch(:merb_port)
-      fetch_or_default(:merb_command_path, &quot;merb&quot;)
-      fetch_or_default(:merb_pid_path, &quot;#{shared_path}/pids/merb.pid&quot;)
-      fetch_or_default(:merb_root, current_path)
-      fetch_or_default(:merb_application, &quot;merb_#{application}&quot;)
-      
-      fetch_or_default(:merb_initscript_name, &quot;merb_#{application}&quot;)
-
       utils.install_template(&quot;merb/merb.initd.centos.erb&quot;, &quot;/etc/init.d/#{merb_initscript_name}&quot;)
       run_via &quot;/sbin/chkconfig --level 345 #{merb_initscript_name} on&quot;
     end</diff>
      <filename>lib/recipes/centos/merb.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,55 +7,21 @@ namespace :mongrel do
       desc &lt;&lt;-DESC
       Create mongrel cluster.
       
-      &lt;dl&gt;
-      &lt;dt&gt;mongrel_application&lt;/dt&gt;
-      &lt;dd&gt;Name of mongrel application&lt;/dd&gt;
-      &lt;dd&gt;@set :mongrel_application, &quot;mongrel_cluster_\#{application}&quot;@&lt;/dd&gt;
-      
-      &lt;dt&gt;mongrel_size&lt;/dt&gt;&lt;dd&gt;Number of mongrels&lt;/dd&gt;
-      &lt;dd&gt;@set :mongrel_size, 3@&lt;/dd&gt;
-      
-      &lt;dt&gt;mongrel_port&lt;/dt&gt;&lt;dd&gt;Starting port for mongrels. If there are 3 mongrels with port 9000, 
-      then instances will be at 9000, 9001, and 9002&lt;/dd&gt;      
-      &lt;dd&gt;@set :mongrel_port, 9000@&lt;/dd&gt;
-      
-      &lt;dt&gt;mongrel_config_dir&lt;/dt&gt;
-      &lt;dd&gt;Directory for mongrel config.&lt;/dd&gt;
-      &lt;dd class=&quot;default&quot;&gt;Defaults to @\#{shared_path}/config/mongrel@&lt;/dd&gt;
-      
-      &lt;dt&gt;mongrel_pid_dir&lt;/dt&gt;&lt;dd&gt;Directory for mongrel pids&lt;/dd&gt; 
-      &lt;dd class=&quot;default&quot;&gt;Defaults to @\#{shared_path}/pids@&lt;/dd&gt;
-      
-      &lt;dt&gt;mongrel_config_script&lt;/dt&gt;&lt;dd&gt;Config script to load with mongrel&lt;/dd&gt; 
-      &lt;dd class=&quot;default&quot;&gt;Defaults to @nil@&lt;/dd&gt;
-      &lt;dd&gt;@set :mongrel_config_script, &quot;config/mongrel_handler.rb&quot;@&lt;/dd&gt;
-      
-      &lt;dt&gt;mongrel_cluster_command&lt;/dt&gt;
-      &lt;dd&gt;Mongrel cluster command.&lt;/dd&gt;
-      &lt;dd class=&quot;default&quot;&gt;Defaults to @mongrel_cluster_ctl@&lt;/dd&gt;
+      &quot;Source&quot;:#{link_to_source(__FILE__)}
+      DESC
       
-      &lt;dt&gt;mongrel_initscript_name&lt;/dt&gt;&lt;dd&gt;Mongrel initscript name.&lt;/dd&gt; 
-      &lt;dd class=&quot;default&quot;&gt;Defaults to @mongrel_cluster_\#{application}@&lt;/dd&gt;
+      task_arg(:mongrel_application, &quot;Name of mongrel application&quot;)
+      task_arg(:mongrel_size, &quot;Number of mongrels&quot;)
+      task_arg(:mongrel_port, &quot;Starting port for mongrels. If there are 3 mongrels with port 9000, then instances will be at 9000, 9001, and 9002&quot;)
+      task_arg(:mongrel_config_dir, &quot;Directory for mongrel config&quot;, :default =&gt; Proc.new{&quot;#{shared_path}/config/mongrel&quot;}, :default_desc =&gt; &quot;\#{shared_path}/config/mongrel&quot;)
+      task_arg(:mongrel_pid_dir, &quot;Directory for mongrel pids&quot;, :default =&gt; Proc.new{&quot;#{shared_path}/pids&quot;}, :default_desc =&gt; &quot;\#{shared_path}/pids&quot;)
+      task_arg(:mongrel_config_script, &quot;Config script to load with mongrel&quot;, :default =&gt; nil)
       
-      &lt;dt&gt;mongrel_config_options&lt;/dt&gt;
-      &lt;dd&gt;Config options appended to cluster yml.&lt;/dd&gt;
-      &lt;dd class=&quot;default&quot;&gt;Defaults to @{}@&lt;/dd&gt;
+      task_arg(:mongrel_cluster_command, &quot;Mongrel cluster command&quot;, :default =&gt; &quot;mongrel_cluster_ctl&quot;)
+      task_arg(:mongrel_initscript_name, &quot;Mongrel initscript name&quot;, :default =&gt; Proc.new{&quot;mongrel_cluster_#{application}&quot;}, :default_desc =&gt; &quot;mongrel_cluster_\#{application}&quot;)
+      task_arg(:mongrel_config_options, &quot;Config options appended to cluster yml&quot;, :default =&gt; {})
       
-      &lt;/dl&gt;
-      &quot;Source&quot;:#{link_to_source(__FILE__)}
-      DESC
       task :setup do 
-
-        # Settings
-        fetch(:mongrel_size)
-        fetch(:mongrel_port)
-        fetch_or_default(:mongrel_config_dir, &quot;#{shared_path}/config/mongrel&quot;)
-        fetch_or_default(:mongrel_pid_dir, &quot;#{shared_path}/pids&quot;)
-        fetch_or_default(:mongrel_config_script, nil)
-        
-        fetch_or_default(:mongrel_cluster_command, &quot;mongrel_cluster_ctl&quot;)
-        fetch_or_default(:mongrel_initscript_name, &quot;mongrel_cluster_#{application}&quot;)
-        fetch_or_default(:mongrel_config_options, {})
         
         unless mongrel_config_script.blank?
           mongrel_config_options[&quot;config_script&quot;] = mongrel_config_script
@@ -72,13 +38,11 @@ namespace :mongrel do
       end    
     
       desc &quot;Mongrel cluster setup initscript for application&quot;
+      task_arg(:mongrel_config_dir, &quot;Directory for mongrel config&quot;, :default =&gt; Proc.new{&quot;#{shared_path}/config/mongrel&quot;}, :default_desc =&gt; &quot;\#{shared_path}/config/mongrel&quot;)
+      task_arg(:mongrel_pid_dir, &quot;Directory for mongrel pids&quot;, :default =&gt; Proc.new{&quot;#{shared_path}/pids&quot;}, :default_desc =&gt; &quot;\#{shared_path}/pids&quot;)
+      task_arg(:mongrel_cluster_command, &quot;Mongrel cluster command&quot;, :default =&gt; &quot;mongrel_cluster_ctl&quot;)
+      task_arg(:mongrel_initscript_name, &quot;Mongrel initscript name&quot;, :default =&gt; Proc.new{&quot;mongrel_cluster_#{application}&quot;}, :default_desc =&gt; &quot;mongrel_cluster_\#{application}&quot;)
       task :initscript do
-
-        fetch_or_default(:mongrel_config_dir, &quot;#{shared_path}/config/mongrel&quot;)
-        fetch_or_default(:mongrel_pid_dir, &quot;#{shared_path}/pids&quot;)      
-        fetch_or_default(:mongrel_cluster_command, &quot;mongrel_cluster_ctl&quot;)
-        fetch_or_default(:mongrel_initscript_name, &quot;mongrel_cluster_#{application}&quot;)
-
         utils.install_template(&quot;mongrel/mongrel_cluster.initd.centos.erb&quot;, &quot;/etc/init.d/#{mongrel_initscript_name}&quot;)
         run_via &quot;/sbin/chkconfig --level 345 #{mongrel_initscript_name} on&quot;
       end</diff>
      <filename>lib/recipes/centos/mongrel_cluster.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,49 +5,23 @@ namespace :monit do
     desc &lt;&lt;-DESC
     Install monit.
     
-    &lt;dl&gt;
-    &lt;dt&gt;monit_build_options&lt;/dt&gt;
-    &lt;dd&gt;Monit build options.&lt;/dd&gt;
-    
+    &quot;Source&quot;:#{link_to_source(__FILE__)}
+    DESC
+    task_arg(:monit_port, &quot;Monit port&quot;, :default =&gt; 2812)
+    task_arg(:monit_password, &quot;Monit password&quot;, :default =&gt; Proc.new{prompt.password('Monit admin password (to set): ', :verify =&gt; true)}, :default_desc =&gt; &quot;password prompt&quot;)
+    task_arg(:monit_conf_dir, :default =&gt; &quot;/etc/monit&quot;)
+    task_arg(:monit_pid_path, &quot;Path to monit pid&quot;, :default =&gt; &quot;/var/run/monit.pid&quot;)
+    task_arg(:monit_log_path, &quot;Path to monit log file&quot;, :default =&gt; &quot;/var/log/monit.log&quot;)
+    task_arg(:monit_build_options, &lt;&lt;-EOS)    
+    Monit build options
     &lt;pre&gt;
     &lt;code class=&quot;ruby&quot;&gt;
     set :monit_build_options, { :url =&gt; &quot;http://www.tildeslash.com/monit/dist/monit-4.10.1.tar.gz&quot; }
     &lt;/code&gt;
     &lt;/pre&gt;
-
-    &lt;dt&gt;monit_port&lt;/dt&gt;
-    &lt;dd&gt;Monit port&lt;/dd&gt;
-    &lt;dd class=&quot;default&quot;&gt;Defaults to @2812@&lt;/dd&gt;
-    &lt;dd&gt;@set :monit_port, 2812@&lt;/dd&gt;
-
-    &lt;dt&gt;monit_password&lt;/dt&gt;
-    &lt;dd&gt;Monit password&lt;/dd&gt;
-    &lt;dd class=&quot;default&quot;&gt;Defaults to password prompt&lt;/dd&gt;
-    &lt;dd&gt;@set :monit_password, prompt.password('Monit admin password (to set): ')@&lt;/dd&gt;
-
-    &lt;dt&gt;monit_conf_dir&lt;/dt&gt;&lt;dd&gt;Directory for monitrc files.&lt;/dd&gt;
-    &lt;dd&gt;@set :monit_conf_dir, &quot;/etc/monit&quot;@&lt;/dd&gt;
-
-    &lt;dt&gt;monit_pid_path&lt;/dt&gt;&lt;dd&gt;Path to monit pid.&lt;/dd&gt;
-    @set :monit_pid_path, &quot;/var/run/monit.pid&quot;@&lt;/dd&gt;
-
-    &lt;dt&gt;monit_log_path&lt;/dt&gt;
-    &lt;dd&gt;Path to monit log file.&lt;/dd&gt;
-    &lt;dd class=&quot;default&quot;&gt;Defaults to @/var/log/monit.log@&lt;/dd&gt;
-    
-    &lt;/dl&gt;
-    &quot;Source&quot;:#{link_to_source(__FILE__)}
-    DESC
+    EOS
     task :install do
       
-      # Settings
-      fetch_or_default(:monit_port, 2812)
-      fetch_or_default(:monit_password, prompt.password('Monit admin password (to set): ', :verify =&gt; true))
-      fetch_or_default(:monit_conf_dir, &quot;/etc/monit&quot;)
-      fetch_or_default(:monit_pid_path, &quot;/var/run/monit.pid&quot;)
-      fetch_or_default(:monit_log_path, &quot;/var/log/monit.log&quot;)
-      fetch(:monit_build_options)
-        
       # Install dependencies
       yum.install([ &quot;flex&quot;, &quot;byacc&quot; ])
         </diff>
      <filename>lib/recipes/centos/monit.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,19 +5,10 @@ namespace :mysql do
     desc &lt;&lt;-DESC
     Install mysql.
     
-    &lt;dl&gt;
-    &lt;dt&gt;mysql_admin_password_set&lt;/dt&gt;
-    &lt;dd&gt;Mysql admin password (to set)&lt;/dd&gt;
-    &lt;dd class=&quot;default&quot;&gt;Defaults to password prompt.&lt;/dd&gt;    
-    &lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;set :mysql_admin_password_set, prompt.password('Mysql admin password (to set): ')&lt;code&gt;&lt;/pre&gt;
-    &lt;/dl&gt;
     &quot;Source&quot;:#{link_to_source(__FILE__)}
     DESC
+    task_arg(:mysql_admin_password_set, &quot;Mysql admin password (to set)&quot;, :default =&gt; Proc.new{prompt.password('Mysql admin password (to set): ', :verify =&gt; true)}, :default_desc =&gt; &quot;password prompt&quot;)
     task :install do    
-      
-      # Settings
-      fetch_or_default(:mysql_admin_password_set, prompt.password('Mysql admin password (to set): ', :verify =&gt; true))
-
       # Install through package manager
       yum.install([ &quot;mysql&quot;, &quot;mysql-devel&quot;, &quot;mysql-server&quot; ])
 </diff>
      <filename>lib/recipes/centos/mysql.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,9 +5,10 @@ namespace :nginx do
     desc &lt;&lt;-DESC
     Install nginx, conf, initscript, nginx user and service.
     
-    &lt;dl&gt;
-    &lt;dt&gt;nginx_build_options&lt;/dt&gt;
-    &lt;dd&gt;Nginx build options.
+    &quot;Source&quot;:#{link_to_source(__FILE__)}
+    DESC
+    task_arg(:nginx_build_options, &lt;&lt;-EOS)
+    Nginx build options.
     &lt;pre&gt;
     &lt;code class=&quot;ruby&quot;&gt;
     set :nginx_build_options, {
@@ -18,39 +19,12 @@ namespace :nginx do
     }
     &lt;/code&gt;
     &lt;/pre&gt;
-    &lt;/dd&gt;
-    
-    &lt;dt&gt;nginx_bin_path&lt;/dt&gt;
-    &lt;dd&gt;Nginx sbin path&lt;/dd&gt;
-    &lt;dd class=&quot;default&quot;&gt;Defaults to /sbin/nginx&lt;/dd&gt;
-    &lt;dd&gt;@set :nginx_bin_path, &quot;/sbin/nginx&quot;@&lt;/dd&gt;
-    
-    &lt;dt&gt;nginx_conf_path&lt;/dt&gt;
-    &lt;dd&gt;Path to nginx conf.&lt;/dd&gt;
-    &lt;dd class=&quot;default&quot;&gt;Defaults to /etc/nginx/nginx.conf&lt;/dd&gt;
-    &lt;dd&gt;@set :nginx_conf_path, &quot;/etc/nginx/nginx.conf&quot;@&lt;/dd&gt;
-    
-    &lt;dt&gt;nginx_pid_path&lt;/dt&gt;
-    &lt;dd&gt;Path to nginx pid file&lt;/dd&gt;
-    &lt;dd class=&quot;default&quot;&gt;Defaults to /var/run/nginx.pid&lt;/dd&gt;
-    &lt;dd&gt;@set :nginx_pid_path, &quot;/var/run/nginx.pid&quot;@&lt;/dd&gt;
-    
-    &lt;dt&gt;nginx_prefix_path&lt;/dt&gt;
-    &lt;dd&gt;Nginx install prefix&lt;/dd&gt;
-    &lt;dd class=&quot;default&quot;&gt;Defaults to /var/nginx_&lt;/dd&gt;
-    &lt;dd&gt;@set :nginx_prefix_path, &quot;/var/nginx&quot;@&lt;/dd&gt;
-    &lt;/dl&gt;
-    &quot;Source&quot;:#{link_to_source(__FILE__)}
-    DESC
-    task :install do
-      
-      # Settings
-      fetch(:nginx_build_options)
-      fetch_or_default(:nginx_bin_path, &quot;/sbin/nginx&quot;)
-      fetch_or_default(:nginx_conf_path, &quot;/etc/nginx/nginx.conf&quot;)
-      fetch_or_default(:nginx_pid_path, &quot;/var/run/nginx.pid&quot;)
-      fetch_or_default(:nginx_prefix_path, &quot;/var/nginx&quot;)      
-            
+    EOS
+    task_arg(:nginx_bin_path, &quot;Nginx sbin path&quot;, :default =&gt; &quot;/sbin/nginx&quot;)
+    task_arg(:nginx_conf_path, &quot;Path to nginx conf&quot;, :default =&gt; &quot;/etc/nginx/nginx.conf&quot;)
+    task_arg(:nginx_pid_path, &quot;Path to nginx pid file&quot;, :default =&gt; &quot;/var/run/nginx.pid&quot;)
+    task_arg(:nginx_prefix_path, &quot;Nginx install prefix&quot;, :default =&gt; &quot;/var/nginx&quot;)          
+    task :install do      
       # Install dependencies
       yum.install([ &quot;pcre-devel&quot;, &quot;openssl&quot;, &quot;openssl-devel&quot; ]) 
             
@@ -71,11 +45,10 @@ namespace :nginx do
     end
     
     desc &quot;Install nginx initscript&quot;
+    task_arg(:nginx_bin_path, &quot;Nginx sbin path&quot;, :default =&gt; &quot;/sbin/nginx&quot;)
+    task_arg(:nginx_conf_path, &quot;Path to nginx conf&quot;, :default =&gt; &quot;/etc/nginx/nginx.conf&quot;)
+    task_arg(:nginx_pid_path, &quot;Path to nginx pid file&quot;, :default =&gt; &quot;/var/run/nginx.pid&quot;)    
     task :initscript do
-      fetch_or_default(:nginx_bin_path, &quot;/sbin/nginx&quot;)
-      fetch_or_default(:nginx_conf_path, &quot;/etc/nginx/nginx.conf&quot;)
-      fetch_or_default(:nginx_pid_path, &quot;/var/run/nginx.pid&quot;)
-      
       utils.install_template(&quot;nginx/nginx.initd.centos.erb&quot;, &quot;/etc/init.d/nginx&quot;)
       run_via &quot;/sbin/chkconfig --level 345 nginx on&quot;
     end
@@ -84,8 +57,7 @@ namespace :nginx do
     desc &quot;Restart nginx (service)&quot;
     task :restart do
       sudo &quot;/sbin/service nginx restart&quot;
-    end
-    
+    end    
     
   end
   </diff>
      <filename>lib/recipes/centos/nginx.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,14 +5,10 @@ namespace :ruby do
     desc &lt;&lt;-DESC
     Install ruby and rubygems.
     
-    &lt;dl&gt;    
-    &lt;dt&gt;ruby_build_options&lt;/dt&gt;
-    &lt;dd&gt;Ruby build options.&lt;/dd&gt;
-    
-    &lt;dt&gt;rubygems_build_options&lt;dt&gt;
-    &lt;dd&gt;Rubygems build options.&lt;/dd&gt;    
-    &lt;/dl&gt;
-    
+    &quot;Source&quot;:#{link_to_source(__FILE__)}
+    DESC
+    task_arg(:ruby_build_options, &lt;&lt;-EOS)
+    Rubygems build options.
     &lt;pre&gt;
     &lt;code class=&quot;ruby&quot;&gt;
     set :ruby_build_options, {
@@ -23,14 +19,9 @@ namespace :ruby do
     }
     &lt;/code&gt;
     &lt;/pre&gt;
-    &quot;Source&quot;:#{link_to_source(__FILE__)}
-    DESC
+    EOS
+    task_arg(:rubygems_build_options, &quot;Rubygems build options&quot;)    
     task :install do 
-
-      # Settings
-      fetch(:ruby_build_options)
-      fetch(:rubygems_build_options)
-    
       # Install dependencies
       yum.install([ &quot;zlib&quot;, &quot;zlib-devel&quot;, &quot;readline-devel&quot; ])
     </diff>
      <filename>lib/recipes/centos/ruby.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,10 +5,9 @@ namespace :sphinx do
     desc &lt;&lt;-DESC
     Install sphinx.\n
     
-    &lt;dl&gt;
-    &lt;dt&gt;sphinx_build_options&lt;/dt&gt;
-    &lt;dd&gt;Sphinx build options.&lt;/dd&gt;
-    &lt;dd&gt;
+    DESC
+    task_arg(:sphinx_build_options, &lt;&lt;-EOS)
+    Sphinx build options.
     &lt;pre&gt;
     &lt;code class=&quot;ruby&quot;&gt;
     set :sphinx_build_options, {
@@ -18,19 +17,9 @@ namespace :sphinx do
     }
     &lt;/code&gt;    
     &lt;/pre&gt;
-    &lt;/dd&gt;
-    
-    &lt;dt&gt;sphinx_prefix&lt;/dt&gt;
-    &lt;dd&gt;Sphinx install prefix&lt;/dd&gt;
-    &lt;dd class=&quot;default&quot;&gt;Defaults to @/usr/local/sphinx@&lt;/dd&gt;
-    &lt;/dl&gt;
-    DESC
+    EOS
+    task_arg(:sphinx_prefix, &quot;Sphinx install prefix&quot;, :default =&gt; &quot;/usr/local/sphinx&quot;)    
     task :install do 
-      
-      # Settings
-      fetch(:sphinx_build_options)
-      fetch_or_default(:sphinx_prefix, &quot;/usr/local/sphinx&quot;)
-      
       # Install dependencies
       yum.install([ &quot;gcc-c++&quot; ])
       
@@ -41,37 +30,25 @@ namespace :sphinx do
     desc &lt;&lt;-DESC
     Setup sphinx for application.
   
-    &lt;dl&gt;
-    &lt;dt&gt;sphinx_prefix&lt;/dt&gt;&lt;dd&gt;Sphinx install prefix&lt;/dd&gt;&lt;dd class=&quot;default&quot;&gt;Defaults to @/usr/local/sphinx@&lt;/dd&gt;
-    &lt;dt&gt;sphinx_pid_path&lt;/dt&gt;&lt;dd&gt;Directory to sphinx pid&lt;/dd&gt;&lt;dd class=&quot;default&quot;&gt;Defaults to @\#{shared_path}/pids/searchd.pid@&lt;/dd&gt;
-    &lt;dt&gt;sphinx_conf_path&lt;/dt&gt;&lt;dd&gt;Path to sphinx.conf&lt;/dd&gt;&lt;dd class=&quot;default&quot;&gt;Defaults to @\#{shared_path}/config/sphinx.conf@&lt;/dd&gt;
-    &lt;dt&gt;sphinx_index_path&lt;/dt&gt;&lt;dd&gt;Path to sphinx indexes&lt;/dd&gt;&lt;dd class=&quot;default&quot;&gt;Defaults to @\#{shared_path}/var/index@&lt;/dd&gt;
-    &lt;/dl&gt;
     &quot;Source&quot;:#{link_to_source(__FILE__)}
     DESC
+    task_arg(:sphinx_prefix, &quot;Sphinx install prefix&quot;, :default =&gt; &quot;/usr/local/sphinx&quot;)
+    task_arg(:sphinx_pid_path, &quot;Directory to sphinx pid&quot;, :default =&gt; Proc.new{&quot;#{shared_path}/pids/searchd.pid&quot;}, :default_desc =&gt; &quot;\#{shared_path}/pids/searchd.pid&quot;)
+    task_arg(:sphinx_conf_path, &quot;Path to sphinx.conf&quot;, :default =&gt; Proc.new{&quot;#{shared_path}/config/sphinx.conf&quot;}, :default_desc =&gt; &quot;\#{shared_path}/config/sphinx.conf&quot;)      
+    task_arg(:sphinx_index_root, &quot;Path to sphinx indexes&quot;, :default =&gt; Proc.new{&quot;#{shared_path}/var/index&quot;}, :default_desc =&gt; &quot;\#{shared_path}/var/index&quot;)
     task :setup do       
-      
-      # Settings
-      fetch_or_default(:sphinx_prefix, &quot;/usr/local/sphinx&quot;)
-      fetch_or_default(:sphinx_pid_path, &quot;#{shared_path}/pids/searchd.pid&quot;)
-      fetch_or_default(:sphinx_conf_path, &quot;#{shared_path}/config/sphinx.conf&quot;)      
-      fetch_or_default(:sphinx_index_root, &quot;#{shared_path}/var/index&quot;)      
-
       initscript
-
       # Create app indexes dir
       run &quot;mkdir -p #{shared_path}/var/index&quot;    
     end
     
     
     desc &quot;Setup sphinx initscript&quot;
+    task_arg(:sphinx_prefix, &quot;Sphinx install prefix&quot;, :default =&gt; &quot;/usr/local/sphinx&quot;)
+    task_arg(:sphinx_pid_path, &quot;Directory to sphinx pid&quot;, :default =&gt; Proc.new{&quot;#{shared_path}/pids/searchd.pid&quot;}, :default_desc =&gt; &quot;\#{shared_path}/pids/searchd.pid&quot;)
+    task_arg(:sphinx_conf_path, &quot;Path to sphinx.conf&quot;, :default =&gt; Proc.new{&quot;#{shared_path}/config/sphinx.conf&quot;}, :default_desc =&gt; &quot;\#{shared_path}/config/sphinx.conf&quot;)      
+    task_arg(:sphinx_index_root, &quot;Path to sphinx indexes&quot;, :default =&gt; Proc.new{&quot;#{shared_path}/var/index&quot;}, :default_desc =&gt; &quot;\#{shared_path}/var/index&quot;)    
     task :initscript do      
-
-      fetch_or_default(:sphinx_prefix, &quot;/usr/local/sphinx&quot;)
-      fetch_or_default(:sphinx_pid_path, &quot;#{shared_path}/pids/searchd.pid&quot;)
-      fetch_or_default(:sphinx_conf_path, &quot;#{shared_path}/config/sphinx.conf&quot;)      
-      fetch_or_default(:sphinx_index_root, &quot;#{shared_path}/var/index&quot;)      
-      
       utils.install_template(&quot;sphinx/sphinx_app.initd.centos.erb&quot;, &quot;/etc/init.d/sphinx_#{application}&quot;)
       run_via &quot;/sbin/chkconfig --level 345 sphinx_#{application} on&quot;
       </diff>
      <filename>lib/recipes/centos/sphinx.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,24 +5,12 @@ namespace :docs do
   
   This recipe generated this documentation.
   
-  &lt;dl&gt;
-  &lt;dt&gt;docs_recipes_dir&lt;/dd&gt;
-  &lt;dd&gt;Destination directory&lt;/dd&gt;
-  &lt;dd class=&quot;default&quot;&gt;Defaults to @docs/recipes@&lt;/dd&gt;  
-  &lt;dd&gt;@set :docs_recipes_dir, &quot;docs/recipes&quot;@&lt;/dd&gt;   
-    
-  &lt;dt&gt;docs_recipes_clear&lt;/dt&gt;
-  &lt;dd&gt;Whether to clear destination before generating.&lt;/dd&gt;  
-  &lt;dd&gt;@set :docs_recipes_clear, true@&lt;/dd&gt;
-  &lt;/dl&gt;
   &quot;Source&quot;:#{link_to_source(__FILE__)}
   DESC
+  task_arg(:docs_recipes_dir, &quot;Destination directory&quot;, :default =&gt; &quot;docs/recipes&quot;)
+  task_arg(:docs_recipes_clear, &quot;Whether to clear destination before generating.&quot;, :default =&gt; true)
   task :recipes do
     
-    # Settings
-    fetch_or_default(:docs_recipes_dir, &quot;docs/recipes&quot;)
-    fetch_or_default(:docs_recipes_clear, true)
-    
     # Build task tree
     top_node = capitate.task_tree
         </diff>
      <filename>lib/recipes/docs.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,23 +3,22 @@ namespace :logrotated do
   
   desc &lt;&lt;-DESC
   Create logrotated conf. You probably use this in other recipes and not standalone.
-  
-  &lt;dl&gt;
-  &lt;dt&gt;logrotate_name&lt;/dt&gt;
-  &lt;dd&gt;Name of file in /etc/logrotate.d/&lt;/dd&gt;
-  
-  &lt;dt&gt;logrotate_log_path&lt;dt&gt;
-  &lt;dd&gt;Path to log file. Can include wildcards, like /var/log/foo_*.log.&lt;/dd&gt;
-  
-  &lt;dt&gt;logrotate_options&lt;/dt&gt;
-  &lt;dd&gt;:rotate (Number of times to rotate before discarding)&lt;/dd&gt;
-  &lt;dd&gt;:size (Rotate when file hits this size)&lt;/dd&gt;
-  &lt;dd&gt;:daily, :weekly, :monthly (How often to perform rotate)&lt;/dd&gt;
-  &lt;dd&gt;:missingok&lt;/dd&gt;
-  &lt;dd&gt;:compress&lt;/dd&gt;
-  &lt;dd&gt;:delaycompress&lt;/dd&gt;
-  &lt;dd&gt;:notifempty&lt;/dd&gt;
-  &lt;dd&gt;:copytruncate&lt;/dd&gt;
+    
+  &quot;Source&quot;:#{link_to_source(__FILE__)}
+  DESC
+  task_arg(:logrotate_name, &quot;Name of file in /etc/logrotate.d/&quot;)
+  task_arg(:logrotate_log_path, &quot;Path to log file. Can include wildcards, like /var/log/foo_*.log.&quot;)
+  task_arg(:logrotate_options, &lt;&lt;-EOS)
+  Log rotate options
+  
+  * :rotate (Number of times to rotate before discarding)
+  * :size (Rotate when file hits this size)
+  * :daily, :weekly, :monthly (How often to perform rotate)
+  * :missingok
+  * :compress
+  * :delaycompress
+  * :notifempty
+  * :copytruncate
   
   See man page for all the options.
   
@@ -29,14 +28,9 @@ namespace :logrotated do
       :daily, :missingok, :compress, :delaycompress, :notifempty, :copytruncate ]
   &lt;/code&gt;
   &lt;/pre&gt;
-  &quot;Source&quot;:#{link_to_source(__FILE__)}
-  DESC
+  EOS
   task :install_conf do
     
-    fetch(:logrotate_name)
-    fetch(:logrotate_log_path)
-    fetch(:logrotate_options)
-    
     text = []    
     logrotate_options.each do |option|            
       if option.is_a?(Hash)
@@ -56,26 +50,12 @@ namespace :logrotated do
   desc &lt;&lt;-DESC
   Force rotate files.
   
-  &lt;dl&gt;
-  &lt;dt&gt;logrotate_prefix&lt;/dt&gt;
-  &lt;dd&gt;Path to logrotate&lt;/dd&gt;
-  &lt;dd&gt;Defaults to none&lt;/dd&gt;
-  
-  &lt;dt&gt;logrotate_conf_path&lt;/dt&gt;
-  &lt;dd&gt;Path to logrotate conf&lt;/dd&gt;
-  &lt;dd&gt;Defaults to @&quot;/etc/logrotate.conf&quot;@&lt;/dd&gt;
-  &lt;/dl&gt;
   &quot;Source&quot;:#{link_to_source(__FILE__)}   
   DESC
+  task_arg(:logrotate_bin_path, &quot;Logrotate bin path&quot;, :default =&gt; &quot;logrotate&quot;, :example =&gt; &quot;/usr/local/bin/logrotate&quot;)
+  task_arg(:logrotate_conf_path, &quot;Path to logrotate conf&quot;, :default =&gt; &quot;/etc/logrotate.conf&quot;)
   task :force do 
-        
-    fetch_or_default(:logrotate_prefix, &quot;&quot;)
-    fetch_or_default(:logrotate_conf_path, &quot;/etc/logrotate.conf&quot;)    
-    
-    command = &quot;logrotate&quot;
-    command = &quot;#{logrotate_prefix}/logrotate&quot; unless logrotate_prefix.blank?
-    
-    run_via &quot;#{command} -f #{logrotate_conf_path}&quot;    
+    run_via &quot;#{logrotate_bin_path} -f #{logrotate_conf_path}&quot;    
   end
   
 end
\ No newline at end of file</diff>
      <filename>lib/recipes/logrotated.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,49 +3,18 @@ namespace :memcached do
   desc &lt;&lt;-DESC
   Create memcached yaml in shared path.
     
-  &lt;dl&gt;
-  &lt;dt&gt;memcached_namespace&lt;/dt&gt;
-  
-  &lt;dt&gt;memcached_ttl&lt;/dt&gt;
-  &lt;dd class=&quot;default&quot;&gt;Defaults to @3600@&lt;/dd&gt;
-  
-  &lt;dt&gt;memcached_readonly&lt;/dt&gt;
-  &lt;dd class=&quot;default&quot;&gt;Defaults to @false@&lt;/dd&gt;
-  
-  &lt;dt&gt;memcached_urlencode&lt;/dt&gt;
-  &lt;dd class=&quot;default&quot;&gt;Defaults to @false@&lt;/dd&gt;
-  
-  &lt;dt&gt;memcached_c_threshold&lt;/dt&gt;
-  &lt;dd class=&quot;default&quot;&gt;Defaults to @10000@&lt;/dd&gt;
-  
-  &lt;dt&gt;memcached_compression&lt;/dt&gt;
-  &lt;dd class=&quot;default&quot;&gt;Defaults to @true@&lt;/dd&gt;
-  
-  &lt;dt&gt;memcached_debug&lt;/dt&gt;
-  &lt;dd class=&quot;default&quot;&gt;Defaults to @false@&lt;/dd&gt;
-  
-  &lt;dt&gt;memcached_servers&lt;/dt&gt;
-  &lt;dd class=&quot;default&quot;&gt;Defaults to @[ &quot;localhost:11211&quot; ]@&lt;/dd&gt;
-  
-  &lt;dt&gt;memcached_yml_template&lt;/dt&gt;
-  &lt;dd class=&quot;default&quot;&gt;Defaults to @&quot;memcached/memcached.yml.erb&quot;@&lt;/dd&gt;
-  &lt;/dl&gt;
-  
   &quot;Source&quot;:#{link_to_source(__FILE__)}   
   DESC
-  task :setup do    
-
-    # Settings
-    fetch(:memcached_namespace)
-    fetch_or_default(:memcached_ttl, 3600)
-    fetch_or_default(:memcached_readonly, false)
-    fetch_or_default(:memcached_urlencode, false)
-    fetch_or_default(:memcached_c_threshold, 10000)
-    fetch_or_default(:memcached_compression, true)
-    fetch_or_default(:memcached_debug, false)
-    fetch_or_default(:memcached_servers, [ &quot;localhost:11211&quot; ])
-    fetch_or_default(:memcached_yml_template, &quot;memcached/memcached.yml.erb&quot;)    
-
+  task_arg(:memcached_namespace, &quot;Namespace&quot;)
+  task_arg(:memcached_ttl, &quot;TTL in seconds&quot;, :default =&gt; 3600)
+  task_arg(:memcached_readonly, &quot;Read only enabled&quot;, :default =&gt; false)
+  task_arg(:memcached_urlencode, &quot;URL encode enabled&quot;, :default =&gt; false)
+  task_arg(:memcached_c_threshold, &quot;C Threshold&quot;, :default =&gt; 10000)
+  task_arg(:memcached_compression, &quot;Compression enabed&quot;, :default =&gt; true)
+  task_arg(:memcached_debug, &quot;Debug enabled&quot;, :default =&gt; false)
+  task_arg(:memcached_servers, &quot;List of servers&quot;, :default =&gt; [&quot;localhost:11211&quot;], :default_desc =&gt; &quot;[\&quot;localhost:11211\&quot;]&quot;)
+  task_arg(:memcached_yml_template, &quot;Memcached yml template&quot;, :default =&gt; &quot;memcached/memcached.yml.erb&quot;)
+  task :setup do
     put(memcached_yml_template, &quot;#{shared_path}/config/memcached.yml&quot;)
   end
 </diff>
      <filename>lib/recipes/memcached.rb</filename>
    </modified>
    <modified>
      <diff>@@ -15,11 +15,10 @@ namespace :merb do
       set :migrate_env,    &quot;&quot;
       set :migrate_target, :latest
   DESC
+  task_arg(:rake, &quot;Path to rake&quot;, :default =&gt; &quot;rake&quot;)
+  task_arg(:merb_env, &quot;Merb environment&quot;, :default =&gt; &quot;&quot;)
+  task_arg(:migrate_target, &quot;Migration target&quot;, :default =&gt; :latest)
   task :migrate, :roles =&gt; :db, :only =&gt; { :primary =&gt; true } do
-    rake = fetch(:rake, &quot;rake&quot;)
-    merb_env = fetch(:merb_env, &quot;production&quot;)
-    migrate_env = fetch(:migrate_env, &quot;&quot;)
-    migrate_target = fetch(:migrate_target, :latest)
 
     current_directory = case migrate_target.to_sym
       when :current then current_path</diff>
      <filename>lib/recipes/merb.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,49 +5,30 @@ namespace :monit do
   
   HUP's the process from the pid file, if it exists.
   
-  &lt;dl&gt;
-  &lt;dt&gt;monit_pid_path&lt;/dt&gt;
-  &lt;dd&gt;Path to monit pid file&lt;/dd&gt;
-  &lt;dd class=&quot;default&quot;&gt;Defaults to @/var/run/monit.pid@&lt;/dd&gt;
-  &lt;/dl&gt;
   &quot;Source&quot;:#{link_to_source(__FILE__)}
   DESC
+  task_arg(:monit_pid_path, &quot;Path to monit pid file&quot;, :default =&gt; &quot;/var/run/monit.pid&quot;)
   task :restart do    
-    fetch_or_default(:monit_pid_path, &quot;/var/run/monit.pid&quot;)
-    
-    run_via %{sh -c &quot;[ ! -e '#{monit_pid_path}' ] || kill -HUP `cat #{monit_pid_path}`&quot;}
-    
+    run_via %{sh -c &quot;[ ! -e '#{monit_pid_path}' ] || kill -HUP `cat #{monit_pid_path}`&quot;}    
   end
   
   desc &lt;&lt;-DESC
   Unmonitor all.
   
-  &lt;dl&gt;
-  &lt;dt&gt;monit_bin_path&lt;/dt&gt;
-  &lt;dd&gt;Path to monit bin.&lt;/dd&gt;
-  &lt;dd&gt;Defaults to @monit@&lt;/dd&gt;
-  &lt;/dl&gt;
   &quot;Source&quot;:#{link_to_source(__FILE__)}
   DESC
+  task_arg(:monit_bin_path, &quot;Path to monit bin.&quot;, :default =&gt; &quot;monit&quot;)
   task :unmonitor_all do
-    fetch_or_default(:monit_bin_path, &quot;monit&quot;)
-    
     run_via &quot;#{monit_bin_path} unmonitor all&quot;
   end
   
   desc &lt;&lt;-DESC
   Monitor all.
   
-  &lt;dl&gt;
-  &lt;dt&gt;monit_bin_path&lt;/dt&gt;
-  &lt;dd&gt;Path to monit bin.&lt;/dd&gt;
-  &lt;dd&gt;Defaults to @monit@&lt;/dd&gt;
-  &lt;/dl&gt;
   &quot;Source&quot;:#{link_to_source(__FILE__)}
   DESC
+  task_arg(:monit_bin_path, &quot;Path to monit bin.&quot;, :default =&gt; &quot;monit&quot;)
   task :monitor_all do
-    fetch_or_default(:monit_bin_path, &quot;monit&quot;)
-    
     run_via &quot;#{monit_bin_path} monitor all&quot;
   end
   </diff>
      <filename>lib/recipes/monit.rb</filename>
    </modified>
    <modified>
      <diff>@@ -8,17 +8,13 @@ namespace :merb do
     
     &quot;Source&quot;:#{link_to_source(__FILE__)}
     DESC
+    task_arg(:merb_nodes, &quot;Number of nodes in merb cluster&quot;)
+    task_arg(:merb_port, &quot;Starting port&quot;)
+    task_arg(:monit_conf_dir, &quot;Monit config directory&quot;, :default =&gt; &quot;/etc/monit&quot;)
+    task_arg(:merb_pid_dir, &quot;Merb pid directory&quot;, :default =&gt; Proc.new {&quot;#{shared_path}/pids&quot;}, :default_desc =&gt; &quot;\#{shared_path}/pids&quot;)
+    task_arg(:merb_monitrc_template, &quot;Merb monitrc template&quot;, :default =&gt; &quot;merb/merb.monitrc.erb&quot;)
     task :setup do
   
-      # Settings
-      fetch(:merb_nodes)
-      fetch(:merb_port)
-      fetch_or_default(:merb_application, &quot;merb_#{application}&quot;)
-      fetch_or_default(:merb_initscript_name, &quot;merb_#{application}&quot;)
-      fetch_or_default(:monit_conf_dir, &quot;/etc/monit&quot;)
-  
-      fetch_or_default(:merb_pid_dir, &quot;#{shared_path}/pids&quot;)
-  
       processes = []
       ports = (0...merb_nodes).collect { |i| merb_port + i }
       ports.each do |port|
@@ -32,9 +28,8 @@ namespace :merb do
       end
   
       set :processes, processes
-  
-      put template.load(&quot;merb/merb.monitrc.erb&quot;), &quot;/tmp/#{merb_application}.monitrc&quot;    
-      sudo &quot;install -o root /tmp/#{merb_application}.monitrc #{monit_conf_dir}/#{merb_application}.monitrc&quot;
+      
+      utils.install_template(merb_monitrc_template, &quot;#{monit_conf_dir}/#{merb_application}.monitrc&quot;) 
     end
     
     desc &quot;Restart merb (for application)&quot;</diff>
      <filename>lib/recipes/monit/merb.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,28 +5,12 @@ namespace :mysql do
     desc &lt;&lt;-DESC
     Install mysql monit hooks. 
     
-    &lt;dl&gt;
-    &lt;dt&gt;mysql_pid_path&lt;/dt&gt;
-    &lt;dd&gt;Path to mysql pid file&lt;/dd&gt;
-
-    &lt;dt&gt;db_port&lt;/dt&gt;
-    &lt;dd&gt;Mysql port&lt;/dd&gt;
-    &lt;dd class=&quot;default&quot;&gt;Defaults to @3306@&lt;/dd&gt;
-    
-    &lt;dt&gt;monit_conf_dir&lt;/dt&gt;
-    &lt;dd&gt;Monitrd directory.&lt;/dd&gt;
-    &lt;dd class=&quot;default&quot;&gt;Defaults to @&quot;/etc/monit&quot;@&lt;/dd&gt;
-    &lt;/dl&gt;    
-    
     &quot;Source&quot;:#{link_to_source(__FILE__)}  
     DESC
+    task_arg(:mysql_pid_path, &quot;Path to mysql pid file&quot;, :default =&gt; &quot;/var/run/mysqld/mysqld.pid&quot;)
+    task_arg(:mysql_port, &quot;Mysql port&quot;, :default =&gt; 3306)   
+    task_arg(:monit_conf_dir, &quot;Monitrd directory&quot;, :default =&gt; &quot;/etc/monit&quot;)
     task :install do
-    
-      # Settings 
-      fetch_or_default(:mysql_pid_path, &quot;/var/run/mysqld/mysqld.pid&quot;)
-      fetch_or_default(:mysql_port, 3306)   
-      fetch_or_default(:monit_conf_dir, &quot;/etc/monit&quot;) 
-    
       put template.load(&quot;mysql/mysql.monitrc.erb&quot;, binding), &quot;/tmp/mysql.monitrc&quot;    
       run_via &quot;install -o root /tmp/mysql.monitrc #{monit_conf_dir}/mysql.monitrc&quot;
     end      </diff>
      <filename>lib/recipes/monit/mysql.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,25 +5,11 @@ namespace :nginx do
     desc &lt;&lt;-DESC 
     Install nginx monit hooks.
   
-    &lt;dl&gt;    
-    &lt;dt&gt;nginx_pid_path&lt;/dt&gt;
-    &lt;dd&gt;Path to nginx pid file&lt;/dd&gt;
-    &lt;dd&gt;Defaults to /var/run/nginx.pid&lt;/dd&gt;
-    &lt;dd&gt;@set :nginx_pid_path, &quot;/var/run/nginx.pid&quot;@&lt;/dd&gt;
-    
-    &lt;dt&gt;monit_conf_dir&lt;/dt&gt;
-    &lt;dd&gt;Destination for monitrc.&lt;/dd&gt;
-    &lt;dd&gt;Defaults to &quot;/etc/monit&quot;&lt;/dd&gt;
-    &lt;dd&gt;@set :monit_conf_dir, &quot;/etc/monit&quot;@&lt;/dd&gt;
-    &lt;/dl&gt;
     &quot;Source&quot;:#{link_to_source(__FILE__)}
     DESC
+    task_arg(:nginx_pid_path, &quot;Path to nginx pid file&quot;, :default =&gt; &quot;/var/run/nginx.pid&quot;)
+    task_arg(:monit_conf_dir, &quot;Destination for monitrc&quot;, :default =&gt; &quot;/etc/monit&quot;)
     task :install do
-    
-      # Settings
-      fetch_or_default(:nginx_pid_path, &quot;/var/run/nginx.pid&quot;)
-      fetch_or_default(:monit_conf_dir, &quot;/etc/monit&quot;)
-    
       put template.load(&quot;nginx/nginx.monitrc.erb&quot;, binding), &quot;/tmp/nginx.monitrc&quot;    
       run_via &quot;install -o root /tmp/nginx.monitrc #{monit_conf_dir}/nginx.monitrc&quot;
     end</diff>
      <filename>lib/recipes/monit/nginx.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,17 +4,12 @@ namespace :sphinx do
   
     desc &lt;&lt;-DESC
     Create monit configuration for sphinx.\n  
-    *monit_conf_dir*: Destination for monitrc. _Defaults to &quot;/etc/monit&quot;_\n
-    *sphinx_pid_path*: Location for sphinx pid. _Defaults to &quot;[shared_path]/pids/searchd.pid&quot;_\n
-    
+
     &quot;Source&quot;:#{link_to_source(__FILE__)}
     DESC
+    task_arg(:monit_conf_dir, :default =&gt; &quot;/etc/monit&quot;)
+    task_arg(:sphinx_pid_path, :default =&gt; Proc.new{&quot;#{shared_path}/pids/searchd.pid&quot;}, :default_desc =&gt; &quot;\#{shared_path}/pids/searchd.pid&quot;)
     task :setup do    
-    
-      # Settings
-      fetch_or_default(:monit_conf_dir, &quot;/etc/monit&quot;)
-      fetch_or_default(:sphinx_pid_path, &quot;#{shared_path}/pids/searchd.pid&quot;)
-    
       put template.load(&quot;sphinx/sphinx.monitrc.erb&quot;), &quot;/tmp/sphinx_#{application}.monitrc&quot;            
       sudo &quot;install -o root /tmp/sphinx_#{application}.monitrc #{monit_conf_dir}/sphinx_#{application}.monitrc&quot;
     end</diff>
      <filename>lib/recipes/monit/sphinx.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,45 +4,19 @@ namespace :mysql do
   desc &lt;&lt;-DESC
   Create database, database user, and set grant permissions.
   
-  &lt;dl&gt;
-  &lt;dt&gt;db_name&lt;/dt&gt;
-  &lt;dd&gt;Database name (application).&lt;/dd&gt;
-  
-  &lt;dt&gt;db_user&lt;/dt&gt;
-  &lt;dd&gt;Database user (application).&lt;/dd&gt;
-  
-  &lt;dt&gt;db_pass&lt;/dt&gt;
-  &lt;dd&gt;Database password (application).&lt;/dd&gt;
-  
-  &lt;dt&gt;mysql_grant_locations&lt;/dt&gt;
-  &lt;dd&gt;Grant locations. &lt;/dd&gt;
-  &lt;dd&gt;Defaults to @[ &quot;localhost&quot; ]@&lt;/dd&gt;
-  
-  &lt;dt&gt;mysql_grant_priv_type&lt;/dt&gt;
-  &lt;dd&gt;Grant privilege types.&lt;/dd&gt;
-  &lt;dd&gt;Defaults to @ALL@&lt;/dd&gt;
-  
-  &lt;dt&gt;mysql_admin_user&lt;/dt&gt;
-  &lt;dd&gt;Mysql admin user.&lt;/dd&gt;
-  &lt;dd&gt;Defaults to password prompt.&lt;/dd&gt;
-  
-  &lt;dt&gt;mysql_admin_password&lt;/dt&gt;
-  &lt;dd&gt;Mysql admin password.&lt;/dd&gt;
-  &lt;dd&gt;Defaults to password prompt.&lt;/dd&gt;
-  &lt;/dl&gt;
   &quot;Source&quot;:#{link_to_source(__FILE__)}
   DESC
-  task :setup do    
-    
-    # Settings
-    fetch(:db_name)
-    fetch(:db_user)
-    fetch(:db_pass)
-    fetch_or_default(:mysql_admin_user, &quot;root&quot;)
-    fetch_or_default(:mysql_admin_password, prompt.password('Mysql admin password: '))
-    fetch_or_default(:mysql_grant_priv_type, &quot;ALL&quot;)
-    fetch_or_default(:mysql_grant_locations, [ &quot;localhost&quot; ])
+  task_arg(:db_name, &quot;Database name (application)&quot;)
+  task_arg(:db_user, &quot;Database user (application)&quot;)
+  task_arg(:db_pass, &quot;Database password (application)&quot;)
+  task_arg(:mysql_admin_user, &quot;Mysql admin user&quot;, :default =&gt; &quot;root&quot;)
+  task_arg(:mysql_admin_password, &quot;Mysql admin password&quot;, 
+    :default =&gt; Proc.new { prompt.password('Mysql admin password: ') }, 
+    :example =&gt; &quot;prompt.password('Mysql admin password: ')&quot;)
     
+  task_arg(:mysql_grant_priv_type, &quot;Grant privilege types&quot;, :default =&gt; &quot;ALL&quot;)
+  task_arg(:mysql_grant_locations, &quot;Grant locations&quot;, :default =&gt; [&quot;localhost&quot;])
+  task :setup do    
     sql = template.load(&quot;mysql/install_db.sql.erb&quot;)       
     
     logger.trace &quot;Running sql:\n#{sql}\n&quot;
@@ -55,26 +29,12 @@ namespace :mysql do
   desc &lt;&lt;-DESC
   Create my.cnf based on template.
   
-  &lt;dl&gt;
-  &lt;dt&gt;my_cnf_template&lt;/dt&gt;
-  &lt;dd&gt;Path to my.cnf template&lt;/dd&gt;
-  
-  &lt;dt&gt;db_socket&lt;/dt&gt;
-  &lt;dd&gt;Path to mysql .sock&lt;/dd&gt;
-  &lt;dd class=&quot;default&quot;&gt;Defaults to @&quot;/var/lib/mysql/mysql.sock&quot;@&lt;/dd&gt;
-  
-  &lt;dt&gt;db_port&lt;/dt&gt;
-  &lt;dd&gt;Mysql port&lt;/dd&gt;
-  &lt;dd class=&quot;default&quot;&gt;Defaults to @3306@&lt;/dd&gt;
-  &lt;/dl&gt;
-  
   &quot;Source&quot;:#{link_to_source(__FILE__)}
   DESC
+  task_arg(:my_cnf_template, &quot;Path to my.cnf template&quot;, :default =&gt; &quot;mysql/my.cnf.innodb_1024.erb&quot;)      
+  task_arg(:db_socket, &quot;Path to mysql .sock&quot;, :default =&gt; &quot;/var/lib/mysql/mysql.sock&quot;)
+  task_arg(:db_port, &quot;Mysql port&quot;, :default =&gt; 3306)
   task :install_my_cnf do      
-    fetch_or_default(:my_cnf_template, &quot;mysql/my.cnf.innodb_1024.erb&quot;)      
-    fetch_or_default(:db_socket, &quot;/var/lib/mysql/mysql.sock&quot;)
-    fetch_or_default(:db_port, 3306)
-    
     utils.install_template(my_cnf_template, &quot;/etc/my.cnf&quot;)    
   end
   </diff>
      <filename>lib/recipes/mysql.rb</filename>
    </modified>
    <modified>
      <diff>@@ -6,80 +6,24 @@ namespace :nginx do
     desc &lt;&lt;-DESC
     Generate the nginx vhost include.
     
-    &lt;dl&gt;
-    &lt;dt&gt;nginx_upstream_name&lt;/dt&gt;
-    &lt;dd&gt;Application name (for upstream definition).&lt;/dd&gt;
-    &lt;dd class=&quot;default&quot;&gt;Defaults to @:application@&lt;/dd&gt;
-    
-    &lt;dt&gt;nginx_upstream_size&lt;/dt&gt;
-    &lt;dd&gt;Number of nodes for upstream.&lt;/dd&gt;
-    &lt;dd&gt;@set :nginx_upstream_size, 3@&lt;/dd&gt;  
-    
-    &lt;dt&gt;nginx_upstream_port&lt;/dt&gt;
-    &lt;dd&gt;Starting port for upstream. If there are 3 nodes with port 9000, then instances will be at 9000, 9001, and 9002&lt;/dd&gt;
-    &lt;dd&gt;@set :nginx_upstream_port, 9000@&lt;/dd&gt;
-    
-    &lt;dt&gt;domain_name&lt;/dt&gt;: Domain name for nginx virtual host, (without www prefix).&lt;/dd&gt;
-    &lt;dd&gt;@set :domain_name, &quot;foo.com&quot;@&lt;/dd&gt;
-    &lt;/dl&gt;
-    
     &quot;Source&quot;:#{link_to_source(__FILE__)}
     DESC
+    task_arg(:nginx_upstream_name, &quot;Application name (for upstream definition)&quot;, 
+      :default =&gt; Proc.new { fetch(:application) }, 
+      :default_desc =&gt; &quot;fetch(:application)&quot;)
+      
+    task_arg(:nginx_upstream_size, &quot;Number of nodes for upstream&quot;)
+    task_arg(:nginx_upstream_port, &quot;Starting port for upstream. If there are 3 nodes with port 9000, then instances will be at 9000, 9001, and 9002&quot;)    
+    task_arg(:domain_name, &quot;Domain name&quot;)
+    task_arg(:nginx_vhost_template, &quot;Path to nginx vhost template&quot;, :default =&gt; &quot;nginx/nginx_vhost_generic.conf.erb&quot;)    
     task :setup do 
     
-      # Settings
-      fetch_or_default(:nginx_upstream_name, fetch(:application))
-      fetch(:nginx_upstream_size)
-      fetch(:nginx_upstream_port)
-    
       set :nginx_upstream_ports, (0...nginx_upstream_size.to_i).collect { |i| nginx_upstream_port.to_i + i }
       set :public_path, current_path + &quot;/public&quot;
     
-      utils.install_template(&quot;nginx/nginx_vhost_generic.conf.erb&quot;, &quot;/etc/nginx/vhosts/#{nginx_upstream_name}.conf&quot;)
+      utils.install_template(:nginx_vhost_template, &quot;/etc/nginx/vhosts/#{nginx_upstream_name}.conf&quot;)
     end
     
   end
   
-  namespace :mongrel do
-    desc &lt;&lt;-DESC
-    Generate the nginx vhost include (for a mongrel setup).
-    
-    *THIS IS DEPRECATED*: Use @nginx:host:setup@
-  
-    &lt;dl&gt;
-    &lt;dt&gt;mongrel_application&lt;/dt&gt;
-    &lt;dd&gt;Mongrel application.&lt;/dd&gt;
-    &lt;dd class=&quot;default&quot;&gt;Defaults to @:application@&lt;/dd&gt;
-    
-    &lt;dt&gt;mongrel_size&lt;/dt&gt;
-    &lt;dd&gt;Number of mongrels.&lt;/dd&gt;
-    &lt;dd&gt;@set :mongrel_size, 3@&lt;/dd&gt;  
-    
-    &lt;dt&gt;*mongrel_port&lt;/dt&gt;
-    &lt;dd&gt;Starting port for mongrels. If there are 3 mongrels with port 9000, then instances will be at 9000, 9001, and 9002&lt;/dd&gt;
-    &lt;dd&gt;@set :mongrel_port, 9000@&lt;/dd&gt;
-    
-    &lt;dt&gt;domain_name&lt;/dt&gt;: Domain name for nginx virtual host, (without www prefix).&lt;/dd&gt;
-    &lt;dd&gt;@set :domain_name, &quot;foo.com&quot;@&lt;/dd&gt;
-    &lt;/dl&gt;
-    &quot;Source&quot;:#{link_to_source(__FILE__)}
-    DESC
-    task :setup do 
-    
-      # Settings
-      fetch(:mongrel_size)
-      fetch(:mongrel_port)
-      fetch(:domain_name)
-      fetch_or_default(:mongrel_application, fetch(:application))
-    
-      set :ports, (0...mongrel_size).collect { |i| mongrel_port + i }
-      set :public_path, current_path + &quot;/public&quot;
-    
-      run &quot;mkdir -p #{shared_path}/config&quot;
-      put template.load(&quot;nginx/nginx_vhost.conf.erb&quot;), &quot;/tmp/nginx_#{mongrel_application}.conf&quot;    
-    
-      sudo &quot;install -o root /tmp/nginx_#{mongrel_application}.conf /etc/nginx/vhosts/#{mongrel_application}.conf&quot;        
-    end
-  end
-        
 end
\ No newline at end of file</diff>
      <filename>lib/recipes/nginx.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,64 +1,6 @@
 # Rails recipes
 namespace :rails do
   
-  desc &lt;&lt;-DESC
-  Create database yaml in shared path. Note: If both @:db_host@ and @:db_socket@ are used, @db_socket@ wins.
-  
-  *DEPRECATED*: Use @active_record:setup@
-  
-  &lt;dl&gt;
-  &lt;dt&gt;db_name&lt;/dt&gt;
-  &lt;dd&gt;Database name.&lt;/dd&gt;  
-  &lt;dd&gt;@set :db_name, &quot;app_db_name&quot;@&lt;/dd&gt;
-  
-  &lt;dt&gt;db_user&lt;/dt&gt;
-  &lt;dd&gt;Database user.&lt;/dd&gt;
-  &lt;dd&gt;@set :db_user, &quot;app_db_user&quot;@&lt;/dd&gt;    
-  
-  &lt;dt&gt;db_pass&lt;/dt&gt;
-  &lt;dd&gt;Database password.&lt;/dd&gt;
-  &lt;dd&gt;@set :db_pass, &quot;the_password&quot;@&lt;/dd&gt;   
-  
-  &lt;dt&gt;db_host&lt;/dt&gt;
-  &lt;dd&gt;Database host (can be nil, if you are using socket).&lt;/dd&gt;
-  &lt;dd class=&quot;default&quot;&gt;Defaults to @nil@&lt;/dd&gt;
-  
-  &lt;dt&gt;db_socket&lt;/dt&gt;
-  &lt;dd&gt;Database socket (can be nil, if you are using host).&lt;/dd&gt;
-  &lt;dd class=&quot;default&quot;&gt;Defaults to @nil@&lt;/dd&gt;      
-  &lt;dd&gt;@set :db_socket, &quot;/var/lib/mysql/mysql.sock&quot;@&lt;/dd&gt;
-  
-  &lt;dt&gt;database_yml_template&lt;/dt&gt;
-  &lt;dd&gt;Path to database yml erb template.
-  &lt;dd class=&quot;default&quot;&gt;Defaults to @rails/database.yml.erb@ (in this GEM)&lt;/dd&gt;
-  &lt;/dl&gt;
-  
-  &quot;Source&quot;:#{link_to_source(__FILE__)}
-  DESC
-  task :setup, :roles =&gt; :app do    
-    
-    # Settings
-    fetch(:db_name)
-    fetch(:db_user)
-    fetch(:db_pass)
-    fetch_or_default(:db_host, nil)
-    fetch_or_default(:db_socket, nil)
-    fetch_or_default(:database_yml_template, &quot;rails/database.yml.erb&quot;)
-    
-    unless db_host.blank?
-      set :db_connect_type, &quot;host&quot;
-      set :db_connect, db_host
-    end
-    
-    unless db_socket.blank?
-      set :db_connect_type, &quot;socket&quot;
-      set :db_connect, db_socket
-    end
-    
-    run &quot;mkdir -p #{shared_path}/config&quot;
-    put template.load(database_yml_template), &quot;#{shared_path}/config/database.yml&quot;
-  end
-
   desc &quot;Make symlink for database yaml&quot; 
   task :update_code do
     run &quot;ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml&quot; </diff>
      <filename>lib/recipes/rails.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,45 +2,26 @@
 namespace :sphinx do
   
   desc &lt;&lt;-DESC
-  Update sphinx for application.
+  Update sphinx conf for application.
   
-  &lt;dl&gt;
-  &lt;dt&gt;sphinx_conf_template&lt;/dt&gt;&lt;dd&gt;Path to sphinx.conf.erb.&lt;/dd&gt;&lt;dd&gt;_Defaults to &quot;config/templates/sphinx.conf.erb&quot;_&lt;/dd&gt;
-  &lt;dt&gt;sphinx_conf_path&lt;/dt&gt;&lt;dd&gt;Path to sphinx.conf.&lt;/dd&gt;&lt;dd&gt;_Defaults to &quot;[shared_path]/config/sphinx.conf&quot;_&lt;/dd&gt;
-  &lt;dt&gt;sphinx_port&lt;/dt&gt;&lt;dd&gt;Sphinx port.&lt;/dd&gt;&lt;dd&gt;_Defaults to 3312_&lt;/dd&gt;
-  &lt;dt&gt;sphinx_conf_root&lt;/dt&gt;&lt;dd&gt;Directory for sphinx configuration, like stopwords.txt.&lt;/dd&gt;&lt;dd&gt;_Defaults to [current_path]/config_&lt;/dd&gt;
-  &lt;dt&gt;sphinx_index_root&lt;/dt&gt;&lt;dd&gt;Directory for sphinx indexes.&lt;/dd&gt;&lt;dd&gt;_Defaults to &quot;[shared_path]/var/index&quot;_&lt;/dd&gt;
-  &lt;dt&gt;sphinx_log_root&lt;/dt&gt;&lt;dd&gt;Directory for sphinx logs.&lt;/dd&gt;&lt;dd&gt;_Defaults to &quot;[shared_path]/log&quot;_&lt;/dd&gt;
-  &lt;dt&gt;sphinx_pid_root&lt;/dt&gt;&lt;dd&gt;Directory for sphinx pids.&lt;/dd&gt;&lt;dd&gt;_Defaults to &quot;[shared_path]/pids&quot;_&lt;/dd&gt;
-  
-  &lt;dt&gt;sphinx_db_user&lt;/dt&gt;&lt;dd&gt;Sphinx DB user.&lt;/dd&gt;&lt;dd&gt;_Defaults to db_user_&lt;/dd&gt;
-  &lt;dt&gt;sphinx_db_pass&lt;/dt&gt;&lt;dd&gt;Sphinx DB password.&lt;/dd&gt;&lt;dd&gt;_Defaults to db_pass_&lt;/dd&gt;
-  &lt;dt&gt;sphinx_db_name&lt;/dt&gt;&lt;dd&gt;Sphinx DB name.&lt;/dd&gt;&lt;dd&gt;_Defaults to db_name_&lt;/dd&gt;
-  &lt;dt&gt;sphinx_db_port&lt;/dt&gt;&lt;dd&gt;Sphinx DB port.&lt;/dd&gt;&lt;dd&gt;_Defaults to db_port_&lt;/dd&gt;
-  
-  &lt;dt&gt;sphinx_db_host&lt;/dt&gt;&lt;dd&gt;Sphinx DB host.&lt;/dd&gt;&lt;dd&gt;_Defaults to db_host_&lt;/dd&gt;
-  &lt;dt&gt;sphinx_conf_host&lt;/dt&gt;&lt;dd&gt;Sphinx DB host to listen on.&lt;/dd&gt;&lt;dd&gt;_Defaults to 127.0.0.1_&lt;/dd&gt;
-  
-  &lt;/dl&gt;
   &quot;Source&quot;:#{link_to_source(__FILE__)}
   DESC
+  task_arg(:sphinx_conf_template, &quot;Path to sphinx.conf.erb template&quot;, :default =&gt; &quot;config/templates/sphinx.conf.erb&quot;)        
+  task_arg(:sphinx_port, &quot;Sphinx port&quot;, :default =&gt; 3312)
+  task_arg(:sphinx_conf_path, &quot;Path to sphinx.conf&quot;, :default =&gt; Proc.new {&quot;#{shared_path}/config/sphinx.conf&quot;}, :default_desc =&gt; &quot;\#{shared_path}/config/sphinx.conf&quot;)
+  task_arg(:sphinx_conf_root, &quot;Directory for sphinx configuration, like stopwords.txt&quot;, :default =&gt; Proc.new {&quot;#{current_path}/config&quot;}, :default_desc =&gt; &quot;\#{current_path}/config&quot;)
+  task_arg(:sphinx_index_root, &quot;Directory for sphinx indexes&quot;, :default =&gt; Proc.new {&quot;#{shared_path}/var/index&quot;}, :default_desc =&gt; &quot;\#{shared_path}/var/index&quot;)
+  task_arg(:sphinx_log_root, &quot;Directory for sphinx logs&quot;, :default =&gt; Proc.new {&quot;#{shared_path}/log&quot;}, :default_desc =&gt; &quot;\#{shared_path}/log&quot;)
+  task_arg(:sphinx_pid_path, &quot;Directory for sphinx pids&quot;, :default =&gt; Proc.new {&quot;#{shared_path}/pids/searchd.pid&quot;}, :default_desc =&gt; &quot;\#{shared_path}/pids/searchd.pid&quot;)
+  
+  task_arg(:sphinx_db_user, &quot;Sphinx DB user&quot;, :set =&gt; :db_user)
+  task_arg(:sphinx_db_pass, &quot;Sphinx DB password&quot;, :set =&gt; :db_pass)
+  task_arg(:sphinx_db_name, &quot;Sphinx DB name&quot;, :set =&gt; :db_name)
+  task_arg(:sphinx_db_port, &quot;Sphinx DB port&quot;, :set =&gt; :db_port)
+  task_arg(:sphinx_db_host, &quot;Sphinx DB host&quot;, :set =&gt; :db_host)
+  
+  task_arg(:sphinx_conf_host, &quot;Sphinx DB host to listen on&quot;, :default =&gt; &quot;127.0.0.1&quot;)
   task :update_conf do
-    
-    fetch_or_default(:sphinx_conf_template, &quot;config/templates/sphinx.conf.erb&quot;)        
-    fetch_or_default(:sphinx_port, 3312)
-    fetch_or_default(:sphinx_conf_path, &quot;#{shared_path}/config/sphinx.conf&quot;)
-    fetch_or_default(:sphinx_conf_root, &quot;#{current_path}/config&quot;)
-    fetch_or_default(:sphinx_index_root, &quot;#{shared_path}/var/index&quot;)
-    fetch_or_default(:sphinx_log_root, &quot;#{shared_path}/log&quot;)
-    fetch_or_default(:sphinx_pid_path, &quot;#{shared_path}/pids/searchd.pid&quot;)
-    
-    fetch_or_set(:sphinx_db_user, :db_user)
-    fetch_or_set(:sphinx_db_pass, :db_pass)
-    fetch_or_set(:sphinx_db_name, :db_name)
-    fetch_or_set(:sphinx_db_port, :db_port)
-    fetch_or_set(:sphinx_db_host, :db_host)
-    fetch_or_default(:sphinx_conf_host, &quot;127.0.0.1&quot;)
-        
     put(template.load(sphinx_conf_template), sphinx_conf_path)        
   end
   
@@ -52,17 +33,12 @@ namespace :sphinx do
   desc &lt;&lt;-DESC
   Rotate sphinx index for application.
   
-  *sphinx_prefix*&lt;dd&gt;Location to sphinx install. _Defaults to nil_\n
-  *sphinx_conf*&lt;dd&gt;Location to sphinx conf. _Defaults to &quot;[shared_path]/config/sphinx.conf&quot;_\n  
-  
   &quot;Source&quot;:#{link_to_source(__FILE__)}
   DESC
+  task_arg(:sphinx_prefix, :default =&gt; nil)
+  task_arg(:sphinx_conf, :default =&gt; Proc.new{&quot;#{shared_path}/config/sphinx.conf&quot;}, :default_desc =&gt; &quot;\#{shared_path}/config/sphinx.conf&quot;)  
   task :rotate_all do
-    fetch_or_default(:sphinx_prefix, nil)
-    fetch_or_default(:sphinx_conf, &quot;#{shared_path}/config/sphinx.conf&quot;)
-    
     indexer_path = sphinx_prefix ? &quot;#{sphinx_prefix}/bin/indexer&quot; : &quot;indexer&quot;
-    
     run &quot;#{indexer_path} --config #{sphinx_conf} --rotate --all&quot;
   end
   
@@ -74,12 +50,10 @@ namespace :sphinx do
   
   &quot;Source&quot;:#{link_to_source(__FILE__)}
   DESC
+  task_arg(:sphinx_prefix, :default =&gt; nil)
+  task_arg(:sphinx_conf, :default =&gt; Proc.new{&quot;#{shared_path}/config/sphinx.conf&quot;}, :default_desc =&gt; &quot;\#{shared_path}/config/sphinx.conf&quot;)    
   task :index_all do
-    fetch_or_default(:sphinx_prefix, nil)
-    fetch_or_default(:sphinx_conf, &quot;#{shared_path}/config/sphinx.conf&quot;)
-    
     indexer_path = sphinx_prefix ? &quot;#{sphinx_prefix}/bin/indexer&quot; : &quot;indexer&quot;
-    
     run &quot;#{indexer_path} --config #{sphinx_conf} --all&quot;
   end
     </diff>
      <filename>lib/recipes/sphinx.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,15 +3,11 @@ namespace :sshd do
   desc &lt;&lt;-DESC
   Create public and private keys for ssh.
       
-  *ssh_keygen_type*: SSH keygen type. _Defaults to rsa_\n
-  *ssh_keygen_bits*: SSH keygen bits. _Defaults to 2048_\n  
-  
   &quot;Source&quot;:#{link_to_source(__FILE__)}
   DESC
+  task_arg(:ssh_keygen_type, &quot;SSH keygen type&quot;, :default =&gt; &quot;rsa&quot;)   
+  task_arg(:ssh_keygen_bits, &quot;SSH keygen bits&quot;, :default =&gt; 2048)
   task :keygen do
-    # Settings 
-    fetch_or_default(:ssh_keygen_type, &quot;rsa&quot;)   
-    fetch_or_default(:ssh_keygen_bits, 2048)      
     
     run &quot;ssh-keygen -t #{ssh_keygen_type} -b #{ssh_keygen_bits}&quot; do |channel, stream, data|
       logger.trace data
@@ -33,19 +29,14 @@ namespace :sshd do
   end
   
   desc &lt;&lt;-DESC
-  Add to authorized keys. Uses &lt;tt&gt;.ssh/authorized_keys&lt;/tt&gt;.
-  
-  *ssh_public_key*: The public key from ssh:keygen.
+  Add to authorized keys. Uses @.ssh/authorized_keys@.
   
   &quot;Source&quot;:#{link_to_source(__FILE__)}
   DESC
+  task_arg(:ssh_public_key, &quot;The public key from sshd:keygen&quot;)
+  task_arg(:ssh_dir, &quot;SSH home directory&quot;, :default =&gt; &quot;~/.ssh&quot;)
+  task_arg(:authorized_keys_path, &quot;Path to authorized keys&quot;, :default =&gt; &quot;~/.ssh/authorized_keys&quot;)
   task :authorize_key do
-    
-    fetch(:ssh_public_key)
-    
-    ssh_dir = &quot;~/.ssh&quot;
-    authorized_keys_path = &quot;#{ssh_dir}/authorized_keys&quot;
-    
     run_all &lt;&lt;-CMDS    
       if [ ! -d #{ssh_dir} ]; then mkdir #{ssh_dir} ; chmod 700 #{ssh_dir} ; fi 
       if [ ! -f #{authorized_keys_path} ]; then touch #{authorized_keys_path} ; chmod 600 #{authorized_keys_path} ; fi </diff>
      <filename>lib/recipes/sshd.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,17 +3,12 @@ namespace :syslogd do
   desc &lt;&lt;-DESC  
   Add entry to syslog for application.
   
-  *syslog_program_name*: syslog program name. What you used for &lt;tt&gt;SyslogLogger.new(&quot;program_name_here&quot;)&lt;/tt&gt;\n  
-  *syslog_log_path*: Path to log.\n
-  *syslog_conf_path*: Path to syslog conf. _Defaults to &lt;tt&gt;/etc/syslog.conf&lt;/tt&gt;_\n
-  
   &quot;Source&quot;:#{link_to_source(__FILE__)}
   DESC
+  task_arg(:syslog_program_name, &quot;Syslog program name. What you used for @SyslogLogger.new(\&quot;program_name_here\&quot;)@&quot;)
+  task_arg(:syslog_log_path, &quot;Path to log&quot;)
+  task_arg(:syslog_conf_path, :default =&gt; &quot;/etc/syslog.conf&quot;)
   task :setup_conf do 
-    
-    fetch(:syslog_program_name)
-    fetch(:syslog_log_path)
-    fetch_or_default(:syslog_conf_path, &quot;/etc/syslog.conf&quot;)
         
     utils.append_to(syslog_conf_path, &lt;&lt;-DATA, &quot;^!#{syslog_program_name}&quot;)      
               
@@ -23,39 +18,4 @@ namespace :syslogd do
     DATA
   end
   
-  desc &lt;&lt;-DESC  
-  Add entry to newsyslog for application. See newsyslog man page for details.
-  
-  Adds entry like:
-  
-  &lt;pre&gt;
-  /var/log/my_app.log   640  7     *    @T00  Z
-  &lt;/pre&gt;
-  
-  *syslog_log_path*: Path to log. _Defaults to &lt;tt&gt;/var/log/[syslog_program_name].log&lt;/tt&gt;_\n
-  *newsyslog_conf_path*: Path to newsyslog conf.\n
-  *newsyslog_mode*: File mode (to create log with). _Defaults to _\n
-  *newsyslog_count*: Number of files to keep. _Defaults to 7_\n
-  *newsyslog_size*: Max size. _Defaults to *_\n
-  *newsyslog_when*: When to rotate. _Defaults to @T00_\n
-  *newsyslog_zb*: Whether to gzip or tarball. _Defaults to Z_\n
-  
-  &quot;Source&quot;:#{link_to_source(__FILE__)}
-  DESC
-  task :setup_newsyslog_conf do
-    
-    fetch(:syslog_log_path)
-    fetch_or_default(:newsyslog_conf_path, &quot;/etc/newsyslog.conf&quot;)
-    
-    fetch_or_default(:newsyslog_mode, &quot;640&quot;)
-    fetch_or_default(:newsyslog_count, &quot;7&quot;)
-    fetch_or_default(:newsyslog_size, &quot;*&quot;)
-    fetch_or_default(:newsyslog_when, &quot;@T00&quot;)
-    fetch_or_default(:newsyslog_zb, &quot;Z&quot;)
-            
-    entry = &quot;#{syslog_log_path} \t#{newsyslog_mode} \t#{newsyslog_count} \t#{newsyslog_size} \t#{newsyslog_when} \t#{newsyslog_zb}&quot;
-    
-    utils.append_to(newsyslog_conf_path, entry, &quot;^#{syslog_log_path}&quot;)    
-  end
-  
 end
\ No newline at end of file</diff>
      <filename>lib/recipes/syslogd.rb</filename>
    </modified>
    <modified>
      <diff>@@ -110,7 +110,7 @@ td {
 }
 
 .recipes pre {
-  margin: 0 30px;
+  margin: 0 30px 10px 30px;
 }
 
 .recipes h3 {
@@ -119,6 +119,17 @@ td {
   background-color: #E6E2AF;
 }
 
+.recipes h4 {
+  margin: 0;
+  background-color: #E6E2AF;
+}
+
+.recipe dl
+{
+  padding: 0;
+  margin: 0;
+}
+
 .recipe {
   margin: 0 0 40px 0;
   padding: 8px;</diff>
      <filename>website/stylesheets/screen.css</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>7c923f5564b3fba846af45e2a60baa135fbd436c</id>
    </parent>
  </parents>
  <author>
    <name>Gabe</name>
    <email>gabrielh@gmail.com</email>
  </author>
  <url>http://github.com/gabriel/capitate/commit/8e757e16e30f67e2cde4d2140c8d6335266b37df</url>
  <id>8e757e16e30f67e2cde4d2140c8d6335266b37df</id>
  <committed-date>2008-05-14T13:01:13-07:00</committed-date>
  <authored-date>2008-05-14T13:01:13-07:00</authored-date>
  <message>task arguments dsl patch</message>
  <tree>23381f9e61646447bd5cd6a8fad61b1810bea52c</tree>
  <committer>
    <name>Gabe</name>
    <email>gabrielh@gmail.com</email>
  </committer>
</commit>
