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
|
import qbs.BinaryFile
Product {
type: ["dummy"]
Rule {
multiplex: true
outputFileTags: "dummy"
prepare: {
var commands = [];
var cmd = new JavaScriptCommand();
cmd.silent = true;
cmd.sourceCode = function() {
var source = new BinaryFile("source.dat", BinaryFile.WriteOnly);
source.write([ 0x01, 0x02 ]); // First data.
// Do not close the file to test the auto close functionality.
};
commands.push(cmd);
cmd = new JavaScriptCommand();
cmd.silent = true;
cmd.sourceCode = function() {
source = new BinaryFile("source.dat", BinaryFile.ReadWrite);
source.seek(source.size());
source.write([ 0x03, 0x04 ]); // Second data.
source.close();
source = new BinaryFile("source.dat", BinaryFile.ReadWrite);
var destination = new BinaryFile("destination.dat", BinaryFile.WriteOnly);
destination.write(source.atEof() ? [ 0xFF ] : [ 0x00 ]);
while (true) {
var data = source.read(1);
if (!data || data.length == 0)
break;
destination.write(data);
}
source.resize(0); // truncate
destination.write([ 0x05, 0x06 ]); // Third data.
destination.write(source.atEof() ? [ 0xFF ] : [ 0x00 ]);
source.close();
destination.close();
source = new BinaryFile("destination.dat", BinaryFile.ReadOnly);
destination = new BinaryFile("destination2.dat", BinaryFile.WriteOnly);
destination.write(source.read(8));
};
commands.push(cmd);
return commands;
}
}
}
|