Возможно ли передать аргументы в задание в коде Visual Studio

Вот пример моих tasks.json:

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

Я могу запустить это с shift+cmd+alt+b Я также могу запустить его с помощью alt+t и выбрать его из меню. Можно ли передать дополнительные аргументы в этом меню? например, enter image description here

И вы можете встроить это в свою задачу следующим образом:

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

Или что-то подобное?

Ответ 1

Я использовал решение из этого ответа до сих пор, но поскольку в Visual Studio Code теперь есть официальная поддержка запросов задач, я добавлю его в качестве ответа здесь.

В вашем файле tasks.json вы добавляете ключ inputs рядом с вашим tasks. Этот ключ содержит массив со всеми возможными параметрами. Обратите внимание, что не каждая задача должна использовать все эти входные данные.
Все эти входы имеют id, который вы будете использовать для ссылки на вход в вашей задаче.
Теперь в задачу нужно добавить только ${input:myInputId}, где бы вам ни понадобился параметр.

Пример:

{
    "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"
        },
    ]
}

Задача Echo param откроет приглашение, которое позволит вам ввести строковое значение, а затем напечатает это значение. Задача Echo without param просто напечатает "Hello".

Ответ 2

Вот что работает для меня на данный момент - использование этого для запуска фрагмента golang с пользовательскими аргументами. Если вы добавите раскладку клавиатуры к этому, процесс будет очень простым.

До сих пор проверял это только под Windows - версия Linux закомментирована по этой причине

{
        "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
        }
    }