Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
System.CommandLine
est actuellement disponible en préversion et cette documentation concerne la version 2.0 bêta 5.
Certaines informations se rapportent à un produit en version préliminaire qui peut être sensiblement modifié avant sa sortie. Microsoft n’offre aucune garantie, expresse ou implicite, en ce qui concerne les informations fournies ici.
Les applications qui utilisent System.CommandLine
prennent en charge la prise en charge intégrée de la saisie semi-automatique de tabulation dans certains interpréteurs de commandes. Pour l’activer, l’utilisateur final doit effectuer quelques étapes une fois par interpréteur de commandes. Une fois cette opération effectuée, la saisie semi-automatique de tabulation est automatique pour les valeurs statiques dans votre application, telles que les valeurs d’énumération ou les valeurs définies par l’appel System.CommandLine.Option<T>.AcceptOnlyFromAmong
. Vous pouvez également personnaliser la saisie semi-automatique des onglets en fournissant des valeurs dynamiquement au moment de l’exécution.
Activer la saisie semi-automatique pour les onglets
Sur l’ordinateur sur lequel vous souhaitez activer la saisie semi-automatique de tabulation, procédez comme suit.
Pour l’interface CLI .NET :
Pour les autres applications en ligne de commande basées sur System.CommandLine
:
Installez l’outil
dotnet-suggest
global.Ajoutez le script shim approprié à votre profil shell. Vous devrez peut-être créer un fichier de profil shell. Le script shim transfère les demandes d’achèvement de votre interpréteur de commandes à l’outil
dotnet-suggest
, qui les délègue à l’application appropriéeSystem.CommandLine
.Pour
bash
, ajoutez le contenu de dotnet-suggest-shim.bash à ~/.bash_profile.Pour
zsh
, ajoutez le contenu de dotnet-suggest-shim.zsh à ~/.zshrc.Pour PowerShell, ajoutez le contenu de dotnet-suggest-shim.ps1 à votre profil PowerShell. Vous trouverez le chemin attendu de votre profil PowerShell en exécutant la commande suivante dans votre console :
echo $profile
Inscrivez l’application en appelant
dotnet-suggest register --command-path $executableFilePath
, où$executableFilePath
est le chemin d’accès au fichier exécutable de l’application.
Une fois que l’interpréteur de commandes de l’utilisateur est configuré et que l’exécutable est inscrit, les achèvements fonctionnent pour toutes les applications générées à l’aide System.CommandLine
de .
Pour cmd.exe sur Windows (invite de commandes Windows) il n’existe aucun mécanisme de saisie semi-automatique d’onglet enfichable. Par conséquent, aucun script shim n’est disponible. Pour d’autres interpréteurs de commandes, recherchez un problème GitHub étiqueté Area-Completions
. Si vous ne trouvez pas de problème, vous pouvez en ouvrir un nouveau.
Obtenir les valeurs de saisie semi-automatique des onglets au moment de l’exécution
Le code suivant montre une application qui récupère les valeurs de saisie semi-automatique de tabulation dynamiquement au moment de l’exécution. Le code obtient la liste des deux prochaines semaines de dates suivant la date actuelle. La liste est fournie à l’option --date
en appelant CompletionSources.Add
:
using System.CommandLine;
using System.CommandLine.Completions;
using System.CommandLine.Parsing;
new DateCommand().Parse(args).Invoke();
class DateCommand : Command
{
private Argument<string> subjectArgument = new("subject")
{
Description = "The subject of the appointment."
};
private Option<DateTime> dateOption = new("--date")
{
Description = "The day of week to schedule. Should be within one week."
};
public DateCommand() : base("schedule", "Makes an appointment for sometime in the next week.")
{
this.Arguments.Add(subjectArgument);
this.Options.Add(dateOption);
dateOption.CompletionSources.Add(ctx => {
var today = System.DateTime.Today;
List<CompletionItem> dates = new();
foreach (var i in Enumerable.Range(1, 7))
{
var date = today.AddDays(i);
dates.Add(new CompletionItem(
label: date.ToShortDateString(),
sortText: $"{i:2}"));
}
return dates;
});
this.SetAction(parseResult =>
{
Console.WriteLine($"Scheduled \"{parseResult.GetValue(subjectArgument)}\" for {parseResult.GetValue(dateOption)}");
});
}
}
Les valeurs affichées lorsque la touche Tab est enfoncée sont fournies en tant qu’instances CompletionItem
:
dates.Add(new CompletionItem(
label: date.ToShortDateString(),
sortText: $"{i:2}"));
Les propriétés suivantes CompletionItem
sont définies :
-
Label
est la valeur d’achèvement à afficher. -
SortText
garantit que les valeurs de la liste sont présentées dans l’ordre correct. Il est défini en convertissanti
en chaîne à deux chiffres, afin que le tri soit basé sur 01, 02, 03, et ainsi de suite, jusqu’à 14. Si vous ne définissez pas ce paramètre, le tri est basé sur leLabel
paramètre , qui dans cet exemple est au format de date courte et ne trie pas correctement.
Il existe d’autres CompletionItem
propriétés, telles que Documentation
et Detail
, mais elles ne sont pas encore utilisées dans System.CommandLine
.
La liste de saisie semi-automatique de tabulation dynamique créée par ce code apparaît également dans la sortie d’aide :
Description:
Makes an appointment for sometime in the next week.
Usage:
schedule <subject> [options]
Arguments:
<subject> The subject of the appointment.
Options:
--date The day of week to schedule. Should be within one week.
<2/4/2022|2/5/2022|2/6/2022|2/7/2022|2/8/2022|2/9/2022|2/10/2022>
--version Show version information
-?, -h, --help
Voir aussi
vue d’ensemble System.CommandLine