blob: e872fb6eae63004d4f4aacc15c6c5991835d8910 [file] [log] [blame] [edit]
def assetsDirectory = brltty.getAssetsPath(project)
def messagesDirectory = assetsDirectory + File.separator + "locale"
def tablesDirectory = assetsDirectory + File.separator + "tables"
task brlttyAddTables (type: Copy) {
group "build"
description "Add the tables (text, contraction, attributes, keyboard, input) to the build (as assets)."
from brltty.native.tablesDirectory
into tablesDirectory
include 'Text/**/*.tt?'
include 'Contraction/**/*.ct?'
include 'Attributes/**/*.at?'
include 'Keyboard/**/*.kt?'
include 'Input/**/*.kt?'
}
task brlttyRemoveTables (type: Delete) {
group "build"
description "Remove the tables (text, contraction, attributes, keyboard, input) from the build."
delete tablesDirectory
}
tasks.register("brlttyAddMessages") {
group "build"
description "Add the message catalogs (.mo files) to the build (as assets)."
doLast {
def commandProcesses = []
try {
def sourceDirectory = new File(brltty.native.messagesDirectory)
def sourceFiles = layout.files {sourceDirectory.listFiles()}
sourceFiles.each { sourceFile ->
def sourceName = sourceFile.name
if (sourceName.endsWith(".po")) {
def languageCode = sourceName.replaceAll(/\..+?$/, '')
def targetDirectory = new File(messagesDirectory + File.separator + languageCode + File.separator + "LC_MESSAGES")
if (targetDirectory.isDirectory() || targetDirectory.mkdirs()) {
def targetFile = new File(targetDirectory, "brltty.mo")
def commandArguments = [
"msgfmt", "--no-hash",
"--output-file=" + targetFile.absolutePath,
"--", sourceFile.absolutePath
]
def commandProcess = commandArguments.execute()
commandProcess.waitForProcessOutput(new StringBuffer(), System.err)
commandProcesses += commandProcess
} else {
throw new IOException("messages directory not created: " + targetDirectory.absolutePath)
}
}
}
} finally {
def ok = true
commandProcesses.each { process ->
int exitValue = process.waitFor()
if (exitValue) ok = false
}
if (!ok) throw new RuntimeException("installing messages failed")
}
}
}
task brlttyRemoveMessages (type: Delete) {
group "build"
description "Remove the message catalogs (.mo files) from the build."
delete messagesDirectory
}
brltty.addAssembleTask project, brlttyAddMessages
brltty.addAssembleTask project, brlttyAddTables
clean.dependsOn brlttyRemoveMessages
clean.dependsOn brlttyRemoveTables