1 Star 0 Fork 1

wangzb/depot_tools

forked from prothesman/depot_tools 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
gn_helper.py 1.82 KB
一键复制 编辑 原始数据 按行查看 历史
Fumitoshi Ukai 提交于 2024-07-03 08:58 +08:00 . gn_helper: ignore spaces on gn lines
# Copyright 2024 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""This provides an easy way to access args.gn."""
import os
import re
def _gn_lines(output_dir, path):
"""
Generator function that returns args.gn lines one at a time, following
import directives as needed.
"""
import_re = re.compile(r'\s*import\("(.*)"\)')
with open(path, encoding="utf-8") as f:
for line in f:
match = import_re.match(line)
if match:
raw_import_path = match.groups()[0]
if raw_import_path[:2] == "//":
import_path = os.path.normpath(
os.path.join(output_dir, "..", "..",
raw_import_path[2:]))
else:
import_path = os.path.normpath(
os.path.join(os.path.dirname(path), raw_import_path))
yield from _gn_lines(output_dir, import_path)
else:
yield line
def _path(output_dir):
return os.path.join(output_dir, "args.gn")
def exists(output_dir):
"""Checks args.gn exists in output_dir."""
return os.path.exists(_path(output_dir))
def lines(output_dir):
"""Generator of args.gn lines. comment is removed."""
if not exists(output_dir):
return
for line in _gn_lines(output_dir, _path(output_dir)):
line_without_comment = line.split("#")[0]
yield line_without_comment
_gn_arg_pattern = re.compile(r"(^|\s*)([^=\s]*)\s*=\s*(\S*)\s*$")
def args(output_dir):
"""Generator of args.gn's key,value pair."""
for line in lines(output_dir):
m = _gn_arg_pattern.match(line)
if not m:
continue
yield (m.group(2), m.group(3))
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/wangzb26/depot_tools.git
git@gitee.com:wangzb26/depot_tools.git
wangzb26
depot_tools
depot_tools
main

搜索帮助