forked from ProbablyManuel/requiem
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.gradle.kts
190 lines (159 loc) · 5.51 KB
/
build.gradle.kts
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
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
import skyrim.requiem.build.ReleaseArchiveTask
import skyrim.requiem.build.BsaPackingTask
import skyrim.requiem.build.RequiemVersion
import java.io.BufferedReader
import java.io.InputStreamReader
plugins {
base
}
if (JavaVersion.current() != JavaVersion.VERSION_13) {
throw ProjectConfigurationException("Java 13 is required to build Requiem", listOf())
}
try {
apply("userSetup.gradle")
} catch (ex: Exception) {
logger.error("The config file 'userSetup.gradle' could not be found.")
logger.quiet("This file specifies the settings specific to your setup.")
logger.quiet("Please read the ReadMe file and follow its instructions to")
logger.quiet("create your own config file with the appropriate paths.")
throw ex
}
allprojects {
version = RequiemVersion(5, 4, 5, "Towers and Shadows")
}
fun runCommand(command: List<String>): String = try {
val process = ProcessBuilder(command).start()
BufferedReader(InputStreamReader(process.inputStream)).readLine()
} catch (e: Exception) {
"unknown"
}
val gitRevision by extra { runCommand(listOf("git", "rev-parse", "HEAD")) }
val gitBranch by extra { runCommand(listOf("git", "symbolic-ref", "--short", "-q", "HEAD")) }
val bsArch: File by extra
val interfaceDir = file("Interface")
val scriptsDir = file("Scripts")
val sourceDir = file("Source")
val reqtificatorDir = file("Reqtificator")
val scriptsSourcesDir = file(sourceDir.resolve("Scripts"))
val reqtificatorSourcesDir = file(sourceDir.resolve("Reqtificator"))
val bsaFilesDir = file("BsaFiles")
val bsaFilesTexturesDir = file("BsaFilesTextures")
val bsaFile = file("Requiem.bsa")
val bsaFileTextures = file("Requiem - Textures.bsa")
val copyReqtificator by tasks.registering(Copy::class) {
dependsOn("components:mutagen-reqtificator:assemble")
val outputDir: File by project("components:mutagen-reqtificator").extra
from(outputDir)
into(reqtificatorDir)
exclude("sources")
}
val copyScripts by tasks.registering(Copy::class) {
dependsOn("components:papyrus-scripts:assemble")
val outputDir: File by project("components:papyrus-scripts").extra
from(outputDir)
into(scriptsDir)
exclude("**/*.psc")
}
val copyScriptSources by tasks.registering(Copy::class) {
dependsOn("components:papyrus-scripts:assemble")
val outputDir: File by project("components:papyrus-scripts").extra
from(outputDir.resolve("source"))
into(scriptsSourcesDir)
exclude("**/*.pex")
eachFile {
path = name
}
includeEmptyDirs = false
}
val copyReqtificatorSources by tasks.registering(Copy::class) {
description = "copy Reqtificator source code for inclusion in release archive"
group = "build"
dependsOn("components:mutagen-reqtificator:assemble")
val outputDir: File by project("components:mutagen-reqtificator").extra
from(outputDir.resolve("sources"))
into(reqtificatorSourcesDir)
includeEmptyDirs = false
}
val copyInterfaceFiles by tasks.registering(Copy::class) {
dependsOn("components:interface:assemble")
val outputDir: File by project("components:interface").extra
from(outputDir)
into(interfaceDir)
}
val copyBsaFiles by tasks.registering(Copy::class) {
dependsOn("assemble")
from(".")
include("Interface/**", "meshes/**", "Sound/**", "Scripts/**")
into(bsaFilesDir)
exclude("**/REQ_Debug*.pex", "**/REQ_Debug*.psc")
includeEmptyDirs = false
}
val copyBsaFilesTextures by tasks.registering(Copy::class) {
dependsOn("assemble")
from(".")
include("textures/**")
into(bsaFilesTexturesDir)
includeEmptyDirs = false
}
val createBsa by tasks.registering(BsaPackingTask::class) {
description = "create a BSA archive for Requiem's core assets"
group = "distribution"
dependsOn(copyBsaFiles)
folder = bsaFilesDir
archiveFile = bsaFile
logFile = file("distribution/bsaLog.txt")
archiveTool = bsArch
}
val createBsaTextures by tasks.registering(BsaPackingTask::class) {
description = "create a BSA archive for Requiem's textures"
group = "distribution"
dependsOn(copyBsaFilesTextures)
folder = bsaFilesTexturesDir
archiveFile = bsaFileTextures
logFile = file("distribution/bsaTexturesLog.txt")
archiveTool = bsArch
compress = true
}
tasks.assemble {
dependsOn(copyReqtificator)
dependsOn(copyInterfaceFiles)
dependsOn(copyScripts)
dependsOn(copyScriptSources)
dependsOn(copyReqtificatorSources)
}
tasks.clean {
delete(sourceDir)
delete(reqtificatorDir)
delete(interfaceDir)
delete(scriptsDir)
delete(bsaFilesDir)
delete(bsaFilesTexturesDir)
delete(bsaFile)
delete(bsaFileTextures)
}
val packRelease by tasks.registering(ReleaseArchiveTask::class) {
description = "Pack Requiem as a ready to ship 7z archive"
group = "distribution"
dependsOn(tasks.assemble)
dependsOn(createBsa)
dependsOn(createBsaTextures)
dependsOn("components:fomod-installer:assemble")
dependsOn("components:documentation:assemble")
archiveFile = file ("distribution/Requiem_${gitBranch}_$gitRevision.7z")
val installerDir: File by project("components:fomod-installer").extra
val releaseDocsDir: File by project("components:documentation").extra
fomod = installerDir
plugin = file("Requiem.esp")
pluginCreationClub = file("Requiem - Creation Club.esp")
coreMod = files(
"Reqtificator.bat",
"Requiem.modgroups",
releaseDocsDir,
bsaFile,
bsaFileTextures,
"Source",
"Reqtificator",
"BashTags"
)
excludePatterns = listOf()
}