mirror of
https://github.com/okalachev/flix.git
synced 2025-07-27 09:39:33 +00:00
62 lines
1.6 KiB
Python
Executable File
62 lines
1.6 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import os
|
|
import platform
|
|
import json
|
|
import re
|
|
|
|
path = '.vscode/c_cpp_properties.json' if os.path.exists('./.vscode/c_cpp_properties.json') else '../.vscode/c_cpp_properties.json'
|
|
txt = open(path).read()
|
|
# remove comments
|
|
txt = re.sub(r'//.*', '', txt)
|
|
props = json.loads(txt)
|
|
|
|
env = props.get('env', {})
|
|
env['workspaceFolder'] = '.'
|
|
|
|
def check_path(s):
|
|
source = s
|
|
# replace env
|
|
for key, value in env.items():
|
|
s = s.replace('${' + key + '}', value)
|
|
# remove globs from the end
|
|
if s.endswith('**'):
|
|
s = s[:-2]
|
|
elif s.endswith('*'):
|
|
s = s[:-1]
|
|
s = os.path.expanduser(s)
|
|
if s == '':
|
|
s = '.'
|
|
print('Check', source, '->', s)
|
|
assert os.path.exists(s), 'Path does not exist: ' + s
|
|
|
|
# linux, macos or windows:
|
|
platform = platform.system().lower()
|
|
if platform == 'darwin':
|
|
platform = 'mac'
|
|
elif platform == 'windows':
|
|
platform = 'win32'
|
|
elif platform == 'linux':
|
|
pass
|
|
else:
|
|
raise Exception('Unknown platform: ' + platform)
|
|
|
|
for configuration in props['configurations']:
|
|
if platform not in configuration['name'].lower():
|
|
print('Skip configuration', configuration['name'])
|
|
continue
|
|
|
|
print('Check configuration', configuration['name'])
|
|
|
|
for include_path in configuration.get('includePath', []):
|
|
check_path(include_path)
|
|
|
|
for forced_include in configuration.get('forcedInclude', []):
|
|
check_path(forced_include)
|
|
|
|
for browse in configuration.get('browse', {}).get('path', []):
|
|
check_path(browse)
|
|
|
|
if 'compilerPath' in configuration:
|
|
check_path(configuration['compilerPath'])
|