No project description provided
Project description
uVSCEM
unofficial VSCode Extension Manager
This little program is designed to address some limitations in air-gapped and proxy environments that currently occur due to partially missing proxy support in Visual Studio Code.
It allows for the installation of extensions in DevContainers, even when a proxy is involved, by downloading and installing them manually via Python's requests library.
It's currently a work in progress, and complete offline installation is still missing (integrating it is a minor step), but it should be good enough to be used as "postAttachCommand" in devcontainer.json for environments where a proxy is involved and where automatic extension installation currently fails due to various errors.
It's a workaround for the following upstream issues in Visual Studio Code:
- #12588: Extension Proxy Support
- #29910: CLI Proxy Support
- How to make use of "code" cli command in postAttachCommand script
Getting started
In your Dockerfile add
RUN pip install uvscem
(preferably after creating a virtual environment and a non-root user)
In your devcontainer.json
{
"name": ..
..
"postAttachCommand": "uvscem --config-file /path/to/devcontainer.json"
..
}
uVSCEM will then install (and update) all extensions listed in devcontainer.json each time Visual Studio Code / the DevContainer is started or rebuild.
Note
Ensure that your Dockerfile contains Python 3.12 and pip, poetry, or pipx to install this package. It should theoretically work with Python 3.10 or later but I need to verify this first. Also, confirm that your PATH variable includes the (virtual) environment where the package was installed into.
If you have a proxy (e.g. Cntlm) listening on localhost it's best to add a line in your /etc/hosts or C:\Windows\system32\drivers\etc\hosts file:
127.0.0.1 localproxy
and configure VSCode to use that domain in (User) settings.json.
{
..
"http.proxy": "http://localproxy:3128"
..
}
so that some extensions within the DevContainer still got some internet connectivity (If they are proxy aware).
A big thank you to the following people
- Jossef Harush Kadouri for this GitHub Gist on how to query the undocumented VisualStudio Code Marketplace API, which I used as blueprint for
api_client.py. - Ian McKellar for his blog post "VSCode Remote and the command line" (notable mention: Lazy Ren@Stackoverflow for this answer pointing me in this direction).
- Michael Petrov for this answer on StackOverflow on how to test if a socket is closed in python.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file uvscem-0.1.2.tar.gz.
File metadata
- Download URL: uvscem-0.1.2.tar.gz
- Upload date:
- Size: 11.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.0 CPython/3.12.2 Darwin/23.2.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d18cdd62d749f3fed3d25179509cd5e4aa902fcd2561615650aad13218c536d2
|
|
| MD5 |
68d7c132e59e8f6b81b9173f7906e488
|
|
| BLAKE2b-256 |
67c8abba85025311999734648f6d4058ab91c86149a5ca7a30e5dfc907692fc9
|
File details
Details for the file uvscem-0.1.2-py3-none-any.whl.
File metadata
- Download URL: uvscem-0.1.2-py3-none-any.whl
- Upload date:
- Size: 12.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.0 CPython/3.12.2 Darwin/23.2.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e20406c2f662ef525f55d06657220c941bb887b033a3b65e5460fce5f196cf21
|
|
| MD5 |
5c044ad164aa708539fd6b8da053a45d
|
|
| BLAKE2b-256 |
1e7b446b523f47c2184b177adc1e868c0d7914be97f470f5eecddb2e3b5b69ab
|