blob: 391f211e4aeba1d5c7d07cdf367acd1c49a6dd75 [file] [log] [blame]
{
"name": "cros-ide",
"displayName": "CrOS IDE",
"description": "ChromiumOS Development",
"version": "0.5.3",
"publisher": "Google",
"author": {
"name": "ChromeOS Velocity Team at Google"
},
"repository": "https://chromium.googlesource.com/chromiumos/chromite/+/HEAD/ide_tooling",
"license": "BSD-3-Clause",
"engines": {
"vscode": "^1.63.0",
"node": ">=14.0.0"
},
"icon": "media/cros-device.png",
"categories": [
"Linters",
"Other",
"Programming Languages",
"Testing"
],
"activationEvents": [
"onCommand:cros-ide.chrome.Build",
"onCommand:cros-ide.chrome.iBuild",
"onCommand:cros-ide.deviceManagement.addDevice",
"onCommand:cros-ide.deviceManagement.addExistingHosts",
"onCommand:cros-ide.deviceManagement.deleteDevice",
"onCommand:cros-ide.deviceManagement.connectToDeviceForScreen",
"onCommand:cros-ide.deviceManagement.connectToDeviceForShell",
"onCommand:cros-ide.deviceManagement.openSystemLogViewer",
"onCommand:cros-ide.deviceManagement.flashPrebuiltImage",
"onCommand:cros-ide.deviceManagement.crosfleetLogin",
"onCommand:cros-ide.deviceManagement.refreshLeases",
"onCommand:cros-ide.deviceManagement.addLease",
"onCommand:cros-ide.deviceManagement.abandonLease",
"onCommand:cros-ide.deviceManagement.copyHostname",
"onCommand:cros-ide.deviceManagement.runTastTests",
"onCommand:cros-ide.refreshBoardsPackages",
"onCommand:cros-ide.codeSearchOpenCurrentFile",
"onCommand:cros-ide.codeSearchCopyCurrentFile",
"onCommand:cros-ide.codeSearchSearchForSelection",
"onCommand:cros-ide.crosWorkonStart",
"onCommand:cros-ide.crosWorkonStop",
"onCommand:cros-ide.selectBoard",
"onCommand:cros-ide.fileIdeBug",
"onCommand:cros-ide.resetUserID",
"onCommand:cros-ide.openEbuild",
"onCommand:workbench.action.tasks.runTask",
"onView:devices",
"onView:boards-packages",
"onView:cros-ide-status",
"onLanguage:c",
"onLanguage:cpp",
"onLanguage:gn",
"onLanguage:go",
"onLanguage:python",
"onLanguage:shellscript",
"onLanguage:typescript",
"onLanguage:upstart"
],
"main": "./dist/extension.js",
"contributes": {
"commands": [
{
"command": "cros-ide.chrome.build",
"category": "CrOS",
"title": "Build + Deploy Ash + Lacros to DUT",
"icon": "$(window)",
"enablement": "config.cros-ide.underDevelopment.chromiumBuild"
},
{
"command": "cros-ide.chrome.watchBuild",
"category": "CrOS",
"title": "Build + Deploy Ash + Lacros to DUT, restarts build on save of any file",
"icon": "$(window)",
"enablement": "config.cros-ide.underDevelopment.chromiumBuild"
},
{
"command": "cros-ide.deviceManagement.connectToDeviceForScreen",
"category": "CrOS",
"title": "Connect to Device (VNC)",
"icon": "$(window)"
},
{
"command": "cros-ide.deviceManagement.connectToDeviceForShell",
"category": "CrOS",
"title": "Connect to Device (Shell)",
"icon": "$(terminal)"
},
{
"command": "cros-ide.deviceManagement.openSystemLogViewer",
"category": "CrOS",
"title": "Open System Log Viewer"
},
{
"command": "cros-ide.deviceManagement.addDevice",
"category": "CrOS",
"title": "Add New Device",
"icon": "$(add)"
},
{
"command": "cros-ide.deviceManagement.addExistingHosts",
"category": "CrOS",
"title": "Add Existing Device Host Names from the SSH Config File",
"icon": "$(add)"
},
{
"command": "cros-ide.deviceManagement.deleteDevice",
"category": "CrOS",
"title": "Delete Device",
"icon": "$(remove)"
},
{
"command": "cros-ide.deviceManagement.flashPrebuiltImage",
"category": "CrOS",
"title": "Flash Image to Device",
"icon": "$(cloud-download)"
},
{
"command": "cros-ide.deviceManagement.crosfleetLogin",
"category": "CrOS",
"title": "Log in to crosfleet"
},
{
"command": "cros-ide.deviceManagement.refreshLeases",
"category": "CrOS",
"title": "Refresh Leased Device List",
"icon": "$(refresh)"
},
{
"command": "cros-ide.deviceManagement.addLease",
"category": "CrOS",
"title": "Lease a Device",
"icon": "$(add)"
},
{
"command": "cros-ide.deviceManagement.abandonLease",
"category": "CrOS",
"title": "Abandon the Device",
"icon": "$(close)"
},
{
"command": "cros-ide.deviceManagement.copyHostname",
"category": "CrOS",
"title": "Copy Hostname"
},
{
"command": "cros-ide.deviceManagement.runTastTests",
"category": "CrOS",
"title": "Run tast tests",
"icon": "$(play)"
},
{
"command": "cros-ide.refreshBoardsPackages",
"category": "CrOS",
"title": "Refresh Boards and Packages",
"icon": "$(refresh)",
"enablement": "cros-ide.chrootPath"
},
{
"command": "cros-ide.codeSearchOpenCurrentFile",
"category": "CrOS",
"title": "Open in Code Search"
},
{
"command": "cros-ide.codeSearchCopyCurrentFile",
"category": "CrOS",
"title": "Copy Code Search URL to clipboard"
},
{
"command": "cros-ide.codeSearchSearchForSelection",
"category": "CrOS",
"title": "Search for selection in Code Search"
},
{
"command": "cros-ide.crosWorkonStart",
"category": "CrOS",
"title": "Start Working on a new Package",
"icon": "$(add)"
},
{
"command": "cros-ide.crosWorkonStop",
"category": "CrOS",
"title": "Stop Working On",
"icon": "$(remove)"
},
{
"command": "cros-ide.openEbuild",
"category": "CrOS",
"title": "Open Ebuild",
"icon": "$(edit)"
},
{
"command": "cros-ide.selectBoard",
"category": "CrOS",
"title": "Select target board"
},
{
"command": "cros-ide.fileIdeBug",
"category": "CrOS",
"title": "File a bug on Buganizer"
},
{
"command": "cros-ide.resetUserID",
"category": "CrOS",
"title": "Generate a new random user ID for metrics collection"
},
{
"command": "cros-ide.coverage.generate",
"category": "CrOS",
"title": "Generate Coverage Data",
"enablement": "config.cros-ide.underDevelopment.testCoverage"
},
{
"command": "cros-ide.coverage.showReport",
"category": "CrOS",
"title": "Show Coverage Report",
"enablement": "config.cros-ide.underDevelopment.testCoverage"
},
{
"command": "cros-ide.gerrit.collapseAllComments",
"category": "CrOS",
"title": "Collapse All Comments",
"icon": "$(collapse-all)",
"enablement": "config.cros-ide.gerrit.enabled"
},
{
"command": "cros-ide.showHelpForBoardsPackages",
"title": "Show Help",
"icon": "$(question)"
},
{
"command": "cros-ide.showHelpForDevices",
"title": "Show Help",
"icon": "$(question)"
},
{
"command": "cros-ide.showHelpForGerrit",
"title": "CrOS IDE Help",
"icon": "$(question)"
},
{
"command": "cros-ide.showHelpForIdeStatus",
"title": "Show Help",
"icon": "$(question)"
},
{
"command": "cros-ide.showHelpForLint",
"title": "CrOS IDE Help",
"icon": "$(question)"
}
],
"viewsContainers": {
"activitybar": [
{
"id": "cros-view",
"title": "CrOS Development",
"icon": "media/cros-device.svg"
}
]
},
"views": {
"cros-view": [
{
"id": "devices",
"name": "Devices"
},
{
"id": "boards-packages",
"name": "Boards and Packages"
},
{
"id": "cros-ide-status",
"name": "IDE Status"
}
]
},
"menus": {
"comments/commentThread/title": [
{
"command": "cros-ide.gerrit.collapseAllComments"
}
],
"editor/context": [
{
"command": "cros-ide.codeSearchOpenCurrentFile"
},
{
"command": "cros-ide.codeSearchCopyCurrentFile"
},
{
"command": "cros-ide.codeSearchSearchForSelection"
}
],
"editor/title": [
{
"command": "cros-ide.deviceManagement.runTastTests",
"when": "resourcePath =~ //src/platform/tast-tests[^/]*/src/chromiumos/tast/(local|remote)/bundles/[^/]+/[^/]+/[^/]+.go$/",
"group": "navigation"
}
],
"view/title": [
{
"command": "cros-ide.refreshBoardsPackages",
"when": "view == boards-packages",
"group": "navigation"
},
{
"command": "cros-ide.showHelpForBoardsPackages",
"when": "view == boards-packages",
"group": "navigation"
},
{
"command": "cros-ide.showHelpForDevices",
"when": "view == devices",
"group": "navigation"
},
{
"command": "cros-ide.showHelpForGerrit",
"when": "view == workbench.panel.comments",
"group": "navigation"
},
{
"command": "cros-ide.showHelpForIdeStatus",
"when": "view == cros-ide-status",
"group": "navigation"
},
{
"command": "cros-ide.showHelpForLint",
"when": "view == workbench.panel.markers.view",
"group": "navigation"
}
],
"view/item/context": [
{
"command": "cros-ide.deviceManagement.addDevice",
"when": "view == devices && viewItem == category-owned",
"group": "inline"
},
{
"command": "cros-ide.deviceManagement.connectToDeviceForScreen",
"when": "view == devices && viewItem =~ /^device-/",
"group": "inline@1"
},
{
"command": "cros-ide.deviceManagement.connectToDeviceForScreen",
"when": "view == devices && viewItem =~ /^device-/",
"group": "1_connect@1"
},
{
"command": "cros-ide.deviceManagement.connectToDeviceForShell",
"when": "view == devices && viewItem =~ /^device-/",
"group": "inline@2"
},
{
"command": "cros-ide.deviceManagement.connectToDeviceForShell",
"when": "view == devices && viewItem =~ /^device-/",
"group": "1_connect@2"
},
{
"command": "cros-ide.deviceManagement.flashPrebuiltImage",
"when": "view == devices && viewItem =~ /^device-/",
"group": "inline@3"
},
{
"command": "cros-ide.deviceManagement.flashPrebuiltImage",
"when": "view == devices && viewItem =~ /^device-/",
"group": "2_operation@1"
},
{
"command": "cros-ide.deviceManagement.openSystemLogViewer",
"when": "view == devices && viewItem =~ /^device-/ && config.cros-ide.underDevelopment.systemLogViewer",
"group": "2_operation@2"
},
{
"command": "cros-ide.deviceManagement.copyHostname",
"when": "view == devices && viewItem =~ /^device-/",
"group": "8_copy"
},
{
"command": "cros-ide.deviceManagement.deleteDevice",
"when": "view == devices && viewItem == device-owned",
"group": "inline@9"
},
{
"command": "cros-ide.deviceManagement.deleteDevice",
"when": "view == devices && viewItem == device-owned",
"group": "9_delete"
},
{
"command": "cros-ide.deviceManagement.addLease",
"when": "view == devices && viewItem == category-leased",
"group": "inline@1"
},
{
"command": "cros-ide.deviceManagement.abandonLease",
"when": "view == devices && viewItem == device-leased",
"group": "inline@9"
},
{
"command": "cros-ide.deviceManagement.abandonLease",
"when": "view == devices && viewItem == device-leased",
"group": "9_delete"
},
{
"command": "cros-ide.deviceManagement.refreshLeases",
"when": "view == devices && viewItem == category-leased",
"group": "inline@2"
},
{
"command": "cros-ide.crosWorkonStart",
"when": "view == boards-packages && viewItem == board",
"group": "inline"
},
{
"command": "cros-ide.crosWorkonStop",
"when": "view == boards-packages && viewItem == package",
"group": "inline"
},
{
"command": "cros-ide.openEbuild",
"when": "view == boards-packages && viewItem == package",
"group": "inline"
},
{
"command": "cros-ide.coverage.generate",
"when": "view == boards-packages && viewItem == package && config.cros-ide.underDevelopment.testCoverage"
},
{
"command": "cros-ide.coverage.showReport",
"when": "view == boards-packages && viewItem == package && config.cros-ide.underDevelopment.testCoverage"
}
],
"commandPalette": [
{
"command": "cros-ide.deviceManagement.copyHostname",
"when": "false"
}
]
},
"viewsWelcome": [
{
"view": "boards-packages",
"contents": "This view shows boards set up in the chroot and packages marked active with [cros_workon start](https://chromium.googlesource.com/chromiumos/docs/+/HEAD/developer_guide.md#run-cros_workon-start). You can start and stop working on new packages from the UI. Selecting a new board and initializizing the build must be done on the command line. Visit [the developer guide](https://chromium.googlesource.com/chromiumos/docs/+/HEAD/developer_guide.md#Select-a-board) to learn more.\n[Show Boards and Packages](command:cros-ide.dismissBoardsPkgsWelcome)",
"when": "config.cros-ide.boardsAndPackages.showWelcomeMessage"
},
{
"view": "boards-packages",
"contents": "You have not yet opened a folder with ChromeOS sources (for example, platform2).\n[Open Folder](command:vscode.openFolder)\nCrOS IDE uses source location to detect the chroot and show [initialized boards](https://chromium.googlesource.com/chromiumos/docs/+/HEAD/developer_guide.md#Select-a-board).",
"when": "!config.cros-ide.boardsAndPackages.showWelcomeMessage && !cros-ide.chrootPath"
}
],
"configuration": {
"title": "CrOS IDE",
"properties": {
"cros-ide.board": {
"type": "string",
"description": "The board to use for generating C++ cross references and autocompletion"
},
"cros-ide.boardsAndPackages.showWelcomeMessage": {
"type": "boolean",
"description": "Show a description of the view and a button to go to the actual content.",
"default": true
},
"cros-ide.chrome.ashBuildDir": {
"type": "string",
"description": "Build directory for ash-chrome build.",
"default": "out/Default"
},
"cros-ide.chrome.dutBoard": {
"type": "string",
"description": "Type of board for the DUT",
"default": "nocturne"
},
"cros-ide.chrome.dutName": {
"type": "string",
"description": "Name to use for SSH to DUT for deploy chrome",
"default": "DUT"
},
"cros-ide.codeSearch": {
"type": "string",
"enum": [
"public",
"internal",
"gitiles"
],
"description": "Code Search instance to open files in",
"default": "public"
},
"cros-ide.codeSearchHash": {
"type": "boolean",
"description": "Link to the hash of the current revision instead of TOT",
"default": false
},
"cros-ide.cppCodeCompletion.useHardcodedMapping": {
"type": "boolean",
"description": "Disable the new logic to automatically detect a Portage package from the filepath, and use hardcoded mapping instead",
"default": false
},
"cros-ide.gerrit.enabled": {
"type": "boolean",
"markdownDescription": "Enable Gerrit comments.",
"default": true
},
"cros-ide.platformEC.board": {
"type": "string",
"description": "EC target, for example, bloonchipper."
},
"cros-ide.platformEC.mode": {
"type": "string",
"enum": [
"RW",
"RO"
],
"description": "Firmware mode.",
"default": "RW"
},
"cros-ide.platformEC.build": {
"type": "string",
"enum": [
"Makefile",
"Zephyr"
],
"description": "Build system.",
"default": "Makefile"
},
"cros-ide.spellchecker": {
"type": "boolean",
"description": "Enable Tricium spellchecker. Requires a reload to take effect.",
"default": true
},
"cros-ide.underDevelopment.chromiumBuild": {
"type": "boolean",
"description": "Enable build + deploy for chromium code (incomplete)",
"default": false
},
"cros-ide.underDevelopment.crosFormat": {
"type": "boolean",
"description": "Format files with 'cros format' (under development)",
"default": false
},
"cros-ide.underDevelopment.deviceManagementV2": {
"type": "boolean",
"description": "Enable experimental Enhanced Device Management features, such as a more complete UX for DUT setup, and auto ssh configuration.",
"default": false
},
"cros-ide.underDevelopment.deviceManagement": {
"type": "boolean",
"description": "Enable experimental Device Management features.",
"default": false
},
"cros-ide.underDevelopment.platform2GtestDebugging": {
"type": "boolean",
"description": "Enable platform2 gtest debugging support",
"default": true
},
"cros-ide.underDevelopment.platformEC": {
"type": "boolean",
"description": "Enable Platform EC support (under development)",
"default": false
},
"cros-ide.underDevelopment.systemLogViewer": {
"type": "boolean",
"description": "Enable display system log viewer (incomplete)",
"default": false
},
"cros-ide.underDevelopment.tast": {
"type": "boolean",
"description": "Enable Tast Support",
"default": false
},
"cros-ide.underDevelopment.testCoverage": {
"type": "boolean",
"description": "Enable Test Coverage (incomplete)",
"default": false
},
"cros-ide.deviceManagement.devices": {
"type": "array",
"scope": "machine-overridable",
"description": "List of developer-owned device hostnames",
"items": {
"type": "string"
}
},
"cros-ide.metrics.collectMetrics": {
"type": "boolean",
"description": "Enable pseudonymous metrics collection. Randomly generated unique user ID resets automatically every 180 days. You can also reset it anytime by running the command in the Command Palette.",
"default": false
},
"cros-ide.metrics.showMessage": {
"type": "boolean",
"description": "Show information on metrics collection.",
"default": true
},
"cros-ide.paths.depotTools": {
"type": "string",
"markdownDescription": "Path to depot tools. By default we search for depot tools in the `$PATH` and then in `~/depot_tools`. When set, the path specified here will be searched first. Use it to point CrOS IDE to commands such as `cipd`."
}
}
},
"languages": [
{
"id": "shellscript",
"extensions": [
".eclass"
],
"aliases": [
"Eclass"
]
},
{
"id": "gn",
"extensions": [
".gn",
".gni"
]
},
{
"id": "upstart",
"aliases": [
"Upstart"
],
"filenamePatterns": [
"**/init/*.conf",
"**/upstart/*.conf"
],
"configuration": "./languages/upstart-language-configuration.json"
},
{
"comment": "https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/docs/ide-support.md#odd-file-types",
"id": "c",
"filenames": [
"gpio.wrap",
"gpio.inc"
],
"extensions": [
".tasklist",
".irqlist",
".mocklist",
".testlist"
]
},
{
"comment": "https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/docs/ide-support.md#odd-file-types",
"id": "makefile",
"filenames": [
"Makefile.rules",
"Makefile.toolchain"
]
}
],
"grammars": [
{
"language": "upstart",
"scopeName": "source.upstart",
"path": "./languages/upstart.tmLanguage.json",
"embeddedLanguages": {
"meta.embedded.block.shellscript": "shellscript"
}
}
],
"taskDefinitions": [
{
"type": "platform-ec-host-test",
"properties": {
"target": {
"type": "string",
"description": "Test target to run"
}
},
"when": "config.cros-ide.underDevelopment.platformEC"
}
],
"problemMatchers": [
{
"name": "platform-ec-host-unittest",
"label": "Host unit tests in Platform EC",
"fileLocation": [
"relative",
"${workspaceFolder}"
],
"pattern": [
{
"regexp": "(test/[^:]*):([0-9]+): (.*)",
"file": 1,
"location": 2,
"message": 3
}
]
}
]
},
"scripts": {
"build": "rm -rf dist && webpack",
"build-release": "rm -rf dist && webpack --mode production --devtool hidden-source-map",
"build-tests": "rm -rf out && tsc -p . --outDir out",
"build-all": "npm run build && npm run build-tests",
"test": "npm run unit-test && npm run integration-test",
"unit-test": "npm run build-tests && NODE_PATH=out/test/unit/injected_modules NODE_OPTIONS=$NODE_OPTIONS' -r source-map-support/register' jasmine --config=src/test/unit/jasmine.json",
"integration-test": "npm run build-all && rm -rf .vscode-test/user-data && xvfb-run -a node ./out/test/integration/runTest.js",
"manual-test:cpp_xrefs": "NODE_PATH=out/test/unit/injected_modules npx ts-node ./src/test/manual/cpp_xrefs/main.ts",
"lint": "npm run lint-code && npm run lint-license",
"lint-code": "gts lint",
"lint-license": "jsgl --local .",
"fix": "gts fix",
"preupload": "npm run lint && npm run test",
"vscode:prepublish": "npm run build-release"
},
"dependencies": {
"@emotion/react": "^11.10.4",
"@emotion/styled": "^11.10.4",
"@mui/icons-material": "^5.10.9",
"@mui/lab": "^5.0.0-alpha.103",
"@mui/material": "^5.10.9",
"@novnc/novnc": "^1.3.0",
"date-fns": "^2.28.0",
"glob": "^7.1.7",
"is-ip": "^5.0.0",
"is-valid-hostname": "^1.0.2",
"js-base64": "^3.7.2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-hotkeys": "^2.0.0",
"semver": "^7.3.7",
"source-map-support": "^0.5.21",
"ssh-config": "^4.1.6",
"uuid": "^8.3.2",
"ws": "^8.6.0"
},
"devDependencies": {
"@types/glob": "^7.1.4",
"@types/jasmine": "^4.0.0",
"@types/mock-fs": "^4.13.1",
"@types/node": "^14.17.6",
"@types/react": "^18.0.21",
"@types/react-dom": "^18.0.6",
"@types/semver": "^7.3.9",
"@types/source-map-support": "^0.5.6",
"@types/ssh2": "^0.5.52",
"@types/uuid": "^8.3.4",
"@types/vscode": "^1.60.0",
"@types/vscode-webview": "^1.57.0",
"@types/ws": "^8.5.3",
"@typescript-eslint/eslint-plugin": "^5.1.0",
"@typescript-eslint/parser": "^5.1.0",
"@vscode/test-electron": "^2.1.3",
"commander": "^9.4.0",
"copy-webpack-plugin": "^10.2.4",
"esbuild-loader": "^2.20.0",
"eslint": "^7",
"eslint-config-google": "^0.14.0",
"eslint-plugin-import": "^2.26.0",
"git-revision-webpack-plugin": "^5.0.0",
"gts": "^3.1.0",
"jasmine": "^4.1.0",
"js-green-licenses": "^3.0.1",
"mock-fs": "^5.2.0",
"ovsx": "^0.5.1",
"ssh2": "^1.10.0",
"ts-loader": "^9.2.6",
"typescript": "^4.5.5",
"vscode-tmgrammar-test": "^0.1.1",
"vscode-uri": "^3.0.3",
"webpack": "^5.71.0",
"webpack-cli": "^4.9.2"
}
}