Skip to content

Commit 069f185

Browse files
committed
update: 动态替换core中的wcc,wcsc return表达式
使用正则匹配,最大化兼容可能发生的函数名变更
1 parent 8c02f7a commit 069f185

File tree

2 files changed

+27
-3
lines changed

2 files changed

+27
-3
lines changed

test/compiler-replace-test

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#!/bin/bash
2+
# 此脚本用于使修改 core.wxvpkg 内的代码及时生效
3+
set -e
4+
root_dir=$(cd `dirname $0`/.. && pwd -P)
5+
find_result="$root_dir/package.nw/core.wxvpkg.ext/19c6ae7eff08f795d1f2124f7b0248ad.js"
6+
return_exp_wcc=$(cat $find_result | grep -P 'return [a-z]+\("wcc"\)' -o) # return ?("wcc")
7+
echo "return exp: $return_exp_wcc"
8+
return_exp_wcc_replace="${return_exp_wcc//wcc/wcc.bin}" # return ?("wcc.bin")
9+
echo "replace exp1: $return_exp_wcc_replace"
10+
return_exp_wcc_replace="${return_exp_wcc//return /${return_exp_wcc_replace},}" # return ?("wcc.bin")
11+
echo "replace exp2: $return_exp_wcc_replace"
12+
13+
return_exp_wcsc=$(cat $find_result | grep -P 'return [a-z]+\("wcsc"\)' -o) # return ?("wcc")
14+
return_exp_wcsc_replace="${return_exp_wcc_replace//wcc/wcsc}"
15+
16+
sed -i "s#$return_exp_wcc#$return_exp_wcc_replace#g" "$find_result"
17+
sed -i "s#$return_exp_wcsc#$return_exp_wcsc_replace#g" "$find_result"

tools/fix-core.sh

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,16 @@ if [[ $NO_WINE == 'true' ]];then
5252
sed -i "s#{wcc:!0,wcsc:!0}#$new_str#g" "$find_result"
5353
new_str='"linux"===process.platform'
5454
sed -i "s#\"darwin\"===process.platform#$new_str#g" "$find_result"
55-
# TODO: 看能不能动态识别函数名j,因为不同版本会发生变化
56-
sed -i 's#return j("wcc")#return j("wcc.bin"),j("wcc")#g' "$find_result"
57-
sed -i 's#return j("wcsc")#return j("wcsc.bin"),j("wcsc")#g' "$find_result"
55+
56+
return_exp_wcc=$(cat $find_result | grep -P 'return [a-z]+\("wcc"\)' -o) # return ?("wcc")
57+
return_exp_wcc_replace="${return_exp_wcc//wcc/wcc.bin}" # return ?("wcc.bin")
58+
return_exp_wcc_replace="${return_exp_wcc//return /${return_exp_wcc_replace},}" # return ?("wcc.bin")
59+
60+
return_exp_wcsc=$(cat $find_result | grep -P 'return [a-z]+\("wcsc"\)' -o) # return ?("wcsc")
61+
return_exp_wcsc_replace="${return_exp_wcc_replace//wcc/wcsc}"
62+
63+
sed -i "s#$return_exp_wcc#$return_exp_wcc_replace#g" "$find_result"
64+
sed -i "s#$return_exp_wcsc#$return_exp_wcsc_replace#g" "$find_result"
5865
fi
5966
# 处理报错时控制台显示的环境
6067
find_result=$( grep -lr '(env:' "$tmp_dir/core.wxvpkg" )

0 commit comments

Comments
 (0)