{
	"version": "2.0.0",
	"tasks": [
		{
			"label": "VS Code Extension Prelaunch",
			"type": "npm",
			"script": "prelaunch:vscode",
			"group": "build",
		},
		{
			"label": "VS Code Extension Prelaunch [Web]",
			"type": "npm",
			"script": "build:web",
			"group": "build"
		},
		{
			"label": "VS Code Extension Prelaunch [GPU Viewer]",
			"dependsOn": [
				"VS Code Extension Prelaunch",
				"Compile Tinymist GPU Viewer Extension",
				"Build Tinymist GPU Viewer Binary",
				"Install Tinymist GPU Viewer Binary"
			],
			"dependsOrder": "sequence",
		},
		{
			"label": "VS Code Extension Prelaunch Preview",
			"dependsOn": [
				  "Compile Typst Preview Extension",
				  "Copy Debug LSP Binary to Typst Preview Extension"
			],
			"dependsOrder": "sequence",
		},
		{
			"label": "VS Code Extension Prelaunch [Release]",
			"dependsOn": [
				"Compile VS Code Extension",
				"Build Release LSP Binary",
				"Copy Release LSP Binary to VS Code Extension"
			],
			"dependsOrder": "sequence",
		},
		{
			"label": "Build VS Code Extension Bundle",
			"dependsOn": [
				"Compile VS Code Extension",
				"Build Release LSP Binary",
				"Copy Release LSP Binary to VS Code Extension",
				"Generate VS Code Extension Bundle",
				"Compile Typst Preview Extension",
				"Copy Release LSP Binary to Typst Preview Extension",
				"Generate Typst Preview Extension Bundle"
			],
			"dependsOrder": "sequence",
		},
		{
			"label": "Compile VS Code Extension",
			"type": "npm",
			"script": "compile",
			"path": "editors/vscode",
			"group": "build",
		},
		{
			"label": "Compile VS Code Extension [Web]",
			"type": "npm",
			"script": "compile:web",
			"path": "editors/vscode",
			"group": "build",
		},
		{
			"label": "Generate VS Code Extension Bundle",
			"type": "npm",
			"script": "package",
			"path": "editors/vscode",
			"group": "build",
		},
		{
			"label": "Compile Typst Preview Extension",
			"type": "npm",
			"script": "compile",
			"path": "contrib/typst-preview/editors/vscode",
			"group": "build",
		},
		{
			"label": "Compile Tinymist GPU Viewer Extension",
			"type": "npm",
			"script": "compile",
			"path": "contrib/tinymist-gpu-viewer/editors/vscode",
			"group": "build",
		},
		{
			"label": "Build Tinymist GPU Viewer Binary",
			"type": "cargo",
			"command": "build",
			"args": [
				"--bin",
				"tinymist-viewer"
			],
			"problemMatcher": [
				"$rustc"
			],
			"group": "build"
		},
		{
			"label": "Install Tinymist GPU Viewer Binary",
			"type": "shell",
			"windows": {
				"command": "powershell",
				"args": [
					"-NoProfile",
					"-ExecutionPolicy",
					"Bypass",
					"-Command",
					"New-Item -ItemType Directory -Force -Path \"${workspaceFolder}\\contrib\\tinymist-gpu-viewer\\editors\\vscode\\bin\" | Out-Null; Copy-Item -Force -Path \"${workspaceFolder}\\target\\debug\\tinymist-viewer.exe\" -Destination \"${workspaceFolder}\\contrib\\tinymist-gpu-viewer\\editors\\vscode\\bin\\tinymist-viewer.exe\""
				]
			},
			"linux": {
				"command": "sh",
				"args": [
					"-c",
					"mkdir -p \"${workspaceFolder}/contrib/tinymist-gpu-viewer/editors/vscode/bin\" && cp \"${workspaceFolder}/target/debug/tinymist-viewer\" \"${workspaceFolder}/contrib/tinymist-gpu-viewer/editors/vscode/bin/tinymist-viewer\""
				]
			},
			"osx": {
				"command": "sh",
				"args": [
					"-c",
					"mkdir -p \"${workspaceFolder}/contrib/tinymist-gpu-viewer/editors/vscode/bin\" && cp \"${workspaceFolder}/target/debug/tinymist-viewer\" \"${workspaceFolder}/contrib/tinymist-gpu-viewer/editors/vscode/bin/tinymist-viewer\""
				]
			},
			"group": "build"
		},
		{
			"label": "Generate Typst Preview Extension Bundle",
			"type": "npm",
			"script": "package",
			"path": "contrib/typst-preview/editors/vscode",
			"group": "build",
		},
		{
			"label": "Build Release LSP Binary",
			"type": "cargo",
			"command": "build",
			"args": [
				"--release",
				"--bin",
				"tinymist"
			],
			"problemMatcher": [
				"$rustc"
			],
			"group": "build"
		},
		{
			"label": "Copy Release LSP Binary to VS Code Extension",
			"type": "shell",
			"windows": {
				"command": "cp",
				"args": [
					"${workspaceFolder}\\target\\release\\tinymist.exe",
					"${workspaceFolder}\\editors\\vscode\\out\\"
				]
			},
			"linux": {
				"command": "cp",
				"args": [
					"${workspaceFolder}/target/release/tinymist",
					"${workspaceFolder}/editors/vscode/out/"
				]
			},
			"osx": {
				"command": "cp",
				"args": [
					"${workspaceFolder}/target/release/tinymist",
					"${workspaceFolder}/editors/vscode/out/"
				]
			}
		},
		{
			"label": "Copy Debug LSP Binary to Typst Preview Extension",
			"type": "shell",
			"windows": {
				"command": "cp",
				"args": [
					"${workspaceFolder}\\target\\debug\\tinymist.exe",
					"${workspaceFolder}\\contrib\\typst-preview\\editors\\vscode\\out\\"
				]
			},
			"linux": {
				"command": "cp",
				"args": [
					"${workspaceFolder}/target/debug/tinymist",
					"${workspaceFolder}/contrib/typst-preview/editors/vscode/out/"
				]
			},
			"osx": {
				"command": "cp",
				"args": [
					"${workspaceFolder}/target/debug/tinymist",
					"${workspaceFolder}/contrib/typst-preview/editors/vscode/out/"
				]
			}
		},
		{
			"label": "Copy Release LSP Binary to Typst Preview Extension",
			"type": "shell",
			"windows": {
				"command": "cp",
				"args": [
					"${workspaceFolder}\\target\\release\\tinymist.exe",
					"${workspaceFolder}\\contrib\\typst-preview\\editors\\vscode\\out\\"
				]
			},
			"linux": {
				"command": "cp",
				"args": [
					"${workspaceFolder}/target/release/tinymist",
					"${workspaceFolder}/contrib/typst-preview/editors/vscode/out/"
				]
			},
			"osx": {
				"command": "cp",
				"args": [
					"${workspaceFolder}/target/release/tinymist",
					"${workspaceFolder}/contrib/typst-preview/editors/vscode/out/"
				]
			}
		}
	]
}
