From 57139952995014ec154e5190a932c32f180aa5dc Mon Sep 17 00:00:00 2001 From: Kirill Dubovitskiy Date: Sat, 5 Aug 2023 02:15:20 -0700 Subject: Initial stab at adding more launch configurations --- .vscode/tasks.json | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 .vscode/tasks.json (limited to '.vscode/tasks.json') diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 00000000..aad0d2e4 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,49 @@ +// See https://go.microsoft.com/fwlink/?LinkId=733558 +// for the documentation about the tasks.json format +{ + "version": "2.0.0", + "tasks": [ + { + "label": "vscode-extension:build-watch", + "type": "npm", + "script": "esbuild-watch", + "path": "extension", + "isBackground": true, + "group": { + "kind": "build", + "isDefault": true + }, + "problemMatcher": [ + // We rely on tsc to emit type errors in a separate task + ], + // Depends on prevents the task from running until the other task has completed, not want we want + // does not start the extension + // "dependsOn": [ + // // esbuild does not emit type errors so we need a separate task for that + // // https://esbuild.github.io/content-types/#typescript + // "vscode-extension:tsc-watch" + // ] + }, + { + "label": "vscode-extension:tsc-watch", + "type": "npm", + "script": "watch", + "path": "extension", + "isBackground": true, + "problemMatcher": [ + "$tsc-watch" + ], + // Problems are currently broken due to path resolution not being relative to the workspace root + // The way cursorless does it it by having top level package.json which is not ideal. + // Multi root workspaces would help here + "presentation": { + "revealProblems": "onProblem", + "clear": true + }, + "group": { + "kind": "build", + "isDefault": true + } + } + ] +} \ No newline at end of file -- cgit v1.2.3-70-g09d2 From 400d1da490dab08a9b2ef2c88ab842ae5bc75620 Mon Sep 17 00:00:00 2001 From: Kirill Dubovitskiy Date: Sun, 6 Aug 2023 18:48:30 -0700 Subject: Added a launch configuration to start debugging both server + extension --- .gitignore | 1 - .vscode/launch.json | 14 ++++++- .vscode/settings.json | 3 ++ .vscode/tasks.json | 61 ++++++++++++++++------------ extension/package.json | 12 +++--- extension/src/activation/environmentSetup.ts | 2 +- 6 files changed, 57 insertions(+), 36 deletions(-) create mode 100644 .vscode/settings.json (limited to '.vscode/tasks.json') diff --git a/.gitignore b/.gitignore index 8f403dfe..ad37b017 100644 --- a/.gitignore +++ b/.gitignore @@ -131,7 +131,6 @@ dmypy.json **/node_modules **/out -**/.vscode/settings.json notes.txt cached_embeddings.pkl .ruff_cache diff --git a/.vscode/launch.json b/.vscode/launch.json index f6a37bed..2c7d1a27 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -3,6 +3,16 @@ // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", + "compounds": [ + { + "name": "Server + Extension (VSCode)", + "stopAll": true, + "configurations": [ + "Server", + "Extension (VSCode)" + ] + } + ], "configurations": [ { "name": "Server", @@ -19,7 +29,7 @@ // What about a watch task? - type errors? }, { - "name": "VSCode Extension", + "name": "Extension (VSCode)", "type": "extensionHost", "request": "launch", "cwd": "${workspaceFolder}/extension", @@ -29,7 +39,7 @@ "outFiles": [ "${workspaceFolder}/extension/out/**/*.js" ], - "preLaunchTask": "vscode-extension:build-watch", + "preLaunchTask": "vscode-extension:build", "env": { "CONTINUE_SERVER_URL": "http://localhost:8001" } diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..2195200a --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "python.defaultInterpreterPath": "${workspaceFolder}/continuedev/.venv/bin/python", +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json index aad0d2e4..3b6b62e8 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -1,44 +1,53 @@ -// See https://go.microsoft.com/fwlink/?LinkId=733558 -// for the documentation about the tasks.json format { "version": "2.0.0", "tasks": [ { - "label": "vscode-extension:build-watch", - "type": "npm", - "script": "esbuild-watch", - "path": "extension", - "isBackground": true, + "label": "vscode-extension:build", + "dependsOn": [ + // To detect compile errors + "vscode-extension:tsc", + // To bundle the code the same way we do for publishing + "vscode-extension:esbuild" + ], "group": { "kind": "build", "isDefault": true - }, - "problemMatcher": [ - // We rely on tsc to emit type errors in a separate task - ], - // Depends on prevents the task from running until the other task has completed, not want we want - // does not start the extension - // "dependsOn": [ - // // esbuild does not emit type errors so we need a separate task for that - // // https://esbuild.github.io/content-types/#typescript - // "vscode-extension:tsc-watch" - // ] + } }, { - "label": "vscode-extension:tsc-watch", + "label": "vscode-extension:esbuild", "type": "npm", - "script": "watch", + "script": "esbuild", "path": "extension", - "isBackground": true, "problemMatcher": [ - "$tsc-watch" + { + "pattern": [ + { + "regexp": "> (.*?):([0-9]+):([0-9]+): (warning|error): (.+)$", + "file": 1, + "line": 2, + "column": 3, + "severity": 4, + "message": 5 + } + ], + } + ], + }, + // Tsc currently errors out due to testing setup issues, will be resolved in a different PR + // This will be useful for preventing debugging if there are compile errors + { + "label": "vscode-extension:tsc", + "type": "shell", + "command": "echo lol", + // "script": "tsc", + // "path": "extension", + "problemMatcher": [ + "$tsc" ], - // Problems are currently broken due to path resolution not being relative to the workspace root - // The way cursorless does it it by having top level package.json which is not ideal. - // Multi root workspaces would help here "presentation": { "revealProblems": "onProblem", - "clear": true + "clear": true, }, "group": { "kind": "build", diff --git a/extension/package.json b/extension/package.json index 26998ec9..59a8d9df 100644 --- a/extension/package.json +++ b/extension/package.json @@ -185,17 +185,17 @@ "scripts": { "vscode:prepublish": "npm run esbuild-base -- --minify", "esbuild-base": "rm -rf ./out && esbuild ./src/extension.ts --bundle --outfile=out/extension.js --external:vscode --format=cjs --platform=node", - "esbuild": "rm -rf ./out && node esbuild.mjs", + "esbuild": "npm run esbuild-base -- --sourcemap", "esbuild-watch": "npm run esbuild-base -- --sourcemap --watch", - "test-compile": "tsc -p ./", + "tsc": "tsc -p ./", + "tsc-watch": "tsc -watch -p ./", + "typegen": "node scripts/typegen.js", "clientgen": "rm -rf src/client/ && npx @openapitools/openapi-generator-cli generate -i ../schema/openapi.json -g typescript-fetch -o src/client/ --additional-properties=supportsES6=true,npmVersion=8.19.2,typescriptThreePlus=true", "rebuild": "electron-rebuild -v 19.1.8 node-pty", - "watch": "tsc -watch -p ./", - "pretest": "npm run compile && npm run lint", + "pretest": "npm run build && npm run lint", "lint": "eslint src --ext ts", "test": "node ./out/test/runTest.js", "jest": "jest --config ./jest.config.js", - "typegen": "node scripts/typegen.js", "package": "npm install && npm run typegen && npm run clientgen && cd react-app && npm install && npm run build && cd .. && mkdir -p ./build && vsce package --out ./build" }, "devDependencies": { @@ -244,4 +244,4 @@ "optionalDependencies": { "@esbuild/android-arm": "^0.18.17" } -} +} \ No newline at end of file diff --git a/extension/src/activation/environmentSetup.ts b/extension/src/activation/environmentSetup.ts index 7c18913a..c8e8b85f 100644 --- a/extension/src/activation/environmentSetup.ts +++ b/extension/src/activation/environmentSetup.ts @@ -10,7 +10,7 @@ import * as vscode from "vscode"; import * as os from "os"; import fkill from "fkill"; import { finished } from "stream/promises"; -import * as request from "request"; +import request = require("request"); const exec = promisify(execCb); -- cgit v1.2.3-70-g09d2 From c3723a132f5c45adb765301b7854ca6b4b6ce82c Mon Sep 17 00:00:00 2001 From: Kirill Dubovitskiy Date: Sun, 6 Aug 2023 18:49:50 -0700 Subject: Added a task to install all dependencies from top level without having to figure out commands in multiple sub projects. Developers should run this before the first debugging session and anytime they pull --- .vscode/tasks.json | 12 +++++++----- continuedev/install-dependencies.sh | 16 ++++++++++++++++ install-dependencies.sh | 18 ++++++++++++++++++ 3 files changed, 41 insertions(+), 5 deletions(-) create mode 100755 continuedev/install-dependencies.sh create mode 100755 install-dependencies.sh (limited to '.vscode/tasks.json') diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 3b6b62e8..808b6d1f 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -49,10 +49,12 @@ "revealProblems": "onProblem", "clear": true, }, - "group": { - "kind": "build", - "isDefault": true - } - } + }, + // Install or update all dependencies for all projects in the monrepo + { + "label": "install-all-dependencies", + "type": "shell", + "command": "./install-dependencies.sh", + }, ] } \ No newline at end of file diff --git a/continuedev/install-dependencies.sh b/continuedev/install-dependencies.sh new file mode 100755 index 00000000..8f1b5d27 --- /dev/null +++ b/continuedev/install-dependencies.sh @@ -0,0 +1,16 @@ + +#!/bin/bash + +# Check if Poetry is installed +if ! command -v poetry &> /dev/null +then + echo "Poetry not found, installing..." + curl -sSL https://install.python-poetry.org | python3 - +fi + +# Install or update dependencies & create .venv if it doesn't exist +echo "Installing dependencies..." +poetry install + +echo "Running type generation..." +poetry run typegen diff --git a/install-dependencies.sh b/install-dependencies.sh new file mode 100755 index 00000000..a913f971 --- /dev/null +++ b/install-dependencies.sh @@ -0,0 +1,18 @@ + +#!/bin/bash +# This is used in a task in .vscode/tasks.json +# Start developing with: +# - Run Task -> Install Dependencies +# - Debug -> Server + Extension + +# Server +echo "Installing server dependencies..." +pushd continuedev || exit +./install-dependencies.sh +popd || exit + +# VSCode Extension (will also package GUI) +echo "Installing VSCode extension dependencies..." +pushd extension || exit +# This does way too many things inline but is the common denominator between many of the scripts +npm run package \ No newline at end of file -- cgit v1.2.3-70-g09d2 From 915199ac6aa5fa0fa2ccb1f9239c2ca1f84e03be Mon Sep 17 00:00:00 2001 From: Kirill Dubovitskiy Date: Mon, 7 Aug 2023 00:07:30 -0700 Subject: Touchup on esbuild configuration + installing depdencies --- .vscode/tasks.json | 1 + 1 file changed, 1 insertion(+) (limited to '.vscode/tasks.json') diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 808b6d1f..64e18f28 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -55,6 +55,7 @@ "label": "install-all-dependencies", "type": "shell", "command": "./install-dependencies.sh", + "problemMatcher": [], // Empty so users are not promted to select progress reporting }, ] } \ No newline at end of file -- cgit v1.2.3-70-g09d2