blob: dae90eb160725033f93340ddcbc29a4b9111a635 [file]
#!/usr/bin/env python3
# Copyright (c) 2026, the R8 project authors. Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.
import json
import os
import sys
# Add the tools directory to python path to import defines and jdk
TOOLS_DIR = os.path.abspath(os.path.dirname(__file__))
sys.path.insert(0, TOOLS_DIR)
import defines
import jdk
def main():
vscode_dir = os.path.join(defines.REPO_ROOT, '.vscode')
settings_path = os.path.join(vscode_dir, 'settings.json')
# Resolve absolute paths
try:
jdk17_home = jdk.GetJdk17Home()
except Exception as e:
print('Error resolving JDK 17 home: %s' % e)
# Fallback to manual resolution
jdk17_root = os.path.join(defines.REPO_ROOT, 'third_party', 'openjdk',
'jdk-17')
if defines.IsLinux():
jdk17_home = os.path.join(jdk17_root, 'linux')
elif defines.IsOsX():
jdk17_home = os.path.join(jdk17_root, 'osx', 'Contents', 'Home')
else:
jdk17_home = os.path.join(jdk17_root, 'windows')
gradle_home = os.path.join(defines.REPO_ROOT, 'third_party', 'gradle')
settings = {
"java.jdt.ls.java.home":
jdk17_home,
"java.jdt.ls.vmargs":
"-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx8G -Xms100m -Xlog:disable",
"java.import.gradle.java.home":
jdk17_home,
"java.import.gradle.home":
gradle_home,
"java.import.gradle.wrapper.enabled":
False,
"gradle.java.home":
jdk17_home,
"gradle.home":
gradle_home,
"java.autobuild.enabled":
False,
"java.configuration.runtimes": [{
"name": "JavaSE-17",
"path": jdk17_home,
"default": True
}]
}
if not os.path.exists(vscode_dir):
os.makedirs(vscode_dir)
# Write or update settings.json
existing_settings = {}
if os.path.exists(settings_path):
try:
with open(settings_path, 'r') as f:
existing_settings = json.load(f)
except Exception:
# If file is invalid or empty, start fresh
pass
# Merge settings
existing_settings.update(settings)
with open(settings_path, 'w') as f:
json.dump(existing_settings, f, indent=2)
f.write('\n')
print('Updated settings in %s.' % settings_path)
return 0
if __name__ == '__main__':
sys.exit(main())