-
Notifications
You must be signed in to change notification settings - Fork 20
Expand file tree
/
Copy pathdiffindo
More file actions
executable file
·174 lines (162 loc) · 5.65 KB
/
Copy pathdiffindo
File metadata and controls
executable file
·174 lines (162 loc) · 5.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#!/bin/bash
# OpenZxicEditor
# 版权所有 (C) 2024-2025 MiFi~Lab & OpenZxicEditor Developers.
# 本程序是自由软件:您可以基于自由软件基金会发布的GNU Affero通用公共许可证的条款下重新分发和/或修改它,或者本许可证第三版或者(由您选择)任何后续版本。
# 分发本程序是希望它能派上用场,但没有任何担保,甚至也没有对其适销性或特定目的适用性的默示担保。更多细节请参见“GNU Affero通用公共许可证”。
# 您应该已收到本程序随附的GNU Affero通用公共许可证的副本。如未收到,请参见:http://www.gnu.org/licenses/ 。
# 获取脚本所在路径
get_script_dir() {
local script_path="$0"
if [ "${script_path:0:1}" != "/" ]; then
script_path="$(command -v readlink >/dev/null 2>&1 && { readlink -f "$script_path" || :; } || { realpath "$script_path" || :; } || echo "$PWD/$script_path")"
fi
local script_dir="$(dirname "$script_path")"
echo "$script_dir"
}
# 设置工作目录为所在目录
cd "$(get_script_dir)"
func="$1"
file="$2"
dm() {
# 解包各个分区
if [ -d "$file" ]; then
# 使用参数路径
lua __lib__/mtdunpk.lua "$file"
elif [ -d "MTDs" ]; then
# 使用默认路径
lua __lib__/mtdunpk.lua
else
# 找不到文件,显示提示
echo "工具用途:"
echo "解包工程文件夹中的所有mtd分区,必需要有json清单"
echo ""
echo "使用方法:"
echo "将名为z.*的工程文件夹路径作为路径参数传入"
echo "或者 将工程文件夹放在同目录下并重命名为MTDs"
echo ""
exit
fi
# 重命名项目文件夹
lua __lib__/prjmove.lua
# end
exit
}
di() {
# 检查文件是否存在
if [ ! -f "$file" ]; then
# 没有找到文件,将会提示用户如何使用
echo "用途:从完整烧录器固件中分拆出各分区,但不解包"
echo "用法:将源文件路径作为路径参数传入"
else
# 分割传入的文件
lua __lib__/mtdcut.lua "$file"
fi
exit
}
da() {
# 检查文件是否存在
if [ ! -f "$file" ]; then
# 没有找到文件,将会提示用户如何使用
echo "用途:从完整烧录器固件中分拆出各分区并解包导出工程"
echo "用法:将源文件路径作为路径参数传入"
else
# 分割传入的文件
lua __lib__/mtdcut.lua "$file"
echo ""
dm
fi
exit
}
cm() {
# 先打包 再合并
if [ -d "$file" ]; then
# 使用参数路径
sudo lua __lib__/mtdrepk.lua "$file"
elif [ -d "MTDs" ]; then
# 使用经典路径
sudo lua __lib__/mtdrepk.lua "MTDs"
else
# 没有找到文件,将会提示用户如何使用
echo "工具用途:"
echo "重新打包工程文件夹中所有已解包的mtd分区"
echo ""
echo "使用方法:"
echo "将名为z.*的工程文件夹路径作为路径参数传入"
echo "或者 将工程文件夹放在同目录下并重命名为MTDs"
echo ""
fi
exit
}
ci() {
# 合并所有MTD为全镜像
if [ -e "$file" ]; then
# 使用参数路径
lua __lib__/mtdjoin.lua "$file"
elif [ -d "MTDs" ]; then
# 使用经典路径
lua __lib__/mtdjoin.lua "MTDs"
else
# 没有找到文件,将会提示用户如何使用
echo "工具用途:"
echo "合并各mtd分区,生成完整的烧录器固件"
echo ""
echo "使用方法:"
echo "1. 直接将源文件夹作为路径参数传入"
echo "2. 将源文件夹放到当前目录下,并重命名为MTDs"
echo ""
echo "支持类型:"
echo "1. 名称以z.开头的工程文件夹,由 dismantle-image 工具生成"
echo "2. 内含全部mtd分区文件的文件夹,通常是adb提取产生的"
echo ""
fi
exit
}
ca() {
# 先打包 再合并
if [ -d "$file" ]; then
# 使用参数路径
sudo lua __lib__/mtdrepk.lua "$file"
lua __lib__/mtdjoin.lua "$file"
elif [ -d "MTDs" ]; then
# 使用经典路径
sudo lua __lib__/mtdrepk.lua "MTDs"
lua __lib__/mtdjoin.lua "MTDs"
else
# 没有找到文件,将会提示用户如何使用
echo "工具用途:"
echo "一键重新打包工程文件夹中解包的分区,并导出完整烧录器固件"
echo "等同于 依次运行 repack-mtd 和 merge-mtd"
echo ""
echo "使用方法:"
echo "将名为z.*的工程文件夹路径作为路径参数传入"
echo "或者 将工程文件夹放在同目录下并重命名为MTDs"
echo ""
fi
}
if [ "$func" = "-d" ]; then
da
elif [ "$func" = "-dm" ]; then
dm
elif [ "$func" = "-di" ]; then
di
elif [ "$func" = "-c" ]; then
ca
elif [ "$func" = "-cm" ]; then
cm
elif [ "$func" = "-ci" ]; then
ci
else
echo 用法: ./diffindo [选项] [路径]
echo 可用于解包或打包ZXIC路由器固件。
echo
echo 当前版本支持以下操作选项:
echo -e "\t -d \t 完全解包烧录器固件中的文件"
echo -e "\t -c \t 将解包文件打包成烧录器固件"
echo -e "\t -di \t 只从烧录器固件中提前分区"
echo -e "\t -dm \t 从提取的分区中解包出文件"
echo -e "\t -cm \t 将解包出的文件制作成分区"
echo -e "\t -ci \t 所有分区合并为烧录器固件"
echo
echo 每个参数具体使用方法可以使用 ./diffindo [选项] --help 查看。
echo
fi