provide serial upoload port from VSC to PIO (#23436)

This commit is contained in:
Jason2866 2025-05-17 19:59:14 +02:00 committed by GitHub
parent f5fe75c9b0
commit a088c8791f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 41 additions and 0 deletions

40
pio-tools/port-vsc.py Normal file
View File

@ -0,0 +1,40 @@
env = DefaultEnvironment()
import os
if os.environ.get("PLATFORMIO_CALLER") == "vscode":
print("PIO called from VS Code extension")
import platform
import sqlite3
import json
from platformio.project.helpers import get_project_dir
os_name = platform.system()
print("OS Platform:", os_name)
os_paths = {
"Darwin": "~/Library/Application Support/Code/User/globalStorage/state.vscdb",
"Linux": "~/.config/Code/User/globalStorage/state.vscdb",
"Windows": r"%APPDATA%\Code\User\globalStorage\state.vscdb"
}
project_path = get_project_dir()
try:
db_path = os.path.expanduser(os.path.expandvars(os_paths[os_name]))
except KeyError:
raise RuntimeError("Unknown OS: " + os_name)
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
for key in ['pioarduino.pioarduino-ide', 'platformio.platformio-ide']:
cursor.execute("SELECT value FROM ItemTable WHERE key = ?", (key,))
row = cursor.fetchone()
if row:
data = json.loads(row[0])
projects = data.get("projects", {})
project = projects.get(project_path)
if project and "customPort" in project:
print("USB port set in VSC:", project["customPort"])
env["UPLOAD_PORT"] = project["customPort"]
break
conn.close()

View File

@ -74,6 +74,7 @@ extra_scripts = pre:pio-tools/pre_source_dir.py
pre:pio-tools/set_partition_table.py
pre:pio-tools/override_copy.py
pre:pio-tools/compress-html.py
pre:pio-tools/port-vsc.py
post:pio-tools/strip-flags.py
[esp_defaults]