Comment passer des arguments de ligne de commande à une tâche de rake ?

Créé le 08 Dec 2022 - Mis à jour le 04 Jul 2023 - Créé par Fabien Berthoux - ruby

Le passage d’arguments de ligne de commande à une tâche de rake est une tâche très fréquente pour les développeurs Ruby. Cette fonctionnalité permet aux développeurs d’exécuter des tâches spécifiques avec des arguments supplémentaires passés à la ligne de commande.

Pour passer des arguments à une tâche de rake, vous devez utiliser la méthode Rake::Task#invoke. Cette méthode prend en argument un tableau avec les arguments supplémentaires à passer à la tâche. Vous pouvez ensuite passer ces arguments à la tâche à l’aide de la méthode Rake::Task#invoke_with_call_chain.

Par exemple, si vous souhaitez passer des arguments de ligne de commande à une tâche nommée «my_task», vous pouvez le faire avec le code suivant :

task :my_task do |t, args|
  # do something with args
end

# Pass command line arguments to `my_task`
Rake::Task["my_task"].invoke(["arg1", "arg2"])

Quels sont les types de paramètres de ligne de commande que je peux passer à une tâche de rake ?


Vous pouvez passer à une tâche de rake n’importe quel type de paramètre que vous souhaitez. Les paramètres peuvent être des chaînes, des nombres, des tableaux ou des objets. Tous les paramètres passés à la tâche sont stockés dans un tableau nommé «args». Vous pouvez accéder à ces arguments dans la tâche à l’aide de la méthode Rake::Task#args.

Par exemple, pour passer des chaînes, des nombres et des tableaux à une tâche nommée «my_task», vous pouvez le faire avec le code suivant :

task :my_task do |t, args|
  arg1 = args[0] # "my_string"
  arg2 = args[1] # 5
  arg3 = args[2] # ["foo", "bar"]
end

# Pass command line arguments to `my_task`
Rake::Task["my_task"].invoke(["my_string", 5, ["foo", "bar"]])

Comment puis-je déterminer si une tâche de rake a été exécutée avec des arguments de ligne de commande ?


Vous pouvez déterminer si une tâche de rake a été exécutée avec des arguments de ligne de commande à l’aide de la méthode Rake::Task#has_arguments?. Cette méthode renvoie un booléen indiquant si des arguments ont été passés à une tâche.

Par exemple, pour vérifier si la tâche «my_task» a été exécutée avec des arguments de ligne de commande, vous pouvez le faire avec le code suivant :

# Check if `my_task` was invoked with command line arguments
has_args = Rake::Task["my_task"].has_arguments?

Comment puis-je définir des arguments par défaut à une tâche de rake ?


Vous pouvez définir des arguments par défaut à une tâche de rake à l’aide de la méthode Rake::Task#default_arguments. Cette méthode prend en argument un tableau avec les valeurs par défaut des arguments.

Par exemple, pour définir des arguments par défaut pour la tâche «my_task», vous pouvez le faire avec le code suivant :

task :my_task do |t, args|
  # do something with args
end

# Set default arguments for `my_task`
Rake::Task["my_task"].default_arguments(["default_arg1", "default_arg2"])

Comment puis-je récupérer les noms des arguments passés à une tâche de rake ?


Vous pouvez récupérer les noms des arguments passés à une tâche de rake à l’aide de la méthode Rake::Task#arg_names. Cette méthode renvoie un tableau avec les noms des arguments passés à la tâche.

Par exemple, pour récupérer les noms des arguments passés à la tâche «my_task», vous pouvez le faire avec le code suivant :

# Get the argument names for `my_task`
args_names = Rake::Task["my_task"].arg_names

Comment puis-je déterminer si un argument est obligatoire ou optionnel pour une tâche de rake ?


Vous pouvez déterminer si un argument est obligatoire ou optionnel pour une tâche de rake à l’aide de la méthode Rake::Task#optional_argument?. Cette méthode prend en argument le nom de l’argument et renvoie un booléen indiquant si l’argument est obligatoire ou optionnel.

Par exemple, pour déterminer si l’argument «arg1» est obligatoire ou optionnel pour la tâche «my_task», vous pouvez le faire avec le code suivant :

# Check if argument `arg1` is optional for `my_task`
arg1_optional = Rake::Task["my_task"].optional_argument?("arg1")