web-dev-qa-db-fra.com

Est-il possible de passer des arguments à une tâche dans Visual Studio Code

Voici un exemple de mon tasks.json:

{
  "version": "0.1.0",
  "tasks": [
    {
      "taskName": "test",
      "suppressTaskName": true,
      "command": "python",
      "args": [
        "tests/brewer_tests.py"
      ],
      "isTestCommand": true
    }
  ]
}

Je peux exécuter ceci avec shift+cmd+alt+b. Je peux également l'exécuter avec alt+t, et choisissez-le dans le menu. Est-il possible de passer des arguments supplémentaires dans ce menu? par exemple. enter image description here

Et vous pouvez l'intégrer à votre tâche comme suit:

{
  "version": "0.1.0",
  "tasks": [
    {
      "taskName": "test",
      "suppressTaskName": true,
      "command": "python",
      "args": [
        "tests/brewer_tests.py",
        $arg1                        # would resolve to "ARG1"
      ],
      "isTestCommand": true
    }
  ]
}

Ou quelque chose de similaire?

19
Luke Sweeney

J'ai utilisé la solution de cette réponse jusqu'à présent, mais comme Visual Studio Code a maintenant un prise en charge officielle des invites de tâches je vais l'ajouter comme réponse ici.

Dans votre fichier tasks.json, vous ajoutez la clé inputs à côté de votre tasks. Cette clé contient un tableau avec tous les paramètres possibles. Notez que toutes les tâches ne doivent pas utiliser toutes ces entrées.
Toutes ces entrées ont un id, que vous utiliserez pour référencer l'entrée dans votre tâche.
Maintenant, dans la tâche, il vous suffit d'ajouter ${input:myInputId} partout où vous avez besoin du paramètre.

Exemple:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Echo param",
            "type": "Shell",
            "command": "echo ${input:param1}",
            "problemMatcher": []
        },
        {
            "label": "Echo without param",
            "type": "Shell",
            "command": "echo Hello",
            "problemMatcher": []
        },
    ],
    "inputs": [
        {
            "id": "param1",
            "description": "Param1:",
            "default": "Hello",
            "type": "promptString"
        },
    ]
}

La tâche Echo param ouvrira une invite, qui vous permet de saisir une valeur de chaîne, puis d'imprimer cette valeur. La tâche Echo without param affichera simplement "Bonjour".

16
Springrbua

Voici ce qui fonctionne pour moi pour le moment: utilisez-le pour exécuter un extrait golang avec des arguments personnalisés. Si vous ajoutez un mappage de clavier à cela, le processus est très simple.

Jusqu'à présent, testé uniquement sous Windows - la version linux est commentée pour cette raison

{
        "label": "runwithargs",
        "type": "Shell",
        "windows": {
            "options": {
                "Shell": {
                    "executable": "powershell.exe",
                    "args": [
                        "-NoProfile",
                        "-ExecutionPolicy",
                        "Bypass",
                        "-Command"
                    ]
                }
            },
            "command": "",
            "args": [
                { "value": "$cmdargs = read-Host 'Enter command line arguments';", "quoting": "weak"},
                { "value": "go run ${file} $cmdargs", "quoting": "weak"}
            ]
        },
        /*"linux": {
            "command": "echo 'Enter command line arguments: '; read cmdargs;",
            "args": [ "go run ${file} $cmdargs" ]                
        },*/          
        "presentation": {
            "panel": "dedicated",
            "focus": true
        }
    }
4
bushed