{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "[Release] Build Firmware",
            "group": "build",
            "type": "shell",
            "command": "./fbt COMPACT=1 DEBUG=0"
        },
        {
            "label": "[Debug] Build Firmware",
            "group": "build",
            "type": "shell",
            "command": "./fbt"
        },
        {
            "label": "[Release] Flash (SWD)",
            "group": "build",
            "type": "shell",
            "command": "./fbt COMPACT=1 DEBUG=0 FORCE=1 flash"
        },
        {
            "label": "[Debug] Flash (SWD)",
            "group": "build",
            "type": "shell",
            "command": "./fbt FORCE=1 flash"
        },
        {
            "label": "[Release] Flash (JLink)",
            "group": "build",
            "type": "shell",
            "command": "./fbt COMPACT=1 DEBUG=0 FORCE=1 jflash"
        },
        {
            "label": "[Debug] Flash (JLink)",
            "group": "build",
            "type": "shell",
            "command": "./fbt FORCE=1 jflash"
        },
        {
            "label": "[Release] Build update bundle",
            "group": "build",
            "type": "shell",
            "command": "./fbt updater_package COMPACT=1 DEBUG=0"
        },
        {
            "label": "[Debug] Build update bundle",
            "group": "build",
            "type": "shell",
            "command": "./fbt updater_package"
        },
        {
            "label": "[Release] Build updater",
            "group": "build",
            "type": "shell",
            "command": "./fbt updater_all COMPACT=1 DEBUG=0"
        },
        {
            "label": "[Debug] Build updater",
            "group": "build",
            "type": "shell",
            "command": "./fbt updater_all"
        },
        {
            "label": "[Debug] Flash (USB, w/o resources)",
            "group": "build",
            "type": "shell",
            "command": "./fbt FORCE=1 flash_usb"
        },
        {
            "label": "[Release] Flash (USB, w/o resources)",
            "group": "build",
            "type": "shell",
            "command": "./fbt COMPACT=1 DEBUG=0 FORCE=1 flash_usb"
        },
        {
            "label": "[Debug:unit_tests] Flash (USB)",
            "group": "build",
            "type": "shell",
            "command": "./fbt FIRMWARE_APP_SET=unit_tests FORCE=1 flash_usb"
        },
        {
            "label": "[Debug] Flash (USB, with resources)",
            "group": "build",
            "type": "shell",
            "command": "./fbt FORCE=1 flash_usb_full"
        },
        {
            "label": "[Release] Flash (USB, with resources)",
            "group": "build",
            "type": "shell",
            "command": "./fbt COMPACT=1 DEBUG=0 FORCE=1 flash_usb_full"
        },
        {
            "label": "[Debug] Create PVS-Studio report",
            "group": "build",
            "type": "shell",
            "command": "./fbt firmware_pvs"
        },
        {
            "label": "[Debug] Build FAPs",
            "group": "build",
            "type": "shell",
            "command": "./fbt fap_dist"
        },
        {
            "label": "[Release] Build FAPs",
            "group": "build",
            "type": "shell",
            "command": "./fbt COMPACT=1 DEBUG=0 fap_dist"
        },
        {
            "label": "[Debug] Build App",
            "group": "build",
            "type": "shell",
            "command": "./fbt build APPSRC=${relativeFileDirname}"
        },
        {
            "label": "[Release] Build App",
            "group": "build",
            "type": "shell",
            "command": "./fbt COMPACT=1 DEBUG=0 build APPSRC=${relativeFileDirname}"
        },
        {
            "label": "[Debug] Launch App on Flipper",
            "group": "build",
            "type": "shell",
            "command": "./fbt launch APPSRC=${relativeFileDirname}"
        },
        {
            "label": "[Release] Launch App on Flipper",
            "group": "build",
            "type": "shell",
            "command": "./fbt COMPACT=1 DEBUG=0 launch APPSRC=${relativeFileDirname}"
        },
        {
            "label": "[Debug] Launch App on Flipper with Serial Console",
            "dependsOrder": "sequence",
            "group": "build",
            "dependsOn": [
                "[Debug] Launch App on Flipper",
                "Serial Console"
            ]
        },
        {
            "label": "[Debug] Build and upload all FAPs to Flipper over USB",
            "group": "build",
            "type": "shell",
            "command": "./fbt fap_deploy"
        },
        {
            "label": "[Release] Build and upload all FAPs to Flipper over USB",
            "group": "build",
            "type": "shell",
            "command": "./fbt COMPACT=1 DEBUG=0 fap_deploy"
        },
        {
            // Press Ctrl+] to quit
            "label": "Serial Console",
            "type": "shell",
            "command": "./fbt cli",
            "group": "none",
            "isBackground": true,
            "options": {
                "env": {
                    "FBT_NO_SYNC": "0"
                }
            },
            "presentation": {
                "reveal": "always",
                "revealProblems": "never",
                "showReuseMessage": false,
                "panel": "dedicated",
                "focus": true,
                "echo": true,
                "close": true,
                "group": "Logger"
            }
        }
    ]
}