fix(gen-script): strip inline '#' comment before classifying no-resolve suffix
CI / lite (push) Failing after 4s

to_rule() 在判断 entry.endswith(',no-resolve') 之前没有剥掉行尾 # 注释,
导致带 inline 注释的条目走 else 分支,把注释当成 entry 一部分拼进去,
最终生成出 mihomo 解析失败的规则:

  'IP-CIDR,162.254.192.0/18,no-resolve   # Akamai Steam CDN 主段,DIRECT'

修法:
- to_rule() 先 split('#', 1)[0].rstrip() 剥注释再判断
- direct.yaml 第 91 行 inline 注释挪到独立行(避免再次踩坑)

验证:gen_clash_verge_script.py 重跑后 Script.js 第 49 行已变成
  'IP-CIDR,162.254.192.0/18,DIRECT,no-resolve',
Clash Verge 重启内核后订阅配置校验失败消失。
This commit is contained in:
ao gong
2026-09-05 13:32:48 +08:00
parent 907fe9d46a
commit b4a4769dcf
2 changed files with 8 additions and 2 deletions
+2 -1
View File
@@ -88,7 +88,8 @@ payload:
- DOMAIN-KEYWORD,csgo. - DOMAIN-KEYWORD,csgo.
- PROCESS-NAME,steam - PROCESS-NAME,steam
- PROCESS-NAME,steamwebhelper - PROCESS-NAME,steamwebhelper
- IP-CIDR,162.254.192.0/18,no-resolve # Akamai Steam CDN 主段 - IP-CIDR,162.254.192.0/18,no-resolve
# Akamai Steam CDN 主段
- IP-CIDR,103.10.124.0/23,no-resolve - IP-CIDR,103.10.124.0/23,no-resolve
- IP-CIDR,103.28.54.0/23,no-resolve - IP-CIDR,103.28.54.0/23,no-resolve
- IP-CIDR,146.66.152.0/21,no-resolve - IP-CIDR,146.66.152.0/21,no-resolve
+6 -1
View File
@@ -52,7 +52,12 @@ def load_payload(path: Path) -> list[str]:
def to_rule(entry: str) -> str: def to_rule(entry: str) -> str:
"""rule-provider 条目(无策略)→ 完整规则(补 DIRECT)。""" """rule-provider 条目(无策略)→ 完整规则(补 DIRECT)。
处理:先剥掉行尾 `#` 注释,再补 DIRECT 策略,避免带注释的条目被错误拼接。
"""
# 剥掉 `#` 之后的行尾注释
entry = entry.split("#", 1)[0].rstrip()
if entry.endswith(",no-resolve"): if entry.endswith(",no-resolve"):
return f"{entry[:-len(',no-resolve')]},DIRECT,no-resolve" return f"{entry[:-len(',no-resolve')]},DIRECT,no-resolve"
return f"{entry},DIRECT" return f"{entry},DIRECT"