Vous pouvez spécifier des arguments formels de rake par l'ajout de symbole d'arguments à la tâche d'appel. Par exemple:
require 'rake'
task :my_task, [:arg1, :arg2] do |t, args|
puts "Args were: #{args}"
end
task :invoke_my_task do
Rake.application.invoke_task("my_task[1, 2]")
end
# or if you prefer this syntax...
task :invoke_my_task_2 do
Rake::Task[:my_task].invoke(3, 4)
end
# a task with prerequisites passes its
# arguments to it prerequisites
task :with_prerequisite, [:arg1, :arg2] => :my_task
# to specify default values,
# we take advantage of args being a Rake::TaskArguments object
task :with_defaults, :arg1, :arg2 do |t, args|
args.with_defaults(:arg1 => :default_1, :arg2 => :default_2)
puts "Args with defaults were: #{args}"
end
Puis, à partir de la ligne de commande:
> râteau my_task[1,2]
Les arguments étaient les suivants: {:arg1=>"1", :arg2=>"2"}
> râteau "my_task[1, 2]"
Les arguments étaient les suivants: {:arg1=>"1", :arg2=>"2"}
> râteau invoke_my_task
Les arguments étaient les suivants: {:arg1=>"1", :arg2=>"2"}
> râteau invoke_my_task_2
Les arguments étaient les suivants: {:arg1=>3, :arg2=>4}
> râteau with_prerequisite[5,6]
Les arguments étaient les suivants: {:arg1=>"5", :arg2=>"6"}
> râteau with_prerequisite_2[7,8]
Les arguments étaient les suivants: {:arg1=>"7", :arg2=>"8"}
> râteau with_defaults
Args avec les valeurs par défaut ont été: {:arg1=>:default_1, :arg2=>:default_2}
> râteau with_defaults['x','y']
Args avec les valeurs par défaut ont été: {:arg1=>"x", :arg2=>"y"}
Comme démontré dans le deuxième exemple, si vous souhaitez utiliser les espaces, les guillemets autour du nom de la cible sont nécessaires pour maintenir la coquille de l'éclatement des arguments à l'espace.
En regardant le code de la rake.rb, il semble que le râteau de ne pas analyser la tâche de chaînes de caractères à extraire des arguments pour conditions préalables, de sorte que vous ne pouvez pas faire task :t1 => "dep[1,2]"
. Le seul moyen de spécifier des arguments différents pour une condition préalable serait d'invoquer explicitement dans la tâche dépendante de l'action, comme en :invoke_my_task
et :invoke_my_task_2
.
Notez que quelques coquilles (comme zsh) vous obliger à s'échapper des supports: rake my_task\['arg1'\]