-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathtask_generate_version_file.gradle
100 lines (78 loc) · 3.75 KB
/
task_generate_version_file.gradle
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
apply from: rootProject.file("versions.gradle")
// 是否升级版本
def upgradeVersion = false
// 生成 versions.gradle
tasks.register('generateVersionsGradle') {
// 是否全部版本进行升级
if (upgradeVersion) {
def templateFile = new File(rootDir, "file/versions_template.txt")
def content = new String(templateFile.readBytes())
// ===========
// = Dev Lib =
// ===========
// DevApp - Android 工具类库
content = formatVersion(content, "DevApp", versions.dev_app_versionCode)
// DevAssist - 封装逻辑代码, 实现多个快捷功能辅助类、以及 Engine 兼容框架等
content = formatVersion(content, "DevAssist", versions.dev_assist_versionCode)
// DevBase - Base ( Activity、Fragment )、MVP、ViewBinding、ContentLayout 基类库
content = formatVersion(content, "DevBase", versions.dev_base_versionCode)
// DevBaseMVVM - MVVM ( ViewDataBinding + ViewModel ) 基类库
content = formatVersion(content, "DevBaseMVVM", versions.dev_base_mvvm_versionCode)
// DevMVVM - DataBinding 工具类库
content = formatVersion(content, "DevMVVM", versions.dev_mvvm_versionCode)
// DevEngine - 第三方框架解耦、一键替换第三方库、同类库多 Engine 组件化混合使用
content = formatVersion(content, "DevEngine", versions.dev_engine_versionCode)
// DevSimple - 简单敏捷开发库
content = formatVersion(content, "DevSimple", versions.dev_simple_versionCode)
// DevAgile - 简单敏捷开发库 ( 常用、零散代码 )
content = formatVersion(content, "DevAgile", versions.dev_agile_versionCode)
// DevWidget - 自定义 View UI 库
content = formatVersion(content, "DevWidget", versions.dev_widget_versionCode)
// DevRetrofit - Retrofit + Kotlin Coroutines 封装
content = formatVersion(content, "DevRetrofit", versions.dev_retrofit_versionCode)
// DevHttpManager - OkHttp 管理库 ( Retrofit 多 BaseUrl 管理、Progress 监听 )
content = formatVersion(content, "DevHttpManager", versions.dev_http_manager_versionCode)
// DevHttpCapture - OkHttp 抓包工具库
content = formatVersion(content, "DevHttpCapture", versions.dev_http_capture_versionCode)
// DevEnvironment - Android 环境配置切换库
content = formatVersion(content, "DevEnvironment", versions.dev_environment_versionCode)
// DevDeprecated - Dev 系列库弃用代码统一存储库
content = formatVersion(content, "DevDeprecated", versions.dev_deprecated_versionCode)
// DevJava - Java 工具类库 ( 不依赖 android api )
content = formatVersion(content, "DevJava", versions.dev_java_versionCode)
// ===========
// = Dev Lib =
// ===========
// 写入 versions.gradle
def versionsFile = new File(rootDir, "file/versions.txt")
versionsFile.withPrintWriter {
it.print(content)
}
}
}
/**
* versionCode to versionName
* 123 转换为 1.2.3
*/
private static def createVersionName(Object versionCode) {
def value = versionCode.toString().chars
def builder = new StringBuilder()
builder.append(value[0])
int len = value.length
for (int i = 1; i < len; i++) {
builder.append(".")
builder.append(value[i])
}
return builder.toString()
}
/**
* 格式化版本处理
*/
private static def formatVersion(String content, String tag, Object version) {
def vc = "【" + tag + "】"
def vn = "【" + tag + "-vn】"
def newVersion = version + 1
def versionName = createVersionName(newVersion)
return content.replaceAll(vc, newVersion.toString())
.replaceAll(vn, versionName)
}