Skip to content
Merged
42 changes: 41 additions & 1 deletion tools/vsc.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import json
import utils
import rtconfig

from utils import _make_path_relative

def delete_repeatelist(data):
Expand All @@ -39,7 +40,7 @@ def delete_repeatelist(data):

def GenerateCFiles(env):
"""
Generate c_cpp_properties files
Generate c_cpp_properties.json and build/compile_commands.json files
"""
if not os.path.exists('.vscode'):
os.mkdir('.vscode')
Expand Down Expand Up @@ -113,8 +114,47 @@ def GenerateCFiles(env):
vsc_space_file.close()
return

def GenerateProjectFiles(env):
"""
Generate project.json file
"""
if not os.path.exists('.vscode'):
os.mkdir('.vscode')

project = env['project']
vsc_file = open('.vscode/project.json', 'w')
if vsc_file:
groups = []
for group in project:
if len(group['src']) > 0:
item = {}
item['name'] = group['name']
item['path'] = _make_path_relative(os.getcwd(), group['path'])
item['files'] = []

for fn in group['src']:
item['files'].append(str(fn))

# append SConscript if exist
if os.path.exists(os.path.join(item['path'], 'SConscript')):
item['files'].append(os.path.join(item['path'], 'SConscript'))

groups.append(item)

json_dict = {}
json_dict['RT-Thread'] = env['RTT_ROOT']
json_dict['Groups'] = groups

# write groups to project.json
vsc_file.write(json.dumps(json_dict, ensure_ascii=False, indent=4))
vsc_file.close()

return

def GenerateVSCode(env):
print('Update setting files for VSCode...')

GenerateProjectFiles(env)
GenerateCFiles(env)
print('Done!')

Expand Down
Loading