blob: 9d72ed97d6198c7d96653c5dd3d646e133b5c88b [file] [log] [blame]
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
// Available variables which can be used inside of strings.
// ${workspaceRoot}: the root folder of the team
// ${file}: the current opened file
// ${fileBasename}: the current opened file's basename
// ${fileDirname}: the current opened file's dirname
// ${fileExtname}: the current opened file's extension
// ${cwd}: the current working directory of the spawned process
"version": "2.0.0",
"tasks": [
// Invokes ninja in the 'out/active' directory, which is created with
// the 'gn gen' task (see below).
{
"label": "build",
"group": {
"kind": "build",
"isDefault": true
},
"type": "shell",
"linux": {
"command": "sh",
"args": [
"-c",
"ninja && echo Done"
],
},
"osx": {
"command": "sh",
"args": [
"-c",
"ninja && echo Done"
],
},
"windows": {
"command": "/C",
"args": [
"ninja && echo Done",
],
"options": {
"shell": {
"executable": "cmd"
},
}
},
"options": {
"cwd": "${workspaceRoot}/out/active",
},
"presentation": {
"echo": false,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": true,
},
"problemMatcher": {
"owner": "cpp",
"fileLocation": "absolute",
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
},
// Generates a GN build directory at 'out/<build-type>' with the
// is_debug argument set to to true iff the build-type is Debug.
// A symbolic link to this build directory is created at 'out/active'
// which is used to track the active build directory.
{
"label": "gn gen",
"type": "shell",
"linux": {
"command": "sh",
"args": [
"-c",
"gn gen 'out/${input:buildType}' --args=is_debug=$(if [ '${input:buildType}' = 'Debug' ]; then echo 'true'; else echo 'false'; fi) && (rm -fr out/active || true) && ln -s ${input:buildType} out/active",
],
},
"osx": {
"command": "sh",
"args": [
"-c",
"gn gen 'out/${input:buildType}' --args=is_debug=$(if [ '${input:buildType}' = 'Debug' ]; then echo 'true'; else echo 'false'; fi) && (rm -fr out/active || true) && ln -s ${input:buildType} out/active",
],
},
"windows": {
"command": "/C",
"args": [
"(IF \"${input:buildType}\" == \"Debug\" ( gn gen \"out\\${input:buildType}\" --args=is_debug=true ) ELSE ( gn gen \"out\\${input:buildType}\" --args=is_debug=false )) && (IF EXIST \"out\\active\" rmdir \"out\\active\" /q /s) && (mklink /j \"out\\active\" \"out\\${input:buildType}\")",
],
"options": {
"shell": {
"executable": "cmd"
},
}
},
"options": {
"cwd": "${workspaceRoot}"
},
"problemMatcher": [],
},
// Rebases the current branch on to origin/main and then calls
// `gclient sync`.
{
"label": "sync",
"type": "shell",
"linux": {
"command": "sh",
"args": [
"-c",
"git fetch origin && git rebase origin/main && gclient sync && echo Done"
],
},
"osx": {
"command": "sh",
"args": [
"-c",
"git fetch origin && git rebase origin/main && gclient sync && echo Done"
],
},
"windows": {
"command": "/C",
"args": [
"git fetch origin && git rebase origin/main && gclient sync && echo Done",
],
"options": {
"shell": {
"executable": "cmd"
},
}
},
"options": {
"cwd": "${workspaceRoot}"
},
"problemMatcher": [],
},
// Pushes the changes at HEAD to gerrit for review
{
"label": "push",
"type": "shell",
"command": "git",
"args": [
"push",
"origin",
"HEAD:refs/for/main"
],
"options": {
"cwd": "${workspaceRoot}"
},
"problemMatcher": [],
}
],
"inputs": [
{
"id": "buildType",
"type": "pickString",
"options": [
"Debug",
"Release",
],
"default": "Debug",
"description": "The type of build",
},
]
}