diff options
Diffstat (limited to 'extension/scripts')
| -rw-r--r-- | extension/scripts/install_from_source.py | 66 | 
1 files changed, 41 insertions, 25 deletions
diff --git a/extension/scripts/install_from_source.py b/extension/scripts/install_from_source.py index cd8f5cde..b9079446 100644 --- a/extension/scripts/install_from_source.py +++ b/extension/scripts/install_from_source.py @@ -4,30 +4,35 @@ import os  import subprocess -def run(cmd: str): -    return subprocess.run(cmd, shell=True, capture_output=False) +def run(cmd, suppress_errors=False): +    return subprocess.run(cmd, shell=True, capture_output=suppress_errors) -def get_latest_version() -> str: + +def remove_existing_vsix_files(build_directory):      # Ensure build directory exists -    if not os.path.exists("../build"): -        os.mkdir("../build") -     -    def version_tuple(filename): -        version = filename.split("-")[1].split(".vsix")[0] -        return tuple(map(int, version.split("."))) - -    versions = [file for file in os.listdir("../build") if file.endswith(".vsix")] -     -    # Ensure we have at least one version -    if len(versions) == 0: -        return None -     -    return max(versions, key=version_tuple) +    if not os.path.exists(build_directory): +        os.mkdir(build_directory) +    for filename in os.listdir(build_directory): +        if filename.endswith(".vsix"): +            file_path = os.path.join(build_directory, filename) +            os.remove(file_path) + + +def return_vsix(build_directory): +    vsix_files = [ +        filename +        for filename in os.listdir(build_directory) +        if filename.endswith(".vsix") +    ] +    return os.path.join(build_directory, vsix_files[0]) +  def main():      # Clear out old stuff -    run(f"rm -rf ../build/{get_latest_version()}") -    run("rm ../server/continuedev-0.1.2-py3-none-any.whl") +    build_directory = "../build" +    remove_existing_vsix_files(build_directory) +    run("rm ../server/continuedev-0.1.2-py3-none-any.whl", True) +      # Check for Python and Node - we won't install them, but will warn      resp1 = run("python --version") @@ -51,20 +56,31 @@ def main():          print("Poetry is required for Continue but is not installed on your machine. See https://python-poetry.org/docs/#installation to download the latest version, then try again.")          return +    editor_cmd = None +    editor_name = None +    for cmd, editor in [('code', 'VSCode'), ('codium', 'VSCodium')]: +        resp = run(f"{cmd} --version", True) +        if resp.returncode == 0: +            print(f"{editor} version {resp.stdout.decode()}") +            editor_cmd = cmd +            editor_name = editor +            break + +    if not editor_cmd: +        print("No code editor command is available. Please install a code editor and try again.") +        return +      resp = run("cd ../../continuedev; poetry install; poetry run typegen") -    resp = run( -        "cd ..; npm i; cd react-app; npm i; cd ..; npm run package") +    resp = run("cd ..; npm i; cd react-app; npm i; cd ..; npm run package")      if resp.stderr:          print("Error packaging the extension. Please try again.")          print("This was the error: ", resp.stderr)          return -    latest = get_latest_version() -    resp = run(f"cd ..; code --install-extension ./build/{latest}") -     -    print("Continue VS Code extension installed successfully. Please restart VS Code to use it.") +    run(f"NODE_OPTIONS='--no-warnings' {editor_cmd} --install-extension {return_vsix(build_directory)}") +    print(f"Continue extension installed successfully in {editor_name}. Please restart your editor to use it.")  if __name__ == "__main__":  | 
